For AI agents: markdown of this page — /docs-content-en/ai/models.md documentation index — /llms.txt

Models

Catalog of AI models available to the current API key. The catalog contents depend on the configured provider credentials: free Bitrix24 models are visible to everyone, the rest only to keys that have access to the provider credentials.

Scope: vibe:ai

List models

The response comes in raw OpenAI format.

The {success, data} envelope used across the other Vibecode endpoints — /v1/deals, /v1/tasks and others — is not present here.

This is done for compatibility with the OpenAI SDK. If you have a single client with an if (!response.success) check, add an exception for the AI Router.

GET /v1/models

Returns the catalog of AI models available to the current API key. The response format is fully compatible with GET /v1/models from the OpenAI API. Free Bitrix24 models are visible to everyone. Third-party provider models are visible only to keys that have access to the provider credentials.

Parameters

No request parameters.

Examples

curl — personal key

Terminal
curl https://vibecode.bitrix24.com/v1/models \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
curl https://vibecode.bitrix24.com/v1/models \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/models', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})

const { data } = await res.json()
data.forEach((m) => {
  console.log(`${m.id} — ${m.name}, context ${m.context_length}, price ${m.pricing.prompt}/${m.pricing.completion} Vibe credits per 1M tokens`)
})

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/models', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { data } = await res.json()
console.log('Models available:', data.length)

Response fields

Field Type Description
object string Always list
data array Array of models
data[].id string Model ID — use it in the model of a request to /v1/chat/completions
data[].object string Always model
data[].created number Unix timestamp of the model's registration in the Vibecode catalog (0 for platform models)
data[].owned_by string System name of the provider: bitrix, openai, anthropic, openrouter, google, etc. Platform models that we resell return vibecode.
data[].name string Display name of the model
data[].context_length number Maximum context size in tokens (input + output combined)
data[].max_output_tokens number Maximum tokens in the response
data[].pricing.prompt number Cost of 1M input tokens
data[].pricing.completion number Cost of 1M response tokens
data[].pricing.perCall number Per-call fee in Vibe credits. Present only when greater than 0
data[].pricing.perMinute number Per audio-minute fee in Vibe credits. Present only when greater than 0
data[].pricing.unit string Pricing unit: vibes — the platform's internal currency
data[].capabilities object Model capabilities: streaming, vision, reasoning, audio, transcription, tools, structured_outputs, embeddings

Response example

JSON
{
  "object": "list",
  "data": [
    {
      "id": "bitrix/bitrixgpt-5.5",
      "object": "model",
      "created": 0,
      "owned_by": "bitrix",
      "name": "BitrixGPT 5.5 (free)",
      "context_length": 262144,
      "max_output_tokens": 65536,
      "pricing": {"prompt": 0, "completion": 0, "unit": "vibes"},
      "capabilities": {"streaming": true, "vision": true, "structured_outputs": true}
    },
    {
      "id": "bitrix/bitrixgpt-5.5-thinking",
      "object": "model",
      "created": 0,
      "owned_by": "bitrix",
      "name": "BitrixGPT 5.5 Thinking (free)",
      "context_length": 262144,
      "max_output_tokens": 65536,
      "pricing": {"prompt": 0, "completion": 0, "unit": "vibes"},
      "capabilities": {"streaming": true, "vision": true, "reasoning": true, "structured_outputs": true}
    },
    {
      "id": "bitrix/bitrixgpt-5.5-agent",
      "object": "model",
      "created": 0,
      "owned_by": "bitrix",
      "name": "BitrixGPT 5.5 Agent",
      "context_length": 262144,
      "max_output_tokens": 65535,
      "pricing": {"prompt": 68.4, "completion": 342, "unit": "vibes"},
      "capabilities": {"streaming": true}
    }
  ]
}

Error response example

403 scope_missing — the API key has no vibe:ai scope:

JSON
{
  "error": {
    "message": "API key does not have the vibe:ai scope required for AI endpoints. Add vibe:ai scope to your API key in portal settings.",
    "type": "invalid_request_error",
    "code": "scope_missing"
  }
}

Errors

HTTP Code Description
403 scope_missing The API key is missing the vibe:ai scope
401 MISSING_API_KEY The X-Api-Key header was not provided
401 INVALID_API_KEY The key was not found or has been revoked
429 rate_limit_exceeded The request limit for AI endpoints has been exceeded. Time until reset is in the Retry-After header

The full list of common API errors — Errors.

Known specifics

Visibility depends on the configured credentials. The catalog shows only the models for which the current API key has access to provider credentials — shared across the whole platform, shared within the Bitrix24 account, or your personal BYOK. Bitrix24 models (bitrix/*) are available to everyone without connecting BYOK. If the model you need is not in the list — connect your own key.

Models in DEPRECATED status remain in the list. They are marked as deprecated, but requests to them still work — the Deprecation and Sunset headers will be returned. Models in DISABLED status are hidden from the list, but when explicitly specified in model they are transparently redirected to the successor model.

Prices are in Vibe credits per one million tokens. The pricing.unit: "vibes" field explicitly marks the currency so that an external client can programmatically check the unit of measure. Vibe credits are the platform's internal currency; the balance is topped up in your account.

Not all models are billed by tokens. For a speech-recognition model, prompt and completion are 0, and billing is driven by the perMinute field per audio minute and perCall per call. Zero prompt and completion on their own do not mean the call is free — check all four pricing fields.

See also