REST APIAgents

All routes are org-scoped: https://api.regentprotocol.org/v1/organizations/{org_id}/… with your rgnt_… bearer key (authentication).

Register an agent

Requires a verified email and, in a production organization, completed identity verification on your account (403 EMAIL_NOT_VERIFIED / 403 KYC_NOT_VERIFIED otherwise). A sandbox organization skips the identity check: its agents can only use Regent’s test rail under a hard ceiling, and every token they get is labelled environment: sandbox. The responsible party is always the authenticated user — it cannot be supplied by the client.

curl -X POST https://api.regentprotocol.org/v1/organizations/<org>/agents \
  -H "Authorization: Bearer rgnt_..." -H "content-type: application/json" \
  -d '{"settlement_chain": "solana",
       "metadata": {"bot_name": "demo-bot", "model_vendor": "anthropic", "framework": "claude-code"}}'

metadata is yours to fill; three keys have a meaning to Regent:

KeyMeaning
bot_nameThe display name in the console.
model_vendorWhich model vendor runs the agent: openai, anthropic, google, meta, mistral, xai, deepseek, other or unknown. Declared by you and never verified; the record keeps model_vendor_basis: declared next to it so a reader knows that. Any other value is refused (422 INVALID_RUNTIME).
frameworkFree text, at most 64 characters (for example hermes, langgraph).

Agents created through the consent screen or an app connector get the same keys from the screen or from the connector’s name.

The response is the identity record. Two identifiers come back — they are not interchangeable:

{
  "id": "6a29b7b2-…",                     // record UUID — internal reference
  "agent_id": "agent_688b10bc62aef…",     // canonical identifier — use THIS everywhere
  "did": "did:regent:solana:agent_688b…",
  "responsible_party_id": "…",
  "status": "active",
  "settlement_chain": "solana",
  "identity_payload": "…",                // KMS-signed at registration
  "identity_signature": "…"
}

Every other endpoint — mandates, revocation, audit — takes the agent_… string. Passing the record UUID returns 422 AGENT_ID_MALFORMED with a message naming the mistake.

Registration queues a Solana anchoring transaction; the agent’s on-chain status flips to anchored within a few seconds on devnet.

List / get

GET /v1/organizations/<org>/agents               # all agents in the org
GET /v1/organizations/<org>/agents/<agent_id>    # one agent (agent_… identifier)

Revoke — the kill switch

POST /v1/organizations/<org>/agents/<agent_id>/revoke

Requires the admin role. One-way: a revoked agent cannot be re-activated (register a new key instead). All the agent’s active mandates are suspended via the agent.revoked event — in our benchmarks the first refused authorize follows within ~0.5 s. A revoked agent’s authorize calls fail with 402 MANDATE_SUSPENDED (or 402 AGENT_NOT_ACTIVE).