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

# Retrieve an Appointment Recording — Shilo API

> Retrieve a single appointment recording by its Shilo recording UUID or external recording ID. Returns the Appointment object with user and contact identifiers.

Use this endpoint to fetch a single appointment recording by its identifier. You can look up an appointment using either the Shilo-generated recording UUID or the external recording ID that your integration provided when the appointment was ingested. This is useful for confirming that an appointment has been processed or for retrieving its metadata before fetching analysis or transcript data.

## Endpoint

```text theme={null}
GET https://api.shilo.ai/api/v1/appointments/{identifier}
```

## Authentication

All requests require your API key in the `x-api-key` header.

## Path Parameters

<ParamField path="identifier" type="string" required>
  The unique identifier for the appointment recording. Two formats are accepted:

  * `{uuid}` — The Shilo recording UUID (e.g., `ee6f2136-b94a-4438-9335-3acf5b2a0d31`)
  * `external_recording_id:{string}` — The external recording ID your integration provided (e.g., `external_recording_id:ext-789`)
</ParamField>

## Response

A successful request returns HTTP `200` with the matching Appointment object.

<ResponseField name="id" type="string" required>
  The Shilo recording UUID for this appointment.
</ResponseField>

<ResponseField name="type" type="string" required>
  Always `"appointment"` for records returned by this endpoint.
</ResponseField>

<ResponseField name="created_date" type="string" required>
  The ISO-8601 timestamp indicating when the appointment recording was created in Shilo.
</ResponseField>

<ResponseField name="user_id" type="string | null">
  The Shilo UUID of the user associated with this appointment. `null` if no user is matched.
</ResponseField>

<ResponseField name="external_user_id" type="string | null">
  The external user ID provided by your integration at the time the appointment was created. `null` if not provided.
</ResponseField>

<ResponseField name="external_contact_id" type="string | null">
  The external contact ID provided by your integration at the time the appointment was created. `null` if not provided.
</ResponseField>

<ResponseField name="external_recording_id" type="string | null">
  The external recording ID provided by your integration, if any. `null` if not provided.
</ResponseField>

### Error Responses

| Status            | Description                                                                 |
| ----------------- | --------------------------------------------------------------------------- |
| `400 Bad Request` | The `identifier` path parameter is malformed or uses an unsupported format. |
| `404 Not Found`   | No appointment recording was found matching the provided identifier.        |

## Example Request

```bash theme={null}
curl --request GET \
  --url "https://api.shilo.ai/api/v1/appointments/ee6f2136-b94a-4438-9335-3acf5b2a0d31" \
  --header "x-api-key: YOUR_API_KEY"
```

By external recording ID:

```bash theme={null}
curl --request GET \
  --url "https://api.shilo.ai/api/v1/appointments/external_recording_id:ext-789" \
  --header "x-api-key: YOUR_API_KEY"
```

## Example Response

```json theme={null}
{
  "id": "ee6f2136-b94a-4438-9335-3acf5b2a0d31",
  "type": "appointment",
  "created_date": "2030-09-24T12:34:56Z",
  "user_id": "ee6f2136-b94a-4438-9335-3acf5b2a0d31",
  "external_user_id": "432",
  "external_contact_id": "4534",
  "external_recording_id": "ext-789"
}
```
