Organization and operations API
Manage organization boundaries and encrypted vault entries, then find related RBAC, automation, audit, health, model, and A2A operations.
Use this reference to create organization boundaries and manage personal or organization-scoped vault entries. It also maps the related administrative API families to their task documentation so that permissions, side effects, and operational cautions stay with the workflow they govern.
https://agent-studio.example.com as a placeholder. Replace it with your Agent Studio origin and send the session cookie from your configured authentication provider. These handlers use session authentication; do not assume an Agent Studio API key is accepted by every route.Organization model
An organization is a shared tenant boundary. Its record includes id, name, unique slug, plan, optional billingEmail, settings, and timestamps. Related records can include members, roles, API keys, skills, executions, MCP servers, vault entries, triggers, schedules, audit logs, agent memories, and a budget policy.
Organization responses use the envelope { "success": true, "data": ... }. Authentication failures return 401; validation failures return 400. Authorization and not-found errors are produced by the shared API error handler for organization-service operations.
Organizations
List organizations
/api/organizationscurl --request GET \ --url https://agent-studio.example.com/api/organizations
{ "success": true, "data": [ { "id": "org_example", "name": "Example Support", "slug": "example-support" } ] }curl 'https://agent-studio.example.com/api/organizations' \
-H 'Cookie: __session=<session-cookie>'Create an organization
/api/organizationsDisplay name containing 2–100 characters.
Unique slug containing lowercase letters, digits, and hyphens.
Plan value stored on the organization. Omit it to use the service default.
Optional billing contact.
curl --request POST \
--url https://agent-studio.example.com/api/organizations \
--header 'Content-Type: application/json' \
--data '{
"name": "Example Support",
"slug": "example-support",
"plan": "free",
"billingEmail": "billing@example.com"
}'{ "success": true, "data": { "id": "org_example", "name": "Example Support", "slug": "example-support", "plan": "free" } }Get an organization
/api/organizations/{id}Organization ID.
curl --request GET \ --url https://agent-studio.example.com/api/organizations/org_example
{ "success": true, "data": { "id": "org_example", "name": "Example Support", "slug": "example-support", "settings": {} } }Update an organization
/api/organizations/{id}Organization ID.
New display name.
New billing contact.
Organization settings object.
curl --request PUT \
--url https://agent-studio.example.com/api/organizations/org_example \
--header 'Content-Type: application/json' \
--data '{
"name": "Example Support Operations",
"billingEmail": "operations@example.com",
"settings": {}
}'{ "success": true, "data": { "id": "org_example", "name": "Example Support Operations", "settings": {} } }The update route does not accept slug or plan; omit fields that should remain unchanged.
Delete an organization
/api/organizations/{id}Organization ID.
curl --request DELETE \ --url https://agent-studio.example.com/api/organizations/org_example
{ "success": true }Vault entries
Vault values are encrypted at rest. List responses are masked; the reveal operation returns plaintext and should be used only at the point of need. In organization context, owners and administrators can list all entries, members with vault:read:own see their own entries, and viewers without that permission receive an empty list.
List vault entries
/api/vaultOrganization context; takes precedence over the query parameter.
Search personal entries. Organization listing takes precedence when organization context is present.
Organization context.
curl --request GET \ --url https://agent-studio.example.com/api/vault?q=support&organizationId=org_example \ --header 'X-Organization-Id: org_example'
{ "success": true, "data": [ { "id": "vault_example", "name": "Support model key", "key": "SUPPORT_MODEL_KEY", "value": "********" } ] }Create a vault entry
/api/vaultOrganization context; takes precedence over the body field.
Human-readable name.
Uppercase environment-style key matching `[A-Z_][A-Z0-9_]*`.
Secret value.
Entry category. Defaults to `API_KEY`.
Purpose or usage note.
Searchable tags.
Organization to own the entry.
curl --request POST \
--url https://agent-studio.example.com/api/vault \
--header 'X-Organization-Id: org_example' \
--header 'Content-Type: application/json' \
--data '{
"name": "Support model key",
"key": "SUPPORT_MODEL_KEY",
"value": "example-secret-value",
"category": "API_KEY",
"description": "Credential used by the support workflow",
"tags": [
"support",
"model"
],
"organizationId": "org_example"
}'{ "success": true, "data": { "id": "vault_example", "name": "Support model key", "key": "SUPPORT_MODEL_KEY", "category": "API_KEY" } }Creating an organization entry requires membership and the vault:create permission.
Update a vault entry
/api/vaultVault entry ID.
New name.
New environment-style key.
Replacement secret value.
New category.
New description.
Replacement tags.
curl --request PUT \
--url https://agent-studio.example.com/api/vault \
--header 'Content-Type: application/json' \
--data '{
"id": "vault_example",
"name": "Rotated support model key",
"key": "SUPPORT_MODEL_KEY",
"value": "example-rotated-secret-value",
"category": "API_KEY",
"description": "Rotated credential used by the support workflow",
"tags": [
"support",
"rotated"
]
}'{ "success": true, "data": { "id": "vault_example", "key": "SUPPORT_MODEL_KEY" } }The entry owner can update it. For an organization-owned entry belonging to another user, the current user must have the OWNER or ADMIN role.
Delete a vault entry
/api/vaultVault entry ID.
curl --request DELETE \ --url https://agent-studio.example.com/api/vault?id=vault_example
{ "success": true }The same owner-or-organization-administrator rule applies to deletion.
Reveal a vault value
/api/vault/{id}/revealVault entry ID.
curl --request GET \ --url https://agent-studio.example.com/api/vault/vault_example/reveal
{ "success": true, "rawValue": "<secret-value>" }Related operation families
The remaining administrative surfaces use separate permission and lifecycle rules. Use these references and guides before calling them:
| Surface | Route family | Documentation |
|---|---|---|
| Members, invitations, and RBAC | /api/organizations/{id}/members, /roles, /permissions, and /invitations | Manage organization members and Configure roles and permissions |
| Organization API keys | /api/organizations/{id}/api-keys | Manage organization API keys |
| Webhook and cron triggers | /api/triggers and token or schedule routes | Trigger a workflow with a webhook and Schedule a workflow with cron |
| Audit events | /api/audit and /api/organizations/{id}/audit | Review audit events |
| Service and model checks | /api/health, /api/models, and /api/models/test | Monitor service health and Configure LLM providers and themes |
| Agent-to-Agent operations | /api/a2a/manifest, /discover, /tasks, /messages, and /auction | Discover A2A agents, Delegate A2A tasks, and Run A2A auctions and debates |