List past requests
Paginated, per-request usage history — an OpenAI-style list envelope. Authenticated and rate-limited like every `/v1` path, but never metered. Omit both `from` and `to` and the window defaults to the trailing 30 days, echoed back in the response the same way `GET /usage` does. For a single request by id, see `GET /requests/{id}`.
Paginated, per-request usage history — an OpenAI-style list envelope. Authenticated
and rate-limited like every /v1 path, but never metered.
Omit both from and to and the window defaults to the trailing 30 days, echoed
back in the response the same way GET /usage does. For a single request by id,
see GET /requests/{id}.
Authorization
bearerAuth A ModelBeat API key, prefixed mb_live_, sent as Authorization: Bearer <key>.
Keys are issued in the ModelBeat console and are scoped to one tenant. The
example value used throughout this document
(mb_live_EXAMPLE_NOT_A_REAL_KEY_00000000000000000000) is a placeholder and
will not authenticate.
In: header
Query Parameters
ISO 8601 date, inclusive. Defaults with to to the trailing 30 days if both are omitted.
dateISO 8601 date, exclusive. Defaults with from to the trailing 30 days if both are omitted.
dateFilter to one status value ("ok" | "error" | "rejected" | "unsettled" | "unsettled_estimated"). "unsettled" is a served request whose provider-reported tokens could not be reconciled; "unsettled_estimated" is a served request the provider never reported tokens for, billed from the gateway's own measurement of the stream.
Filter to one served model/tier value.
Opaque pagination cursor from a previous response's next_cursor.
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/requests"{ "object": "list", "data": [ { "id": "string", "created": 0, "model": "string", "model_requested": "string", "provider": "string", "prompt_tokens": 0, "completion_tokens": 0, "cost": { "amount": "37.14000000", "currency": "USD" }, "latency_ms": 0, "status": "ok", "key_id": "string", "routing_reason": "string", "routing_level": "string", "fallback_used": true, "attempt_count": 0, "finish_reason": "string" } ], "has_more": true, "next_cursor": "string", "from": "string", "to": "string"}List the intelligence tiers GET
Lists the values `model` accepts, in the OpenAI `/v1/models` list shape, so a stock OpenAI SDK's `models.list()` works unchanged. Authenticated and rate-limited like every `/v1` path, but never metered — no balance hold is taken. During the private beta this is a tier list, not a model catalogue: it returns `modelbeat-advanced`, `modelbeat-standard` and `modelbeat-fast`, and never a model id. Tier names are ModelBeat's own abstraction over the pool, so listing them discloses no model identity (ADR-0070).
Submit an outcome signal for a prior request POST
Explicit outcome signal (`"up"` or `"down"`) for a request you made earlier, keyed by that request's id. **`request_id` must be the `X-Request-Id` response header value from the original request, not the response body's own `id` field.** The two are different identifiers, and only the header value is recognized here — the body's `id` returns `404`. Authenticated and rate-limited like every `/v1` path, but never metered: no balance hold, no usage row, no routing.