Skip to main content
POST
Upload a call

Authorizations

Authorization
string
header
required

Send Authorization: Bearer YOUR_API_KEY. The key resolves to a single organization.

Headers

X-Zelto-Provider
enum<string>
default:zelto

Which schema the request body uses. Defaults to zelto (the canonical CallIngest shape, also used by livekit). Native vapi / retell webhook payloads are also accepted.

Available options:
zelto,
vapi,
retell,
livekit

Body

application/json

When X-Zelto-Provider is zelto (or omitted), the canonical CallIngest body. When vapi / retell, that provider's native webhook payload.

Zelto's canonical call upload shape (X-Zelto-Provider: zelto). Provide either agent.externalId (find-or-create) or agentId (attach to an existing agent).

call
object
required
agent
object

Find-or-create an agent by your own id. Required unless agentId is given.

agentId
string<uuid>

Attach to an existing Zelto agent. Takes precedence over agent.externalId.

version
string

Release label of the agent that actually handled this call. Optional for ingestion; send it on every call for reliable experiments. Case-sensitive, 1–255 characters after trimming. The same agent and label reuse a version; a new label creates one on the first processed call. Keep the agent ID stable and change this label for prompt or pipeline changes. Preserve the original label on retries. This is a top-level field, not metadata.version. See /docs/agent-versions.

Required string length: 1 - 255
companyExternalId
string

Your stable per-call id for the client or brand this call belongs to. When Companies is enabled, Zelto maps it to a company; otherwise the agent's default company is used when available.

Required string length: 1 - 255
transcript
object
systemPrompt
string

Actual system prompt of the version that handled this call. A leading system transcript turn is used if omitted. Available text is captured when a version is first observed, or fills a missing prompt later; an existing prompt snapshot is not overwritten. A version label alone does not supply a prompt.

metadata
object

Free-form metadata stored on the conversation.

versionConfig
object

Context for the version that handled this call. Requires the version field. Captured when the version is observed; does not overwrite an existing configuration snapshot. Use config when registering through POST /v1/agents/{id}/versions.

Response

Accepted for processing. Also returned for duplicate deliveries and dropped (non-terminal) events.

received
boolean
required