Skip to content
Try chatGet API key

List available models

GET
/models
curl --request GET \
--url 'https://api.bayle.ai/models?type=asr' \
--header 'Accept-Language: pt-BR'

Lists the models available through Bayle, newest capabilities included. Model identifiers are opaque strings: pass one back verbatim as the model field of a generation request rather than parsing or normalizing it. No credential is required to call this endpoint.

Accept-Language
string
Example
pt-BR

Chooses the language of any error message in this request’s response. A tag beginning with the two letters pt, in any case, selects Brazilian Portuguese; anything else, including an absent header, selects English. The tag may appear anywhere in a multi-tag header, for example fr-FR;q=0.9,pt;q=0.5,en;q=0.3. Quality values are accepted but ignored, since this is a presence check rather than weighted negotiation.

type
string
Allowed values: asr code embedding image inpaint music text tts upscale video all

Restricts the list to a single class of model. Omit it, or pass all, to receive every model. An unrecognized value is rejected through the standard error envelope described below.

The list of available models.

Media typeapplication/json
object
object

Always list.

string
type

The class of model this list was filtered to.

string
data

One entry per available model.

Array<object>
object
id

The model identifier. Pass this value back verbatim as the model field of a generation request.

string
object
string
created

When the model was added, as a Unix timestamp in seconds.

integer
type

The model’s class, matching the values accepted by the type query parameter.

string
context_length

Maximum input tokens, when available for a given model. Applies to text models only.

number
model_spec

Details about the model. Only capabilities is described here; other keys may appear.

object
capabilities

A representative set of capability flags, when available for a given model. Additional flags may appear beyond the ones listed here.

object
supportsFunctionCalling
boolean
supportsVision
boolean
supportsVideoInput
boolean
supportsMultipleImages
boolean
supportsReasoning

Whether the model can think before it answers. A model can reason without taking a reasoning_effort level.

boolean
supportsReasoningEffort

Whether the model takes a reasoning_effort level on chat completions.

boolean
reasoningEffortOptions

The reasoning_effort levels this model lists. Absent for a model that does not take a level.

Array<string>
Allowed values: none minimal low medium high xhigh max
defaultReasoningEffort

The level this model uses when a request leaves reasoning_effort out. It differs by model: many default to low, others to medium, high, xhigh or max. Absent for a model that does not take a level.

string
supportsLogProbs
boolean
supportsResponseSchema
boolean
key
additional properties
any
key
additional properties
any
key
additional properties
any
key
additional properties
any
Examples

Text models (`?type=text`)

{
"object": "list",
"type": "text",
"data": [
{
"id": "qwen3-5-35b-a3b",
"object": "model",
"type": "text",
"created": 1771977600,
"context_length": 256000,
"model_spec": {
"name": "Qwen 3.5 35B A3B",
"description": "Qwen 3.5 35B A3B is a highly efficient MoE model with 35B total parameters and only 3B active parameters, excelling at reasoning, coding, and general knowledge tasks.",
"pricing": {
"input": {
"usd": 0.15,
"diem": 0.15
},
"cache_input": {
"usd": 0.05,
"diem": 0.05
},
"output": {
"usd": 1,
"diem": 1
}
},
"availableContextTokens": 256000,
"maxCompletionTokens": 16384,
"capabilities": {
"optimizedForCode": true,
"quantization": "not-available",
"supportsAudioInput": false,
"supportsFunctionCalling": true,
"supportsLogProbs": true,
"supportsMultipleImages": true,
"maxImages": 10,
"supportsReasoning": true,
"supportsReasoningEffort": true,
"reasoningEffortOptions": [
"none",
"low",
"medium",
"high"
],
"defaultReasoningEffort": "low",
"supportsResponseSchema": true,
"supportsTeeAttestation": false,
"supportsE2EE": false,
"supportsVideoInput": true,
"supportsVision": true,
"supportsWebSearch": true,
"supportsXSearch": false
},
"constraints": {
"temperature": {
"default": 1
},
"top_p": {
"default": 0.95
},
"repetition_penalty": {
"default": 1
}
},
"offline": false,
"privacy": "private",
"traits": []
}
},
{
"id": "mistral-small-3-2-24b-instruct",
"object": "model",
"type": "text",
"created": 1768435200,
"context_length": 256000,
"model_spec": {
"name": "Mistral Small 3.2 24B Instruct",
"description": "Mistral Small 3.2 is a 24B parameter model optimized for efficiency and performance. Ideal for general-purpose tasks with balanced speed and capability.",
"pricing": {
"input": {
"usd": 0.09375,
"diem": 0.09375
},
"output": {
"usd": 0.25,
"diem": 0.25
}
},
"availableContextTokens": 256000,
"maxCompletionTokens": 16384,
"capabilities": {
"optimizedForCode": false,
"quantization": "fp8",
"supportsAudioInput": false,
"supportsFunctionCalling": true,
"supportsLogProbs": false,
"supportsMultipleImages": true,
"maxImages": 10,
"supportsReasoning": false,
"supportsReasoningEffort": false,
"supportsResponseSchema": true,
"supportsTeeAttestation": false,
"supportsE2EE": false,
"supportsVideoInput": false,
"supportsVision": true,
"supportsWebSearch": true,
"supportsXSearch": false
},
"offline": false,
"privacy": "private",
"traits": []
}
}
]
}
Content-Language
string
Allowed values: en pt-BR

Confirms which of the two supported locales, en or pt-BR, this response was rendered in, so a caller can detect it without reading the message text. Present on every response, success and error alike. On a chat completions stream it is committed together with the initial 200, so it appears whichever way the stream ends.

The request failed. The body uses the shared error envelope, rendered in the locale negotiated through Accept-Language. type and code identify the specific failure when Bayle recognizes it, and fall back to type: api_error with a null code when it does not. Where a failure carries a meaningful status code, Bayle preserves it; a transport failure, such as a timeout or a refused connection, is reported as 502. The exception is an operation that documents its own time limit, which reports running past it as 504 with the request_timeout code.

Media typeapplication/json

Bayle’s OpenAI-shaped error envelope, shared by every error response this API returns.

object
error
required
object
message
required

A human-readable description of the failure, in the negotiated locale. See the Accept-Language request parameter for how that locale is chosen, and the Content-Language response header for which one was served.

string
type
required

OpenAI’s error type vocabulary, for example api_error, authentication_error, invalid_request_error, or rate_limit_error, matching the class of failure so an OpenAI SDK’s exception mapping keeps working.

string
param
required

The request field the failure names, when it names one. Null when the failure is not field-specific, as with authentication or rate limiting.

string
nullable
code
required

Bayle’s semantic error code, reusing OpenAI’s vocabulary where an equivalent exists, for example invalid_api_key or rate_limit_exceeded. Null when Bayle could not identify the specific failure; the envelope is still valid and carries a generic message. The full list lives in Bayle’s error reference rather than being enumerated here.

string
nullable
Examples

400: a missing or invalid parameter, for example an unknown `type` on `GET /models`, no `input` on `POST /embeddings`, `n` above 1 or an unlisted `size` on `POST /images/generations`, a numeric or unlisted `duration` on the video endpoints, or no `queue_id`

{
"error": {
"message": "Bayle could not process this request because one or more parameters are invalid.",
"type": "invalid_request_error",
"param": null,
"code": "invalid_request"
}
}
Content-Language
string
Allowed values: en pt-BR

Confirms which of the two supported locales, en or pt-BR, this response was rendered in, so a caller can detect it without reading the message text. Present on every response, success and error alike. On a chat completions stream it is committed together with the initial 200, so it appears whichever way the stream ends.