Summary
Signing in to a provider as an inbox now produces an API key: an inbox-scoped public key, managed with the same list, get, update, and delete calls as every other API key. Start one with provider connect, or authorize a sign-in that is already waiting, then poll it until it is active, list it alongside your bearer keys, and revoke it when it is no longer needed, without handling key material or enrollment internals.
What’s new?
New endpoints:
POST /v0/inboxes/{inbox_id}/authorize- Authorize the AgentID sign-in a client is already waiting in, for relying parties reached directly rather than through connect. Mints and returns the inbox’s pending public key in the api-keys shape;accept_disclosure: trueaccepts that relying party’s disclosure.GET /v0/api-keys/{api_key_id}- Get one credential of any family. For a sign-in key, poll it to watchstatusgo frompendingtoactive.PATCH /v0/api-keys/{api_key_id}- Rename or re-permission a bearer key or a public-key credential.
New features:
- One vocabulary for every credential family:
GET /v0/api-keyslists every credential in one list, newest first;typerestricts to one family; the pod- and inbox-nested routes restrict to one scope. Every item carriestype,pod_id,inbox_id,permissions,created_by, and the timestamps, scope expressed exactly as on a bearer key; a sign-in key addsstatus. - One handle for the whole lifecycle: connect responses carry
api_key_id, the same ID Get, List, and Delete use before and after activation. - Delete covers every family:
DELETE /v0/api-keys/{api_key_id}deletes a bearer key, revokes a registered public key, cancels a pending sign-in key, or revokes an active one. - Sign-in keys carry their own permissions: exactly
provider_connectandprovider_share_owner, snapshotted from the creating bearer key, enforced from the key itself, and editable withPATCH /v0/api-keys/{api_key_id}.provider_share_owneris one grouped permission: a bearer key holding only one of the olderowner_profile/owner_emailpermissions mints keys with itfalse. - Public keys outlive their creator: a sign-in key or registered public key is independent of the bearer key that created it. Deleting or narrowing that bearer key afterward does not revoke or change it;
created_byis provenance only. A sign-in key expires 30 days after activation; a registered key keeps the expiry given at registration. - Sign-in is its own permission:
provider_connecton a bearer key gates connect, authorize, and minting sign-in keys;provider_share_ownergates sharing the owner’s name and email with providers. Omitted on a new key means false. - Public keys live under api-keys:
POST /v0/api-keyswith apublic_keybody registers a public-key credential at the route’s scope (/pods/{pod_id}/api-keysand/inboxes/{inbox_id}/api-keysfor a pod or inbox, noscopebody field), and list, get, update, and delete cover it alongside bearer keys. - Client IDs for public keys: register a public key with a caller-chosen
client_id, unique within the organization across every public key, and use it in place ofapi_key_idon get, update, and delete. Registration is idempotent on it.
Removed:
- The
/v0/api-keys/public-keyslist, register, rename, and revoke routes,POST /v0/api-keys/public-keys/agentid-sign-in/revoke-all, and therevoked_atresponse field. Use the api-keys endpoints above; revoke keys individually. GET /v0/api-keys/browser-credentialsand itsevents,enrollments, and{credential_id}routes,POST /v0/inboxes/{inbox_id}/browser-credentials/enrollments, and both/v0/api-keys/browser-consentsroutes. Remembered consent is managed by AgentID and is no longer listed or revoked through the API.POST /v0/api-keysandPOST /v0/inboxes/{inbox_id}/api-keysno longer mint sign-in keys; usePOST /v0/inboxes/{inbox_id}/authorize.- The
session_idfield on connect responses, and theenrollment_endpoint,browser_credentials_endpoint, andbrowser_consents_endpointfields ofGET /v0/.well-known/agentid-configuration.
Use cases
Build agents that:
- Sign in to a relying party as an inbox and complete the AgentID step with one API call
- Wait on a pending sign-in by polling one endpoint instead of diffing a list
- Audit and revoke every credential that can act as an inbox, bearer and sign-in keys alike, from one list
See the API Keys reference and the AgentID Sign-In guide for the full flow.
