Create an agent
Changed onCreate an agent owned by the caller.
The agent is active immediately and owned by the caller. Supply name (required), an optional description, and optional permissions. When permissions is omitted the agent gets the default agent permission set. When supplied, every permission must be one the caller may grant (see grantable_by_caller on GET /permissions); otherwise the request fails with 403 (agent_permission_not_grantable). Returns the created agent.
The agent has no way to authenticate yet. Follow up with POST /agents/{agent_id}:generate-api-key (or PUT /agents/{agent_id}/jwks for JWT-bearer), and bind credentials with POST /agents/{agent_id}/credentials.
Request
- Base URL: / (relative, and the document was published on a file host, not at the API’s origin)
- URL: /agents
- Auth: one of:
- HTTP bearer
- OAuth 2 (authorization code, authorization URL /authorize, token URL /oauth/token)
Request body
Example request
{
"description": "Reconciles Stripe invoices against the ledger every night.",
"name": "invoice-reconciler",
"permissions": [
"apis:read",
"capabilities:execute"
]
}Response
Successful Response
Example response
{
"approved_at": "2026-01-15T09:45:00Z",
"approved_by": "usr_6968b3987ee4c3ec0b4ee3b9",
"created_at": "2026-01-15T09:30:00Z",
"denial_reason": "Requested permissions exceed the agent's stated purpose.",
"denied_by": "usr_6968b3987ee4c3ec0b4ee3b9",
"description": "Reconciles Stripe invoices against the ledger every night.",
"has_api_key": true,
"id": "agnt_6968b3984d1c238dbe7e2e29",
"name": "invoice-reconciler",
"owner_id": "usr_6968b3987ee4c3ec0b4ee3b9",
"parent_agent_id": "agnt_6968b3984d1c238dbe7e2e29",
"registered_by": "usr_6968b3987ee4c3ec0b4ee3b9",
"status": "active"
}Changes
- info
the endpoint scheme security
OAuth2was added to the API
- info
- warning
removed the request property
- info
added the new optional request property
- warning