Skip to main content
Agents are the voice-agent identities Egma tests and monitors. Each agent you register maps to one agent in your provider — Retell or LiveKit — and carries one or more connections that tell Egma how to reach it. Registering is retry-safe: if you send the same agent name and provider id twice, Egma reuses the existing agent and tells you so in the result field rather than minting a second identity. Credentials you supply are sealed before storage; only the last four characters come back in credentials_hint, so a serializer can never accidentally leak a key.

Register an agent

POST /api/agents Register a new agent and, optionally, attach the first connection to it in the same request. Both the agent row and the connection row are written in one transaction, so a connection payload the registry rejects leaves no partial agent behind. The result field in the response tells you exactly what happened: 201 Created is returned for created and connection_added. 200 OK is returned for reused.

Request body

string
Display name for the agent. Required unless you want Egma to pick a numbered default. Must be unique within the project.
string
Optional free-text description.
string
Project id or name to write this agent into. Defaults to the project your API key belongs to. In a single-project organization you never need this field.
object
The first connection to attach. Leave this out to register a bare agent and add connections later with POST /api/agents/:agentId/connections.

Response fields

string
One of created, reused, or connection_added.
object
The agent record.
object
The connection that was created or reused. Absent when result is reused and no new connection was written.

Example — register a Retell agent

Example — register a LiveKit agent


List agents

GET /api/agents Return a paginated list of agents your credential can reach, ordered newest first. Filter by project with ?project. Paginate using the next_cursor value from the previous page.

Query parameters

string
Filter to a specific project by id or name. Omit to list agents across all projects your key can read.
string
The next_cursor value from the previous page. Omit to start from the newest agent.

Response fields

array
Array of agent objects. Each has the same shape as the agent field in the registration response.
string | null
Pass this as ?cursor to fetch the next page. null means you are on the last page.

Example


Get an agent

GET /api/agents/:agentId Retrieve a single agent and all of its connections. An agent you cannot see answers the same not_found sentence as an id that was never minted.

Path parameters

string
required
The agt_… identifier of the agent.

Response fields

object
The agent record (same shape as in registration).
array
All connections currently attached to this agent. Each entry has the same shape as the connection field in the registration response.

Example


Add a connection

POST /api/agents/:agentId/connections Attach another provider connection to an existing agent. The request body is identical in shape to the connection object on registration. Returns 201 Created with the new connection.

Path parameters

string
required
The agt_… identifier of the agent to attach the connection to.

Request body

Same fields as the connection object on POST /api/agents. All fields (type, modality, config, credentials, etc.) apply identically.

Response fields

object
The newly created connection record (same shape as the connection field in the registration response).

Example