# getCallRecording

One call's RECORDING and TRANSCRIPT, plus the outcome logged for it: a time-limited signed audio URL (recordingUrl), the speaker-by-speaker transcript ({ speaker, text, start, end }), the AI summary, the dialer disposition + dispositionNote, direction, status, durationSeconds, createdAt, who handled it (author: a person or an AI employee) and both phone numbers. callId comes from a CALL row in listInboxThreads (its id, or any id in groupedCallIds), or from a CALL entry in listContactActivities. Returns NULL (not an error) when the call has NO RECORDING, when it is not your organization's, or when no such call exists; those three are indistinguishable by design, so a null is not evidence the call did not happen. A call with no recording has no transcript either, and no summary: the summary is enrichment derived from the recording. So for those calls read listContactActivities instead: its CALL entries carry direction, durationSeconds, status, disposition and dispositionNote for every call on a contact, recorded or not, which is the logged OUTCOME even when there is no audio. Reading here has NO side effect: it deliberately does not mark the call seen, so an agent sweeping calls cannot silently clear an operator's unread badges. recordingUrl expires; fetch it when you are about to use it rather than storing it, and re-run this operation to re-sign.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "getCallRecording", "variables": {...} }`
- Scope: `READ`
- Type: query
- Idempotency: a read; rejects `Idempotency-Key`
- Rate-limited: no

## Variables

- `callId`: `ID!` (required)

## Response (data, an example)

```json
{
  "callsQuery": {
    "callRecording": {
      "id": "<ID>",
      "recordingUrl": "…",
      "transcript": [
        {
          "speaker": "…",
          "text": "…",
          "start": 0,
          "end": 0
        }
      ],
      "summary": "…",
      "disposition": "Connected",
      "dispositionNote": "…",
      "direction": "INBOUND",
      "status": "RINGING",
      "durationSeconds": 0,
      "createdAt": "2026-01-01T00:00:00.000Z",
      "seen": true,
      "contactName": "…",
      "contactE164PhoneNumber": "…",
      "fromPhoneNumber": "…",
      "toPhoneNumber": "…",
      "author": {
        "kind": "USER",
        "id": "<ID>",
        "name": "…"
      },
      "agentName": "…"
    }
  }
}
```

## Example

```bash
curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operationId": "getCallRecording",
    "variables": {
      "callId": "<callId>"
    }
  }'
```
