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

# Aggregate per-turn latency percentiles across recent calls.

> Returns p50/p95/p99 of LLM first-token and end-to-end first-audio latency, plus the slowest calls in the window for inspection.

Returns p50/p95/p99 of LLM first-token and end-to-end first-audio
latency, plus the slowest calls in the window for inspection.

### Query parameters

<ParamField query="window" type="string">
  Aggregation window: 24h | 7d | 30d | all (default 24h).
</ParamField>

<ParamField query="samples" type="integer (int64)">
  Maximum slow-call samples to return (default 10, max 50).
</ParamField>

### Response

`CallLatencyResponse`

<ResponseField name="ok" type="boolean" required />

<ResponseField name="slowest" type="LatencySample[]" required>
  <Expandable title="LatencySample">
    <ResponseField name="call_sid" type="string,null" />

    <ResponseField name="duration_seconds" type="integer,null (int32)" />

    <ResponseField name="e2e_p95_ms" type="number,null (double)" />

    <ResponseField name="id" type="string (uuid)" required />

    <ResponseField name="llm_p50_ms" type="number,null (double)" />

    <ResponseField name="llm_p95_ms" type="number,null (double)" />

    <ResponseField name="model" type="string,null" />

    <ResponseField name="started_at" type="string (date-time)" required />

    <ResponseField name="stream_sid" type="string" required />

    <ResponseField name="turn_count" type="integer,null (int32)" />

    <ResponseField name="voice" type="string,null" />
  </Expandable>
</ResponseField>

<ResponseField name="stats" type="LatencyStats" required>
  <Expandable title="LatencyStats">
    <ResponseField name="avg_e2e_first_audio_ms" type="number,null (double)">
      Average of per-call end-to-end first-audio averages, in milliseconds.
    </ResponseField>

    <ResponseField name="avg_llm_first_token_ms" type="number,null (double)">
      Average of per-call LLM first-token averages, in milliseconds.
    </ResponseField>

    <ResponseField name="call_sample_count" type="integer (int64)" required>
      Number of calls contributing samples to the aggregate.
    </ResponseField>

    <ResponseField name="max_e2e_first_audio_ms" type="number,null (double)" />

    <ResponseField name="max_llm_first_token_ms" type="number,null (double)" />

    <ResponseField name="p50_e2e_first_audio_ms" type="number,null (double)" />

    <ResponseField name="p50_llm_first_token_ms" type="number,null (double)" />

    <ResponseField name="p95_e2e_first_audio_ms" type="number,null (double)" />

    <ResponseField name="p95_llm_first_token_ms" type="number,null (double)" />

    <ResponseField name="p99_e2e_first_audio_ms" type="number,null (double)" />

    <ResponseField name="p99_llm_first_token_ms" type="number,null (double)" />

    <ResponseField name="turn_sample_count" type="integer (int64)" required>
      Sum of per-call turn counts (proxy for total turns observed).
    </ResponseField>

    <ResponseField name="window" type="string" required />
  </Expandable>
</ResponseField>

<ResponseField name="tenant" type="string" required />

<ResponseField name="timeseries" type="LatencyTimeseries" required>
  p50/p95/p99 latency bucketed over the window for the trend chart.

  <Expandable title="LatencyTimeseries">
    <ResponseField name="bucket" type="string" required>
      Bucket granularity: 'hour' or 'day'.
    </ResponseField>

    <ResponseField name="points" type="LatencyTimeseriesPoint[]" required>
      <Expandable title="LatencyTimeseriesPoint">
        <ResponseField name="bucket_start" type="string (date-time)" required />

        <ResponseField name="call_count" type="integer (int64)" required>
          Calls contributing to this bucket.
        </ResponseField>

        <ResponseField name="p50_e2e_first_audio_ms" type="number,null (double)" />

        <ResponseField name="p50_llm_first_token_ms" type="number,null (double)" />

        <ResponseField name="p95_e2e_first_audio_ms" type="number,null (double)" />

        <ResponseField name="p95_llm_first_token_ms" type="number,null (double)" />

        <ResponseField name="p99_e2e_first_audio_ms" type="number,null (double)" />

        <ResponseField name="p99_llm_first_token_ms" type="number,null (double)" />
      </Expandable>
    </ResponseField>

    <ResponseField name="window" type="string" required />
  </Expandable>
</ResponseField>

### Status codes

| Code  | Meaning                        |
| ----- | ------------------------------ |
| `200` | Latency aggregates             |
| `401` | Unauthorized                   |
| `500` | Internal server error          |
| `503` | Call logging is not configured |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api.voice.stateset.com/api/v1/call-logs/latency' \
    --header 'Authorization: Bearer YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "ok": true,
    "slowest": [
      {
        "call_sid": null,
        "duration_seconds": null,
        "e2e_p95_ms": null,
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "llm_p50_ms": null,
        "llm_p95_ms": null,
        "model": null,
        "started_at": "2026-07-24T12:00:00Z",
        "stream_sid": "string",
        "turn_count": null,
        "voice": null
      }
    ],
    "stats": {
      "avg_e2e_first_audio_ms": null,
      "avg_llm_first_token_ms": null,
      "call_sample_count": 124,
      "max_e2e_first_audio_ms": null,
      "max_llm_first_token_ms": null,
      "p50_e2e_first_audio_ms": null,
      "p50_llm_first_token_ms": null,
      "p95_e2e_first_audio_ms": null,
      "p95_llm_first_token_ms": null,
      "p99_e2e_first_audio_ms": null,
      "p99_llm_first_token_ms": null,
      "turn_sample_count": 1832,
      "window": "string"
    },
    "tenant": "string",
    "timeseries": {
      "bucket": "string",
      "points": [
        {
          "bucket_start": null,
          "call_count": null,
          "p50_e2e_first_audio_ms": null,
          "p50_llm_first_token_ms": null,
          "p95_e2e_first_audio_ms": null,
          "p95_llm_first_token_ms": null,
          "p99_e2e_first_audio_ms": null,
          "p99_llm_first_token_ms": null
        }
      ],
      "window": "string"
    }
  }
  ```
</ResponseExample>
