Providers endpoints
GET /api/v1/projects/{project_id}/provider-incidents
Section titled “GET /api/v1/projects/{project_id}/provider-incidents”Provider incidents
Incidents that overlap the window, newest first by (started_at, id).
An incident overlaps [from, to) when it started before to and had not been resolved by
from (an open one has not ended). api_only (default true) keeps the incidents that touch
the providers’ APIs. sources is every feed’s poll state, and polling says whether this
server polls the feeds at all (PROVIDER_STATUS_POLLING_ENABLED).
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
project_id |
path | string (uuid) | yes | |
provider |
query | "anthropic" | "openai" | "google" or null |
no | |
api_only |
query | boolean | no | Default true. |
limit |
query | integer | no | min 1, max 100 Default 50. |
cursor |
query | string or null | no | max length 512 |
from |
query | string (date-time) or null | no | |
to |
query | string (date-time) or null | no |
| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json: IncidentListOut |
| 422 | Validation Error | application/json: HTTPValidationError |
GET /api/v1/projects/{project_id}/providers/errors/samples
Section titled “GET /api/v1/projects/{project_id}/providers/errors/samples”Sample failed calls
The newest failed llm calls, with their provider error fields, newest first.
A window longer than 24 hours is cut to its last 24 hours and the answer says
clamped: true. 422 VALIDATION_ERROR for an unknown error class or rate-limit kind.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
project_id |
path | string (uuid) | yes | |
provider |
query | string or null | no | max length 64 |
error_class |
query | ErrorClass or null | no | |
rate_limit_kind |
query | RateLimitKind or null | no | |
environment |
query | string or null | no | max length 64 |
limit |
query | integer | no | min 1, max 50 Default 20. |
cursor |
query | string or null | no | max length 512 |
from |
query | string (date-time) or null | no | |
to |
query | string (date-time) or null | no |
| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json: SamplesPage |
| 422 | Validation Error | application/json: HTTPValidationError |
GET /api/v1/projects/{project_id}/providers/errors/timeseries
Section titled “GET /api/v1/projects/{project_id}/providers/errors/timeseries”Errors by class over time
Failed llm calls per UTC bucket and error class, one bucket per hour or day from the one
holding from up to to; classes with no failures are absent.
Part of the provider health page, so it does not count a use of its own.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
project_id |
path | string (uuid) | yes | |
bucket |
query | "hour" | "day" |
no | Default "hour". |
environment |
query | string or null | no | max length 64 |
provider |
query | string or null | no | max length 64 |
from |
query | string (date-time) or null | no | |
to |
query | string (date-time) or null | no |
| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json: array of ErrorBucketOut |
| 422 | Validation Error | application/json: HTTPValidationError |
GET /api/v1/projects/{project_id}/providers/health
Section titled “GET /api/v1/projects/{project_id}/providers/health”Provider health
llm calls, failures by error class, 429 kinds, retries and status page incidents per provider seen in the window, busiest first.
error_rate is a decimal string, null without calls. retry_cost_usd is null when any trace
of the provider has an unknown retry cost (retry_cost_unknown); retry_cost_note says how
retries are attributed. approximate is true when whole hours were read from the hourly
rollups.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
project_id |
path | string (uuid) | yes | |
environment |
query | string or null | no | max length 64 |
from |
query | string (date-time) or null | no | |
to |
query | string (date-time) or null | no |
| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json: HealthReportOut |
| 422 | Validation Error | application/json: HTTPValidationError |
GET /api/v1/projects/{project_id}/telemetry-completeness
Section titled “GET /api/v1/projects/{project_id}/telemetry-completeness”Telemetry completeness
Spans stored in the window against the spans counted as lost: by the gateway, rejected at ingest, and dropped or failed in the SDK.
completeness is stored / (stored + every loss) as a decimal string to four places,
rounded down; null when nothing was stored and nothing lost. Losses are counted per hour, so
an hour that only partly overlaps the window counts whole. lower_bound is true when both
SDK failed and ingest rejections were counted, since a span the server rejected may be in
both. Counts above 2^53 - 1 are sent as 2^53 - 1.
| Parameter | In | Type | Required | Notes |
|---|---|---|---|---|
project_id |
path | string (uuid) | yes | |
from |
query | string (date-time) or null | no | |
to |
query | string (date-time) or null | no |
| Status | Description | Body |
|---|---|---|
| 200 | Successful Response | application/json: CompletenessOut |
| 422 | Validation Error | application/json: HTTPValidationError |