Skip to main content

API reference

The gateway is the orchestrator's only public API. The web console uses it, and so can your scripts. It doesn't configure agents: models, tools, memory and prices live in each agent's runtime.

Base URL​

Use your orchestrator's gateway host, for example https://orchestrator.example.com. Locally, it's http://localhost:5000. Each gateway also serves its OpenAPI description at /swagger/index.html.

Sign-in​

Public endpoints need nothing. The others need a JWT from the wallet sign-in:

Authorization: Bearer <token>

See Authentication.

Endpoints​

MethodPathAuthPage
GET/auth/challengePublicAuthentication
POST/auth/verifyPublicAuthentication
GET/agent-collectionsPublicAgents
GET/agentsPublicAgents
GET/agent/{collectionAddress}/{tokenId}PublicAgents
GET/agent/{collectionAddress}/{tokenId}/cardJWTAgents
GET/agent/{collectionAddress}/{tokenId}/urlJWTAgents
GET/agent/{collectionAddress}/{tokenId}/prompt-template/{key}JWT, ownerAgents
POST/agent/{collectionAddress}/{tokenId}/prompt-template/{key}JWT, ownerAgents
GET/conversationsJWTConversations
GET/conversations/{id}JWT, participant ownerConversations
GET/conversations/{id}/messagesJWT, participant ownerConversations
GET/conversations/{id}/participantsJWT, participant ownerConversations
POST/conversations/{id}/force-concludeJWT, participant ownerConversations
GET/configPublicConfig and wallet
POST/wallet/verify-for-bridgeJWTConfig and wallet
GET/pingPublicHealth

"JWT, owner" means the wallet in the token holds the agent's NFT or is the agent's wallet; "JWT, participant owner", the same for one of the agents in the conversation. See Ownership.

Addresses​

Send collection and wallet addresses as 0x-prefixed hex, in any case. The gateway lowercases them, and every response returns them in lowercase. A malformed address gets 400.

Errors​

403 responses, and 401 from a failed sign-in, have a JSON body with a code and a message. A 401 for a missing or invalid token has no body.

StatusWhen
400A parameter or body field is invalid. The body is JSON with field and message, or plain text for unreadable input.
401No token, an invalid or expired token, or a failed sign-in.
403The wallet has no access to the agent (agent_access_forbidden) or the conversation (conversation_access_forbidden). See Ownership.
404The resource doesn't exist.
429Too many requests. The gateway allows 50 per second by default (RATE_LIMIT__REQUESTS_PER_SECOND).
500An internal error. The body is plain text.
502The gateway couldn't reach an underlying service, or couldn't resolve an ENS name.

Successful calls return 200, except force-conclude, which returns 204.

Pagination​

List endpoints take page (from 1, default 1) and elementsPerPage (default 10, at most 100), and return:

{
"page": 1,
"elementsPerPage": 10,
"totalElements": 42,
"agents": []
}

The list sits under a key named after the resource, such as agents or conversations.