---
title: "Llm Models Models Status Retrieve"
method: GET
path: "/llm_models/models/{model_name}/status/"
tags: ["models"]
---

# Llm Models Models Status Retrieve

`GET /llm_models/models/{model_name}/status/`

GET/POST /api/models/<model_name>/status/        (Public API — **auth optional**)
GET/POST /api/llm_models/models/<model_name>/status/ (Platform)

Per-model status resource for the exact logged model string in the URL path,
over an absolute UTC ``[start_time, end_time)`` range, bucketed by
``time_tick`` (minute / hour / day).
Returns four things (see ``ModelStatusResponseSerializer``):
  - ``data`` — per-provider uptime time series (per-attempt grain). Scoped to
    ``provider_id`` when that filter is supplied, else cross-provider.
  - ``respan_uptime`` — request-grain "via Respan" uptime time series: one
    verdict per client call (UP if ANY retry/fallback attempt succeeded), so
    it reflects failover and sits at/above the per-provider line. Omitted for
    provider-filtered requests because it is inherently cross-provider.
  - ``metrics_series`` — per-bucket performance metrics over the window (tps,
    ttft, latency, cache-hit %, + admin-only counts/cost), so the other
    metrics can be plotted over time just like uptime. Scoped to
    ``provider_id`` when that filter is supplied, else cross-provider.
  - ``status`` — scalar model-wide summary over the window (uptime %, tps,
    ttft, latency, cache-hit %, catalog input list price). Omitted when a
    ``provider_id`` filter is supplied (it is cross-provider).

Redaction: public/regular callers get only normalized rates/percentages plus
the catalog list price; staff/superadmins additionally get volume scalars
(request/down counts, total cost) — those are withheld from the public so
competitors can't infer platform traffic/revenue from counts × price.

The model is the URL path segment (``<path:model_name>``) so provider-prefixed
identifiers (e.g. ``vertex_ai/gemini-1.5-pro``) survive routing; the filters
(``provider_id``, ``time_tick``, range) stay query/body params.

## Path parameters

- `model_name` string, required

## Query parameters

- `end_time` string, required
- `provider_id` string
- `start_time` string, required
- `time_tick` 'minute' | 'hour' | 'day'

## Headers

- `Authorization` string, required

## Response `200`

- ModelStatusResponse
  - `model` string, required — The model string from the URL path.
  - `provider_id` string, nullable — Echo of the `provider_id` filter, if one was supplied.
  - `time_tick` 'minute' | 'hour' | 'day', required — * `minute` - minute * `hour` - hour * `day` - day
  - `start_time` string, date-time, required — Window start (UTC, inclusive).
  - `end_time` string, date-time, required — Window end (UTC, exclusive).
  - `data` ModelStatusBucket[], required — Per-provider uptime time series (per-attempt grain). Scoped to `provider_id` when that filter is supplied, else cross-provider.
    - `date_group` string, date-time, required — Start of the time bucket (UTC). One bucket per `time_tick` step.
    - `uptime` number, double, nullable, required — Uptime fraction for the bucket in [0, 1]; `null` when the bucket had no traffic. For the per-provider `data` series this is `(requests - down) / requests`; for `respan_uptime` it is `up_requests / (up_requests + down_requests)` (user-error-only requests excluded).
    - `total_count` integer — Admin-only. Denominator request count for the bucket. Omitted for public callers (volume is revenue-inferable).
    - `down_count` integer — Admin-only. Requests counted as down (HTTP 5xx or 408 timeout) in the bucket. Omitted for public callers.
  - `respan_uptime` ModelStatusBucket[] — Request-grain 'via Respan' uptime time series: one verdict per client call, UP if ANY retry/fallback attempt succeeded. Reflects failover, so it sits at or above the per-provider `data` line. Same bucket shape as `data`. Omitted when a `provider_id` filter is supplied because the series is cross-provider.
    - `date_group` string, date-time, required — Start of the time bucket (UTC). One bucket per `time_tick` step.
    - `uptime` number, double, nullable, required — Uptime fraction for the bucket in [0, 1]; `null` when the bucket had no traffic. For the per-provider `data` series this is `(requests - down) / requests`; for `respan_uptime` it is `up_requests / (up_requests + down_requests)` (user-error-only requests excluded).
    - `total_count` integer — Admin-only. Denominator request count for the bucket. Omitted for public callers (volume is revenue-inferable).
    - `down_count` integer — Admin-only. Requests counted as down (HTTP 5xx or 408 timeout) in the bucket. Omitted for public callers.
  - `metrics_series` ModelMetricsSeriesBucket[] — Per-bucket performance metrics over the window (tps, ttft, latency, cache-hit %, + admin-only counts/cost) — the other metrics plotted over time like uptime. Scoped to `provider_id` when that filter is supplied, else cross-provider. Volume fields within are admin-only.
    - `date_group` string, date-time, required — Start of the time bucket (UTC). One bucket per `time_tick` step.
    - `average_tps` number, double, nullable — Average output tokens/second in the bucket; `null` if no traffic.
    - `average_ttft` number, double, nullable — Average time-to-first-token (seconds) in the bucket, streaming requests only; `null` if none.
    - `average_latency` number, double, nullable — Average end-to-end latency (seconds) in the bucket; `null` if no traffic.
    - `cache_hit_percentage` number, double, nullable — Prompt-cache hit rate (% of prompt tokens) in the bucket; `null` if no traffic.
    - `number_of_requests` integer — Admin-only. Request count in the bucket. Omitted for public callers (volume is revenue-inferable).
    - `cost` number, double, nullable — Admin-only. Spend (USD) in the bucket. Omitted for public callers.
  - `status` ModelStatusSummary — Scalar 'current status' for the model over the whole window. Normalized rate/price fields are public; volume fields (`number_of_requests`, `cost`) are admin-only and omitted for public callers — hence all `required=False`.
    - `uptime_percent` number, double, nullable — Uptime over the window, 0-100; `null` when there was no traffic.
    - `average_tps` number, double, nullable — Average output tokens/second over the window.
    - `average_ttft` number, double, nullable — Average time-to-first-token in seconds over the window (streaming requests only).
    - `average_latency` number, double, nullable — Average end-to-end latency in seconds over the window.
    - `cache_hit_percentage` number, double, nullable — Prompt-cache hit rate (% of prompt tokens) over the window.
    - `input_cost` number, double, nullable — Catalog list price for input tokens (published per-token pricing from the model dictionary). Public — this is list price, not revenue.
    - `number_of_requests` integer, nullable — Admin-only. Total requests over the window. Omitted for public callers so traffic volume can't be used to infer revenue.
    - `cost` number, double, nullable — Admin-only. Total spend (USD) over the window. Omitted for public callers.

---

[API](https://skmtc.net/keywordsai/apis/api-reference.md) · [All operations](https://skmtc.net/keywordsai/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/keywordsai/api-reference/versions/c26d550029f8/schema)
