https://api.tala-assistant.com/api/v1/public.
Create a limited API key
In Tala, open API keys, create a key and select its permissions and the agents it may access. A key never grants access to agents you have not selected, including agents created later. Keys expire after 180 days by default. You may choose another future date or explicitly select no expiration. The full key is displayed only once. Store it securely on your server; do not put it in browser code, URLs, or a public repository. Revoke a key from the same page when it is no longer needed. Send it in theX-API-Key header on every request:
Agent and call identifiers are stable UUID strings. Obtain the agent identifier from
GET /agents and the call identifier from a creation response or call history. Use them exactly as returned.
List agents
GET /agents returns only the active agents selected for your key:
Start an outbound call
The agent must be active and outbound calling must be available for your account.
The context variable
phone_number is kept in sync with the destination above; a different value supplied inside initial_context does not override it.
The response is 202 Accepted:
customer_reference or appointment_date.
Read call results
GET /calls/{call_id} returns the following business data. Fields unavailable for a call are null or empty objects.
status is pending, in_progress, completed, or failed. Duration may appear after the call has finished. disposition is a recognized outcome (completed, no_answer, busy, voicemail, failed, cancelled, or XFER for a transfer), or null when no supported outcome is available.
caller.phone_number identifies the other party; it may be absent, for example when a number is withheld. call_overview contains available business summaries and may be null.
Returned context is deliberately limited: initial_context includes only business variables declared in the agent’s context settings, and gathered_context includes only its declared extraction variables. Extra submitted variables can guide the conversation without automatically becoming readable through the API. Reserved fields are removed recursively. Recordings and transcripts are not included in this API.
List and paginate calls
GET /agents/{agent_id}/calls includes the authorized agent’s recorded sessions, regardless of how they were started. Results are ordered from newest to oldest.
An archived agent’s history remains readable by keys that already authorize it, but it is no longer listed by GET /agents and cannot start new calls.
The response has the form
{"data": [...], "next_cursor": "..."}. Each item has the same fields as a single-call response. When next_cursor is null, there are no more results. Keep the same filters when requesting another page. Date bounds refer to call creation, not completion.
Limits and errors
Creation is limited to 60 requests per minute per key. The three read endpoints share a limit of 120 requests per minute per key. Unsuccessful authentication attempts are limited to 20 per minute per source address. Limits apply across agents and use rolling one-minute windows. A 429 response includesRetry-After: 60.
Errors have the form
{"detail": "Invalid request"}. An unavailable identifier produces the same 404 whether it is absent or outside the key’s access. Responses must not be cached.
Migration from the previous API
The oldPOST /api/v1/public/agent/{trigger_uuid} endpoint is retired and returns 410. Previously issued unrestricted keys cannot access the new endpoints. Create a new limited key and use the agent UUID returned by GET /agents; a previous trigger identifier is not an agent identifier.