Public endpoints
No API key required: deployment information, the model catalogue with live statistics, rankings and self-serve signup.
API version 1.0.0
No API key required: deployment information, the model catalogue with live statistics, rankings and self-serve signup.
get/api/v1/catalogue
Catalogue
No authentication.
Responses
| 200 | Successful Response |
curl -s "$OSR_URL/api/v1/catalogue"post/api/v1/estimate
Estimate Public
Quote a request before sending it: tokens, cost per candidate and the recommended pick.
Works without a key (rate limited per client, no tenant rules) and with one (metered as
`estimate, workspace tenants and plan applied). monthly_requests` adds a monthly projection.
Requires an API key.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| x-osr-tenant | header | string | null |
Request bodyEstimateIn
| Field | Type | Default | Description |
|---|---|---|---|
| constraints | object | ||
| context | object | ||
| execute | boolean | false | |
| history | object<string>[] | ||
| kinds | string[] | null | ||
| monthly_requests | integer | null | ||
| objective | object<number> | ||
| output_tokens | integer | null | ||
| plan | boolean | false | |
| profile | object | ||
| text(required) | string | ||
| top_k | integer | 3 |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s -X POST "$OSR_URL/api/v1/estimate" \
-H "Authorization: Bearer $OSR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "constraints": {}, "context": {}, "history": [], "kinds": [], "monthly_requests": 1, "objective": {}, "output_tokens": 1, "profile": {} }'{
"constraints": {},
"context": {},
"history": [],
"kinds": [],
"monthly_requests": 1,
"objective": {},
"output_tokens": 1,
"profile": {}
}get/api/v1/info
Info
No authentication.
Responses
| 200 | Successful Response |
curl -s "$OSR_URL/api/v1/info"get/api/v1/llms
Llms
The reference LLM catalogue: real vendors, prices per million tokens, context windows, modalities.
Independent of what this deployment routes to; `routed_by lists the routing targets that
resolve to each model. Sorted by newest (default), name, price, price-desc,
context or intelligence`.
No authentication.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| q | query | string | "" | |
| vendor | query | string | null | ||
| modality | query | string | null | ||
| tools | query | boolean | null | ||
| reasoning | query | boolean | null | ||
| open_weights | query | boolean | null | ||
| free | query | boolean | null | ||
| sort | query | string | "newest" | |
| limit | query | integer | 500 | |
| offset | query | integer | 0 |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
curl -s "$OSR_URL/api/v1/llms?q=&sort=newest"get/api/v1/llms/{vendor}/{model}
Llm
One reference model with the routing targets that resolve to it and its vendor siblings.
No authentication.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| vendor(required) | path | string | ||
| model(required) | path | string |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
curl -s "$OSR_URL/api/v1/llms/<vendor>/<model>"get/api/v1/models
Models
No authentication.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| days | query | integer | 7 |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
curl -s "$OSR_URL/api/v1/models?days=7"get/api/v1/models/recommended
Models Recommended
Recommended models per use case (chat, code, reasoning, summaries, extraction, sensitive data). Each use case is quoted live against the catalogue: the router's pick, the cheapest capable target, the best quality and the fastest, with the reasons. Cached for a minute.
No authentication.
Responses
| 200 | Successful Response |
curl -s "$OSR_URL/api/v1/models/recommended"get/api/v1/models/{model_id}
Model
No authentication.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| model_id(required) | path | string | ||
| days | query | integer | 30 |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
curl -s "$OSR_URL/api/v1/models/<model_id>?days=30"get/api/v1/rankings
Rankings
No authentication.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| days | query | integer | 7 | |
| domain | query | string | null |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
curl -s "$OSR_URL/api/v1/rankings?days=7"post/api/v1/signup
Signup
No authentication.
Request bodySignupIn
| Field | Type | Default | Description |
|---|---|---|---|
| email(required) | string | ||
| name | string | "" | |
| password | string | null |
Responses
| 201 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
curl -s -X POST "$OSR_URL/api/v1/signup" \
-H "Content-Type: application/json" \
-d '{ "email": "ada@example.com" }'{
"email": "ada@example.com"
}get/api/v1/stats/public
Stats Public
No authentication.
Responses
| 200 | Successful Response |
curl -s "$OSR_URL/api/v1/stats/public"get/api/v1/status
Status
Readiness checks, uptime and the observability controls of this deployment (no key needed).
The same checks as `GET /readyz` with the edition, versions and tracing state added; the
status code is 503 while a check fails so status pages can poll it directly.
No authentication.
Responses
| 200 | Successful Response |
curl -s "$OSR_URL/api/v1/status"