GET/api/v1/models
Free & ProFree basic projection or Pro full records. Search canonical models and their exact aliases. Use the returned model id for prices and benchmark results.
Parameters
| Name / location | Type / required | Default | Description & constraints |
|---|---|---|---|
qquery | stringOptional | None | Case-insensitive substring search; not a regular expression.Minimum length: 1 · Maximum length: 120 · Pattern: ^[^\u0000-\u001f\u007f]+$ |
limitquery | integerOptional | 20 | Minimum: 1 · Maximum: 100 |
offsetquery | integerOptional | 0 | Minimum: 0 · Maximum: 100000 |
generationquery | stringOptional | None | Pin pagination to generatedAt. A changed generation returns snapshot_changed; restart at offset 0.Format: date-time · Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ |
modalityquery | stringOptional | None | Allowed: "llm", "image", "video", "audio", "3d", "embedding", "rerank", "decision" |
developerquery | stringOptional | None | Minimum length: 1 · Maximum length: 160 · Pattern: ^[^\u0000-\u001f\u007f]+$ |
providerIdquery | stringOptional | None | Pro required. Exact case-sensitive identifier. Model detail also accepts an exact slug or unambiguous source-qualified alias.Minimum length: 1 · Maximum length: 512 · Pattern: ^[^\u0000-\u001f\u007f]+$ |
capabilityquery | stringOptional | None | Allowed: "tools", "structured-output", "vision", "audio-input", "transcription", "video-input", "reasoning", "prompt-cache", "open-weights" |
Request example · curl
Set your account key first.
curl -sS 'https://someaistuff.com/api/v1/models?limit=20' \
-H "Authorization: Bearer $SOME_AI_STUFF_API_KEY"Responses
200Authenticated snapshot records. Free model responses use BasicModel and omit premium metadata; Pro responses retain full evidence. Null means unknown.
Content type: application/json
Schema: object | object
Free · BasicModel
apiVersionrequiredstringValue: "1"
generatedAtrequiredstringcollectionrequiredstringValue: "models"
datarequiredBasicModel[]BasicModel →paginationrequiredobject
Pro · Model
Complete response schema (JSON)
{
"oneOf": [
{
"type": "object",
"properties": {
"apiVersion": {
"const": "1"
},
"generatedAt": {
"type": "string"
},
"collection": {
"const": "models"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BasicModel"
}
},
"pagination": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"type": "integer"
},
"total": {
"type": "integer"
},
"nextOffset": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"next": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"nextQuery": {
"anyOf": [
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"q": {
"description": "Case-insensitive substring search over basic model ID, name, developer, modality and capabilities only.",
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[^\\u0000-\\u001f\\u007f]+$"
},
"limit": {
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"generation": {
"description": "Pin pagination to generatedAt. A changed generation returns snapshot_changed; restart at offset 0.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"modality": {
"type": "string",
"enum": [
"llm",
"image",
"video",
"audio",
"3d",
"embedding",
"rerank",
"decision"
]
},
"developer": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"pattern": "^[^\\u0000-\\u001f\\u007f]+$"
},
"capability": {
"type": "string",
"enum": [
"tools",
"structured-output",
"vision",
"audio-input",
"transcription",
"video-input",
"reasoning",
"prompt-cache",
"open-weights"
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"limit",
"offset",
"total",
"nextOffset",
"next",
"nextQuery"
],
"additionalProperties": true
}
},
"required": [
"apiVersion",
"generatedAt",
"collection",
"data",
"pagination"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"apiVersion": {
"const": "1"
},
"generatedAt": {
"type": "string"
},
"snapshotVersion": {
"const": 2
},
"storage": {
"type": "object",
"properties": {
"origin": {
"enum": [
"R2",
"MEMORY",
"PREVIOUS",
"BUNDLED"
]
},
"degraded": {
"type": "boolean"
}
},
"required": [
"origin",
"degraded"
],
"additionalProperties": true
},
"sources": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Source"
}
},
"collection": {
"const": "models"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Model"
}
},
"pagination": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"type": "integer"
},
"total": {
"type": "integer"
},
"nextOffset": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"next": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"nextQuery": {
"anyOf": [
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"q": {
"description": "Case-insensitive substring search; not a regular expression.",
"type": "string",
"minLength": 1,
"maxLength": 120,
"pattern": "^[^\\u0000-\\u001f\\u007f]+$"
},
"limit": {
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 100
},
"offset": {
"default": 0,
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"generation": {
"description": "Pin pagination to generatedAt. A changed generation returns snapshot_changed; restart at offset 0.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"modality": {
"type": "string",
"enum": [
"llm",
"image",
"video",
"audio",
"3d",
"embedding",
"rerank",
"decision"
]
},
"developer": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"pattern": "^[^\\u0000-\\u001f\\u007f]+$"
},
"providerId": {
"type": "string",
"minLength": 1,
"maxLength": 512,
"pattern": "^[^\\u0000-\\u001f\\u007f]+$",
"description": "Exact case-sensitive identifier. Model detail also accepts an exact slug or unambiguous source-qualified alias."
},
"capability": {
"type": "string",
"enum": [
"tools",
"structured-output",
"vision",
"audio-input",
"transcription",
"video-input",
"reasoning",
"prompt-cache",
"open-weights"
]
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"limit",
"offset",
"total",
"nextOffset",
"next",
"nextQuery"
],
"additionalProperties": true
}
},
"required": [
"apiVersion",
"generatedAt",
"storage",
"sources",
"collection",
"data",
"pagination"
],
"additionalProperties": true
}
]
}400Error; no data returned
Content type: application/json
Schema: ErrorError →
Complete response schema (JSON)
{
"$ref": "#/components/schemas/Error"
}401Account API key required, invalid, expired or revoked. Cookies do not grant machine access.
Content type: application/json
Schema: ErrorError →
Complete response schema (JSON)
{
"$ref": "#/components/schemas/Error"
}403Pro subscription or verified account required.
Content type: application/json
Schema: ErrorError →
Complete response schema (JSON)
{
"$ref": "#/components/schemas/Error"
}404Error; no data returned
Content type: application/json
Schema: ErrorError →
Complete response schema (JSON)
{
"$ref": "#/components/schemas/Error"
}405Error; no data returned
Content type: application/json
Schema: ErrorError →
Complete response schema (JSON)
{
"$ref": "#/components/schemas/Error"
}409snapshot_changed: restart pagination
Content type: application/json
Schema: ErrorError →
Complete response schema (JSON)
{
"$ref": "#/components/schemas/Error"
}413Request or result exceeds bounds
Content type: application/json
Schema: ErrorError →
Complete response schema (JSON)
{
"$ref": "#/components/schemas/Error"
}429Account quota exceeded; shared across keys and API/MCP. Honor Retry-After.
Header: Retry-After · integer. Minimum: 1
Content type: application/json
Schema: ErrorError →
Complete response schema (JSON)
{
"$ref": "#/components/schemas/Error"
}500Error; no data returned
Content type: application/json
Schema: ErrorError →
Complete response schema (JSON)
{
"$ref": "#/components/schemas/Error"
}503Account or subscription service unavailable; access fails closed.
Content type: application/json
Schema: ErrorError →
Complete response schema (JSON)
{
"$ref": "#/components/schemas/Error"
}