06 Line
ReferenceApi

call.recorded

The recordings of a call are stored, a few seconds after it ended. Each track that carried sound comes as a mono WAV (PCM 16-bit, 8 kHz) behind a presigned link that works for 7 days, without authentication: download them when the event arrives. `remote` is the other party, `local` is what your WebRTC session sent; both start when the call was placed or answered, so they line up. After 7 days, `GET /v1/calls/{id}/recordings/{track}` still serves them.

The recordings of a call are stored, a few seconds after it ended. Each track that carried sound comes as a mono WAV (PCM 16-bit, 8 kHz) behind a presigned link that works for 7 days, without authentication: download them when the event arrives. remote is the other party, local is what your WebRTC session sent; both start when the call was placed or answered, so they line up. After 7 days, GET /v1/calls/{id}/recordings/{track} still serves them.

Header Parameters

06line-Signature*string

t=<unix seconds>,v1=<hex HMAC-SHA256 of "t.body" with your endpoint secret>. Reject events older than 5 minutes.

Request Body

application/json
  1. body
id*string

Unique; the same event may arrive twice, skip it by id.

Match^evt_[0-9a-z]{26}$
type*string
Value in"sms.received""sms.status""call.recorded""webhook.test"
created_at*Timestamp

RFC 3339, UTC.

Formatdate-time
data*

Response Body

Any 2xx within 10 seconds acknowledges the event. Anything else is retried for 24 hours.

Example Requests
POST/call.recorded
Request Body
application/json
{  "id": "evt_01jbq9z4c2v8k6t0x4r8d2e6yb",  "type": "call.recorded",  "created_at": "2026-10-21T15:16:44Z",  "data": {    "call": {      "id": "call_01jbq7e4m2x8k5t1v9r3c6d0yb",      "line_id": "line_01jbq5a3x9e2k7m4t6v8r0c1yb",      "direction": "outbound",      "from": "+33612345678",      "to": "+33698765432",      "state": "ended",      "end_reason": "remote_hangup",      "created_by": {        "type": "api_key",        "id": "key_01jbq4fz0c8w2n5r7t9y1b3d6f"      },      "started_at": "2026-10-21T15:12:03Z",      "answered_at": "2026-10-21T15:12:11Z",      "ended_at": "2026-10-21T15:16:40Z",      "duration_s": 269    },    "recordings": [      {        "track": "remote",        "url": "https://storage.06line.com/recordings/cmp_01jbq4f8k2e5t3m9x7v0a6h1zd/call_01jbq7e4m2x8k5t1v9r3c6d0yb/remote.wav?X-Amz-Expires=604800&X-Amz-Signature=5c2a9e",        "size": 4430444,        "expires_at": "2026-10-28T15:16:44Z"      },      {        "track": "local",        "url": "https://storage.06line.com/recordings/cmp_01jbq4f8k2e5t3m9x7v0a6h1zd/call_01jbq7e4m2x8k5t1v9r3c6d0yb/local.wav?X-Amz-Expires=604800&X-Amz-Signature=5c2a9e",        "size": 4421164,        "expires_at": "2026-10-28T15:16:44Z"      }    ]  }}
Header Parameters
{  "06line-Signature": "t=1792606542,v1=5f1c0e3d8a..."}