Skip to main content
POST
Upload a conversation

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 conversation 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 conversation. Optional for ingestion; send it on every conversation 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 conversation. 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-conversation id for the client or brand this conversation 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 conversation. 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 conversation. 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