API reference
This reference is generated from the committed OpenAPI document (version 0.1.0). The same document is served by every instance at /api/openapi.json, with an interactive explorer at /api/docs, and a copy is published here: openapi.json.
Dashboard routes live under /api/v1. Telemetry ingestion (/v1/traces, /v1/otlp/traces) is versioned on its own. Errors, authentication, rate limits and idempotency keys are described in API conventions.
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/annotation-queues |
List annotation queues |
POST /api/v1/projects/{project_id}/annotation-queues |
Add a queue |
DELETE /api/v1/projects/{project_id}/annotation-queues/{queue_id} |
Delete a queue |
GET /api/v1/projects/{project_id}/annotation-queues/{queue_id} |
Get a queue |
POST /api/v1/projects/{project_id}/annotation-queues/{queue_id}/claim |
Claim the next item |
GET /api/v1/projects/{project_id}/annotation-queues/{queue_id}/items |
List a queue’s items |
POST /api/v1/projects/{project_id}/annotation-queues/{queue_id}/items |
Queue traces |
POST /api/v1/projects/{project_id}/annotation-queues/{queue_id}/items/{item_id}/complete |
Complete an item |
POST /api/v1/projects/{project_id}/annotation-queues/{queue_id}/items/{item_id}/release |
Release an item |
POST /api/v1/projects/{project_id}/annotation-queues/{queue_id}/items/{item_id}/skip |
Skip an item |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/attribution |
Read Attribution |
| Operation | Summary |
|---|---|
GET /api/v1/orgs/{org_id}/billing-sources |
List billing sources |
POST /api/v1/orgs/{org_id}/billing-sources |
Add a billing source |
DELETE /api/v1/orgs/{org_id}/billing-sources/{source_id} |
Delete a billing source |
GET /api/v1/orgs/{org_id}/billing-sources/{source_id} |
Get a billing source |
PATCH /api/v1/orgs/{org_id}/billing-sources/{source_id} |
Edit a billing source |
GET /api/v1/orgs/{org_id}/billing-sources/{source_id}/reconciliation |
Reconcile a billing source with Spanlight’s figures |
GET /api/v1/orgs/{org_id}/billing-sources/{source_id}/reconciliation.csv |
Download a billing source’s reconciliation as CSV |
POST /api/v1/orgs/{org_id}/billing-sources/{source_id}/refresh |
Fetch a billing source now |
POST /api/v1/orgs/{org_id}/billing-sources/{source_id}/rotate |
Replace a source’s admin key |
GET /api/v1/orgs/{org_id}/billing-sources/{source_id}/runs |
List a source’s runs |
POST /api/v1/orgs/{org_id}/billing-sources/{source_id}/upload |
Upload a billing source’s cost CSV |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/budgets |
List budgets |
POST /api/v1/projects/{project_id}/budgets |
Add a budget |
DELETE /api/v1/projects/{project_id}/budgets/{budget_id} |
Delete a budget |
GET /api/v1/projects/{project_id}/budgets/{budget_id} |
Get a budget |
PATCH /api/v1/projects/{project_id}/budgets/{budget_id} |
Edit a budget |
| Operation | Summary |
|---|---|
POST /api/v1/demo/session |
Start Demo Session |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/evaluators |
List evaluators |
POST /api/v1/projects/{project_id}/evaluators |
Add an evaluator |
DELETE /api/v1/projects/{project_id}/evaluators/{evaluator_id} |
Delete an evaluator |
GET /api/v1/projects/{project_id}/evaluators/{evaluator_id} |
Get an evaluator |
PATCH /api/v1/projects/{project_id}/evaluators/{evaluator_id} |
Edit an evaluator |
GET /api/v1/projects/{project_id}/evaluators/{evaluator_id}/budget |
Get an evaluator’s budget |
GET /api/v1/projects/{project_id}/evaluators/{evaluator_id}/runs |
List evaluator runs |
POST /api/v1/projects/{project_id}/evaluators/{evaluator_id}/test |
Test an evaluator on a trace |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/experiments |
List experiments |
POST /api/v1/projects/{project_id}/experiments |
Add an experiment |
GET /api/v1/projects/{project_id}/experiments/{experiment_id} |
Get an experiment |
GET /api/v1/projects/{project_id}/experiments/{experiment_id}/runs |
List runs |
POST /api/v1/projects/{project_id}/experiments/{experiment_id}/runs |
Run an experiment |
GET /api/v1/projects/{project_id}/experiments/{experiment_id}/runs/{run_a}/compare/{run_b} |
Compare two runs |
GET /api/v1/projects/{project_id}/experiments/{experiment_id}/runs/{run_id} |
Get a run |
GET /api/v1/projects/{project_id}/experiments/{experiment_id}/runs/{run_id}/items |
List a run’s items |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/exports |
List a project’s exports |
POST /api/v1/projects/{project_id}/exports |
Request an export |
GET /api/v1/projects/{project_id}/exports/{export_id} |
Get one export |
| Operation | Summary |
|---|---|
GET /health/live |
Live |
GET /health/ready |
Ready |
| Operation | Summary |
|---|---|
POST /v1/otlp/traces |
Ingest Otlp |
POST /v1/traces |
Ingest Native |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/keys |
List Keys |
POST /api/v1/projects/{project_id}/keys |
Create Key |
DELETE /api/v1/projects/{project_id}/keys/{key_id} |
Revoke Key |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/metrics/models |
Models |
GET /api/v1/projects/{project_id}/metrics/overview |
Overview |
GET /api/v1/projects/{project_id}/metrics/timeseries |
Timeseries |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/playground/replays |
List replays |
POST /api/v1/projects/{project_id}/playground/replays |
Replay a stored request |
GET /api/v1/projects/{project_id}/playground/replays/budget |
Read the replay budget |
POST /api/v1/projects/{project_id}/playground/runs |
Run prompts in the playground |
GET /api/v1/projects/{project_id}/traces/{trace_id}/spans/{span_id}/replay-source |
Read what a replay of a span would send |
| Operation | Summary |
|---|---|
GET /api/v1/orgs/{org_id}/price-overrides |
List price overrides |
POST /api/v1/orgs/{org_id}/price-overrides |
Add a price override |
DELETE /api/v1/orgs/{org_id}/price-overrides/{override_id} |
Delete a price override |
GET /api/v1/prices |
Get Prices |
GET /api/v1/projects/{project_id}/unpriced-models |
Get Unpriced Models |
| Operation | Summary |
|---|---|
GET /api/v1/orgs/{org_id}/projects |
List Projects |
POST /api/v1/orgs/{org_id}/projects |
Create Project |
DELETE /api/v1/projects/{project_id} |
Delete Project |
GET /api/v1/projects/{project_id} |
Get Project |
PATCH /api/v1/projects/{project_id} |
Update Project |
GET /api/v1/projects/{project_id}/onboarding |
Onboarding Status |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/prompt-versions/{version_id} |
Get a prompt version by id |
GET /api/v1/projects/{project_id}/prompts |
List prompts |
POST /api/v1/projects/{project_id}/prompts |
Add a prompt |
DELETE /api/v1/projects/{project_id}/prompts/{name} |
Delete a prompt |
GET /api/v1/projects/{project_id}/prompts/{name} |
Get a prompt |
DELETE /api/v1/projects/{project_id}/prompts/{name}/labels/{label} |
Remove a label |
PUT /api/v1/projects/{project_id}/prompts/{name}/labels/{label} |
Point a label at a version |
GET /api/v1/projects/{project_id}/prompts/{name}/versions |
List prompt versions |
POST /api/v1/projects/{project_id}/prompts/{name}/versions |
Add a prompt version |
GET /api/v1/projects/{project_id}/prompts/{name}/versions/{version} |
Get a prompt version |
GET /api/v1/projects/{project_id}/prompts/{name}/versions/{version}/usage |
Get a prompt version’s usage |
GET /v1/prompts/{name} |
Read a prompt version |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/provider-incidents |
Provider incidents |
GET /api/v1/projects/{project_id}/providers/errors/samples |
Sample failed calls |
GET /api/v1/projects/{project_id}/providers/errors/timeseries |
Errors by class over time |
GET /api/v1/projects/{project_id}/providers/health |
Provider health |
GET /api/v1/projects/{project_id}/telemetry-completeness |
Telemetry completeness |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/releases |
List Releases |
GET /api/v1/projects/{project_id}/releases/compare |
Compare Releases |
GET /api/v1/projects/{project_id}/releases/failure-categories |
Failure Category Rates |
| Operation | Summary |
|---|---|
DELETE /api/v1/projects/{project_id}/review-policy |
Delete the review policy |
GET /api/v1/projects/{project_id}/review-policy |
Get the review policy |
PUT /api/v1/projects/{project_id}/review-policy |
Set the review policy |
POST /api/v1/projects/{project_id}/review-policy/runs |
Select a day now |
GET /api/v1/projects/{project_id}/review-policy/selections |
List selections |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/score-configs |
List score configs |
POST /api/v1/projects/{project_id}/score-configs |
Add a score config |
DELETE /api/v1/projects/{project_id}/score-configs/{config_id} |
Delete a score config |
PATCH /api/v1/projects/{project_id}/score-configs/{config_id} |
Edit a score config |
POST /api/v1/projects/{project_id}/score-configs/failure-category |
Add the failure-category config |
DELETE /api/v1/projects/{project_id}/scores/{score_id} |
Delete a score |
GET /api/v1/projects/{project_id}/traces/{trace_id}/scores |
List a trace’s scores |
POST /api/v1/projects/{project_id}/traces/{trace_id}/scores |
Score a trace |
POST /v1/scores |
Ingest Scores |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/filters |
List Filter Values |
GET /api/v1/projects/{project_id}/sessions |
List Sessions |
GET /api/v1/projects/{project_id}/traces |
List Traces |
GET /api/v1/projects/{project_id}/traces/{trace_id} |
Get Trace |
GET /api/v1/projects/{project_id}/traces/{trace_id}/spans/{span_id} |
Get Span |
GET /api/v1/projects/{project_id}/traces/{trace_id}/spans/{span_id}/cost-explanation |
Explain a span’s cost |
GET /api/v1/projects/{project_id}/traces/compare |
Compare Traces |
| Operation | Summary |
|---|---|
GET /api/v1/projects/{project_id}/users |
List Users |
GET /api/v1/projects/{project_id}/users/{external_user_id} |
User Detail |