List available models
GET /v1/models
Returns a list of all published models in OpenAI-compatible format. Requires an API key, sent as Authorization: Bearer <key> or in the x-api-key header; when both are sent, Authorization is used. OpenAI-compatible SDKs send it automatically. The response is sent with Cache-Control: private, max-age=300 and an ETag; send If-None-Match to receive 304 Not Modified. Browser requests may send the x-api-key and anthropic-version headers.
Authentication
Bearer API key required.
Responses
HTTP 200
Model list retrieved successfully.
application/json
ModelListResponse{
"object": "list",
"data": [
{
"id": "deepseek-ai/DeepSeek-V4-Pro",
"name": "DeepSeek-V4-Pro",
"object": "model",
"created": 1780741344,
"owned_by": "deepseek-ai",
"type": "text-generation",
"is_replaced": false,
"tool_choice": {
"required": false,
"function": false
}
},
{
"id": "Qwen/Qwen3-Embedding-8B",
"name": "Qwen3-Embedding-8B",
"object": "model",
"created": 1781012488,
"owned_by": "Qwen",
"type": "embeddings",
"is_replaced": false
}
]
}HTTP 401
Missing, empty, or revoked API key.
This response covers three distinct codes depending on the authentication path:
- missing_api_key: Authorization header absent or Bearer token is empty. On GET /v1/models, GET /v1/models/{model}, GET /v1/me and GET /v1/me/avatar, which also accept the x-api-key header, the message is "Provide your API key as: Authorization: Bearer sk-devup-..., or in the x-api-key header."
- invalid_api_key: Key not found, deactivated, or not valid.
- token_revoked: The scoped JWT credential has been explicitly revoked.
application/json
ErrorResponseAuthorization header absent or empty Bearer token
{
"error": {
"message": "Provide your API key as: Authorization: Bearer sk-devup-...",
"type": "devup_error",
"code": "missing_api_key"
}
}Key not found, deactivated, or not valid
{
"error": {
"message": "The API key provided is invalid or has been deactivated.",
"type": "devup_error",
"code": "invalid_api_key"
}
}Scoped JWT credential has been explicitly revoked (scoped-token auth only)
{
"error": {
"message": "This scoped token has been revoked.",
"type": "devup_error",
"code": "token_revoked"
}
}HTTP 404
Endpoint not found.
HTTP 429
Too many requests. error.code is rate_limit_exceeded (your account's per-minute limit), model_at_capacity (the model is momentarily at capacity; Retry-After: 5 and retry-after-ms: 5000, no X-RateLimit-* headers; the OpenAI and Anthropic SDKs retry it automatically), concurrency_limit_exceeded, tpm_limit_exceeded, or flex_capacity_unavailable. Wait the number of seconds in Retry-After before retrying.
application/json
ErrorResponseYour account's per-minute limit is reached
{
"error": {
"message": "Rate limit exceeded. Please slow down your requests and try again shortly.",
"type": "devup_error",
"code": "rate_limit_exceeded"
}
}The model is momentarily at capacity
{
"error": {
"message": "This model is currently at capacity. Retry in a few seconds.",
"type": "devup_error",
"code": "model_at_capacity"
}
}