> ## Documentation Index
> Fetch the complete documentation index at: https://docs.allomia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Call

> Retrieves details for a specific call by ID

## Get Call

Retrieves detailed information for a specific call by ID. This endpoint can be accessed using either a tenant API key or an organization API key. When using an organization API key, you can only access calls that belong to that specific organization.

### Headers

<ParamField header="Authorization" type="string" required>
  API key is required. Enter either your tenant-specific or
  organization-specific API key in the format 'Bearer YOUR-API-KEY'
</ParamField>

### Path Parameters

<ParamField path="id" type="string" required>
  The unique identifier of the call to retrieve
</ParamField>

### Response

<ResponseField name="id" type="string">
  Unique identifier for the call
</ResponseField>

<ResponseField name="organizationId" type="string">
  Organization ID the call belongs to
</ResponseField>

<ResponseField name="callType" type="string">
  Type of call: "Inbound", "Outbound", or "Web"
</ResponseField>

<ResponseField name="agentId" type="string" nullable>
  ID of the agent/assistant that handled the call
</ResponseField>

<ResponseField name="agentName" type="string" nullable>
  Name of the agent/assistant
</ResponseField>

<ResponseField name="teamId" type="string" nullable>
  ID of the team that owns the assistant. `null` for organizations that don't use teams.
</ResponseField>

<ResponseField name="teamName" type="string" nullable>
  Name of the team that owns the assistant. `null` for organizations that don't use teams.
</ResponseField>

<ResponseField name="phoneNumber" type="string" nullable>
  Phone number associated with the call
</ResponseField>

<ResponseField name="callStartedAt" type="string" format="date-time" nullable>
  Timestamp when the call started (ISO 8601 format: "2025-05-28T14:20:15Z")
</ResponseField>

<ResponseField name="callEndedAt" type="string" format="date-time" nullable>
  Timestamp when the call ended (ISO 8601 format: "2025-05-28T14:23:15Z")
</ResponseField>

<ResponseField name="callDurationSeconds" type="string" nullable>
  Duration of the call in seconds
</ResponseField>

<ResponseField name="callEndedReason" type="string" nullable>
  Reason the call ended
</ResponseField>

<ResponseField name="userName" type="string" nullable>
  Name of the user/patient (if available)
</ResponseField>

<ResponseField name="userPhoneNumber" type="string" nullable>
  Phone number of the user (if available)
</ResponseField>

<ResponseField name="userPrimaryIntent" type="string" nullable>
  Primary intent detected from the call
</ResponseField>

<ResponseField name="userSentiment" type="string" nullable>
  Detected sentiment of the user during the call
</ResponseField>

<ResponseField name="callOutcome" type="string" nullable>
  AI-extracted high-level outcome of the call (e.g. `appointment_confirmed`, `voicemail_left`, `transferred_to_human`).
</ResponseField>

<ResponseField name="callSummary" type="string" nullable>
  AI-generated English summary of the call (if available)
</ResponseField>

<ResponseField name="callSummaryFr" type="string" nullable>
  AI-generated French (`fr-CA`) summary of the call. Returned alongside `callSummary`.
</ResponseField>

<ResponseField name="transcriptUrl" type="string" nullable>
  A secure, time-limited URL to the **plain-text** transcript (`.txt`). The URL is pre-signed and expires after 1 hour. Re-fetch the call to obtain a fresh URL.
</ResponseField>

<ResponseField name="recordingUrl" type="string" nullable>
  A secure, time-limited URL to the call recording (audio file from the voice provider). The URL is pre-signed and expires after 1 hour. Re-fetch the call to obtain a fresh URL.
</ResponseField>

<ResponseField name="createdAt" type="string" format="date-time">
  When the call record was created (ISO 8601 format: "2025-05-28T14:23:45Z")
</ResponseField>

### Security Features

* **Pre-signed URLs**: The `transcriptUrl` and `recordingUrl` are automatically generated as secure, signed URLs
* **Time-limited Access**: URLs expire after 1 hour for security
* **Authentication Required**: API key required to get the URLs
* **Organization Isolation**: Users can only access calls from their authorized organizations

### Example Request

```bash theme={null}
curl -X GET https://allomia.com/api/calls/f6a7b8c9-d0e1-2345-fabc-678901234567 \
  -H "Authorization: Bearer YOUR-API-KEY"
```

### Example Response

```json theme={null}
{
  "id": "f6a7b8c9-d0e1-2345-fabc-678901234567",
  "organizationId": "a1b2c3d4-e5f6-7890-abcd-123456789012",
  "callType": "Inbound",
  "agentId": "g7b8c9d0-e1f2-3456-abcd-789012345678",
  "agentName": "Dr. Smith Assistant",
  "teamId": "t1e2a3m4-5678-9012-abcd-ef1234567890",
  "teamName": "Front Desk",
  "phoneNumber": "+15559876543",
  "callStartedAt": "2025-05-28T14:20:15Z",
  "callEndedAt": "2025-05-28T14:23:15Z",
  "callDurationSeconds": "180",
  "callEndedReason": "customer-ended-call",
  "userName": "Jane Smith",
  "userPhoneNumber": "+15551234567",
  "userPrimaryIntent": "schedule_appointment",
  "userSentiment": "positive",
  "callOutcome": "appointment_confirmed",
  "callSummary": "Patient called to schedule a follow-up appointment for next week. Appointment was scheduled for Tuesday at 2:00 PM.",
  "callSummaryFr": "La patiente a appelé pour planifier un rendez-vous de suivi la semaine prochaine. Le rendez-vous a été fixé au mardi à 14h00.",
  "transcriptUrl": "https://allomiastorageprd.blob.core.windows.net/allomia-web-app/a1b2c3d4/transcripts/transcript.txt?sv=2023-01-03&se=2025-01-01T15%3A30%3A00Z&sr=b&sp=r&sig=SECURE_SIGNATURE",
  "recordingUrl": "https://allomiastorageprd.blob.core.windows.net/allomia-web-app/a1b2c3d4/recordings/recording.wav?sv=2023-01-03&se=2025-01-01T15%3A30%3A00Z&sr=b&sp=r&sig=SECURE_SIGNATURE",
  "createdAt": "2025-05-28T14:23:45Z"
}
```

### Error Responses

<AccordionGroup>
  <Accordion title="401: Unauthorized">
    ```json theme={null}
    {
      "error": "Invalid or missing API key"
    }
    ```
  </Accordion>

  <Accordion title="404: Call not found">
    ```json theme={null}
    {
      "error": "Call not found for the provided ID"
    }
    ```
  </Accordion>

  <Accordion title="500: Error">
    ```json theme={null}
    {
      "error": "Internal server error occurred"
    }
    ```
  </Accordion>
</AccordionGroup>
