Submit a call
Authorization
ApiKey ingestAuthorization: Bearer clk_{tenant_id}_{secret}. The header X-Api-Key carrying the same value is also accepted, for integration platforms that cannot set an Authorization header. Keys are minted in the Call Lens dashboard.
In: header
Scope: ingest
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/calls" \ -H "Content-Type: application/json" \ -d '{ "mode": "upload", "started_at": "2019-08-24T14:15:22Z" }'{ "success": true, "message": "Call already ingested.", "data": { "id": "string", "status": "string" }}Request somewhere to upload a recording POST
Returns a short-lived presigned `PUT` URL and an opaque `ticket`. Send the audio bytes straight to `upload.url` — they never pass through Call Lens — then submit the call with `POST /calls`, `mode: "upload"` and the ticket. The `upload.headers` map must be applied to the `PUT` verbatim; it is empty against some storage backends and required by others, so a client that ignores it will fail with a signature mismatch in production only.
List webhook endpoints GET
Next Page