BazaarLink предоставляет одну OpenAI-совместимую схему запросов и ответов для всех моделей и поставщиков, поэтому вы можете интегрировать один раз и переключать модели без переписывания приложения.
OpenAPI Спецификация
Полная версия BazaarLink API документирована в спецификации OpenAPI. Вы можете получить к нему доступ в формате YAML или JSON:
Используйте эти спецификации с пользовательским интерфейсом Swagger, Postman или любым генератором кода, совместимым с OpenAPI, для изучения API или создания клиентских библиотек.
Запросы
Формат запроса на завершение работ
Тело запроса на завершение чата отправляется на следующую конечную точку:
Заставьте модель возвращать действительный JSON, соответствующий схеме. Это важно для создания надежных приложений, которые программно анализируют выходные данные модели.
json_object — базовый режим JSON; модель возвращает действительный JSON.
json_schema — режим строгой схемы; выходные данные модели должны соответствовать предоставленной схеме JSON.
Плагины
BazaarLink перенаправляет массив плагинов на выбранный восходящий маршрут. Доступность плагина зависит от выбранной модели и провайдера; веб-плагин также включен в варианте модели :online.
Идентифицируйте свое приложение в заголовках запросов, чтобы обеспечить отслеживание использования, видимость информационной панели и детальную аналитику.
Добавьте частичное сообщение помощника в качестве последнего элемента, чтобы запросить продолжение маршрутов совместимой модели.
Как это работает
BazaarLink сохраняет и пересылает последнее сообщение помощника. Поведение продолжения реализуется выбранной восходящей моделью и поставщиком, поэтому оно не гарантируется на каждом маршруте.
TypeScript
1
2
3
4
5
6
7
8
const response = await client.chat.completions.create({
model: "anthropic/claude-sonnet-4.6",
messages: [
{ role: "user", content: "What is the meaning of life?" },
// Intentional partial response; compatible routes continue from here.
{ role: "assistant", content: "My best answer is" }
]
});
Ответы
BazaarLink нормализует ответы завершения разных моделей и поставщиков в одну форму, совместимую с OpenAI.
Формат ответа на завершение
Поле выбора всегда представляет собой массив. Потоковые ответы используют дельту; непотоковые ответы используют message. Подробная информация об использовании и стоимости возвращается, когда она доступна.
finish_reason использует нормализованные значения, такие как остановка, длина, вызовы_инструментов, фильтр_содержимого и ошибка. Native_finish_reason сохраняет исходное значение поставщика.
Получение подробной статистики для одного завершения по идентификатору поколения (из идентификатора ответа chat/completions или заголовка потоковой передачи x-bz-gen-id).
Основная конечная точка. Совместим с OpenAI Chat Completions API.
POST/api/v1/chat/completions
Тело запроса
modelобязательно
string
Идентификатор модели, например. «openai/gpt-4o» или «anthropic/claude-3.5-sonnet»
messagesобязательно
Message[]
Масив объектов сообщений с ролью и содержимым.
stream
boolean
Если true, возвращает поток событий, отправленных сервером. По умолчанию: ложь
temperature
number
Температура отбора проб 0–2. Выше = более случайно. По умолчанию: 1
max_tokens
integer
Максимальное количество токенов для генерации
max_completion_tokens
integer
Псевдоним для max_tokens (совместим с OpenAI серии o). Оба принимаются; то, что предусмотрено, вступает в силу
top_p
number
Масса вероятности выборки ядра. По умолчанию: 1
top_k
integer
Ограничить выбор жетонов до K. 0 = отключено (учитывать все). По умолчанию: 0
frequency_penalty
number
Наказание повторяющихся токенов. Диапазон: [-2, 2]. По умолчанию: 0
presence_penalty
number
Назначать штрафы за токены в зависимости от присутствия. Диапазон: [-2, 2]. По умолчанию: 0
repetition_penalty
number
Уменьшить повторение входных токенов. Диапазон: (0, 2]. По умолчанию: 1.
min_p
number
Минимальная вероятность относительно верхнего токена. Диапазон: [0, 1]. По умолчанию: 0
top_a
number
Динамический топ-P на основе токена с наибольшей вероятностью. Диапазон: [0, 1]. По умолчанию: 0
seed
integer
Целочисленное начальное значение для детерминированной выборки. Не гарантируется для всех моделей
n
integer
Количество завершений, которые нужно сгенерировать. По умолчанию: 1
user
string
Идентификатор конечного пользователя для мониторинга и обнаружения злоупотреблений. На биллинг не влияет. Только модели семейства OpenAI — см. примечание ниже.
stop
string | string[]
Stop-последовательности — генерация останавливается при обнаружении
logit_bias
object
Сопоставьте идентификаторы токенов со значениями смещения [-100, 100], добавленными перед выборкой. Только модели семейства OpenAI — см. примечание ниже.
logprobs
boolean
Вернуть вероятности журнала для каждого выходного токена. Только модели семейства OpenAI — см. примечание ниже.
top_logprobs
integer
Количество наиболее вероятных токенов для каждой позиции (требуется logprobs: true). Диапазон: 0–20. Только модели семейства OpenAI — см. примечание ниже.
tools
Tool[]
Список инструментов (функций), которые может вызывать модель
tool_choice
string | object
Использование инструмента управления: «авто», «нет» или конкретный инструмент.
parallel_tool_calls
boolean
Включить параллельный вызов функций при наличии инструментов. По умолчанию: правда. Только модели семейства OpenAI — см. примечание ниже.
response_format
object
Force структурированный вывод JSON. См. раздел «Структурированный вывод».
structured_outputs
boolean
Запросите строгий вывод, соответствующий схеме JSON, у поставщиков, которые его поддерживают. Прошло как есть
reasoning
object
Конфигурация reasoning/thinking, специфичная для поставщика. Прошло как есть
reasoning_effort
string
OpenAI Усилие рассуждения в стиле o-серии: «низкое», «среднее» или «высокое». Прошло как есть
transforms
string[]
Message преобразуется для применения, например ["середина"]. Пропустить автоматическое применение к моделям с контекстом ≤8 тыс.
models
string[]
Резервный список моделей — BazaarLink пробует каждую по порядку в случае сбоя основной
route
string
Дополнительное поле совместимости маршрутизации — большинству пользователей это не нужно. Используйте «модели» в качестве запасного варианта.
provider
object
Расширенные настройки маршрутизации — большинству пользователей это не нужно.
user, logprobs, top_logprobs, logit_bias и Parallel_tool_calls поддерживаются только моделями семейства OpenAI.
Эти пять параметров удаляются из восходящего запроса всякий раз, когда решенная модель не распознается как собственная модель OpenAI — отправка их в anthropic/claude-*, google/gemini-* или любую другую цель, отличную от OpenAI, возвращает 200 с параметром. молча игнорируется, это не ошибка. Если вы устанавливаете один из них, а эффект не отображается, проверьте, является ли целевая модель OpenAI.
BazaarLink нормализует ровно два поля — модель и удаление поля поставщика — и пересылает остальную часть восходящего ответа как есть. Такие поля, как Native_finish_reason, system_fingerprint и Reasoning, присутствуют только тогда, когда их заполняет конкретный вышестоящий поставщик; не полагайтесь на их присутствие в каждой модели. Usage.cost является исключением: это всегда собственная сумма settled/billed settled/billed, а не значение, передаваемое из восходящего потока.
BazaarLink предлагает два пути создания изображений: (A) /v1/chat/дополнения с модальностями: ["image"] — собственный путь, поддерживает потоковую передачу SSE и смешанный вывод текста и изображений; рекомендуется для новых интеграций. (B) /v1/images/generations — OpenAI DALL·E-совместимая форма запроса, но ответы представляют собой потоки событий SSE (необходимы для медленных моделей, чтобы избежать тайм-аута восходящего потока в 100 секунд). Оба пути отправляют один и тот же протокол событий SSE — выбор конечной точки является исключительно предпочтением формы запроса. Изображение EDITING (изменение существующего изображения) использует POST /v1/images/edits — OpenAI images.edit совместим, multipart/form-data с вашими исходными изображениями. Модели с возможностью редактирования имеют модальность текст+изображение->изображение (например, qwen/qwen-image-edit); Модели чистого поколения — это текст->изображение — проверьте модальность каждой модели в GET/v1/models.
Response format
/api/v1/images/generations возвращает OpenAI-совместимую синхронизацию JSON по умолчанию (с 25 июля 2026 г.) — client.images.generate() работает без оболочки. Passstream: значение true, чтобы вместо этого выбрать поток событий SSE, который обеспечивает прогресс для моделей с длительным временем генерации.
A. /v1/chat/completions (родной, рекомендуется)
POST/api/v1/chat/completions
The canonical streaming path. Recommended for any new integration.
1
2
3
4
5
6
7
8
9
curl -N https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer $BL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.4-image-2",
"messages": [{"role":"user","content":"a red cat on a sofa"}],
"modalities": ["image","text"],
"stream": true
}'
Image-to-image: включите часть image_url в массив содержимого. Поддерживает URI данных или URL-адреса изображений https (http:// отклоняется), до 8 изображений, ~10 МБ на данные URI. Сообщение, содержащее изображения, также должно включать текстовую часть (инструкцию по редактированию). Некоторые модели дополнительно поддерживают image_config (например, {"strength": 0,7}, 0–1 — нижний уровень остается ближе к исходному изображению), передаваемый в восходящий поток как есть.
1
2
3
4
5
6
7
8
9
10
11
12
curl -N https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer $BL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.4-image-2",
"messages": [{"role":"user","content":[
{"type":"image_url","image_url":{"url":"data:image/png;base64,..."}},
{"type":"text","text":"change the background to a night city"}
]}],
"modalities": ["image"],
"stream": true
}'
Редактирование изображений (совместимо с OpenAI)
POST/api/v1/images/edits
The OpenAI SDK client.images.edit() работает напрямую (многочастная загрузка, синхронизация ответа JSON, возвращающего данные: [{ url }]). Те же ограничения, что и при передаче изображения в изображение: до 8 изображений по 10 МБ каждое; маска и response_format=b64_json пока не поддерживаются.
1
2
3
4
5
curl https://bazaarlink.ai/api/v1/images/edits \
-H "Authorization: Bearer $BL_API_KEY" \
-F model="openai/gpt-5.4-image-2" \
-F image=@cat.png \
-F prompt="change the background to a night city"
B. /v1/images/generations (DALL·E-совместимый)
POST/api/v1/images/generations
OpenAI DALL-E request shape. Sync JSON ({ created, data: [{ url }] }) is the default and works with client.images.generate() out of the box; pass stream: true to get the SSE event stream documented below instead.
1
2
3
4
5
6
7
8
curl https://bazaarlink.ai/api/v1/images/generations \
-H "Authorization: Bearer $BL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-image-2",
"prompt": "a red cat on a sofa",
"size": "1024x1024"
}'
Асинхронный трехэтапный поток (отправка → опрос → контент). Генерация видео занимает от 30 с до 5 минут, что не соответствует синхронной форме завершения чата request/response — поэтому BazaarLink предоставляет его как выделенную конечную точку /api/v1/videos с использованием шаблона идентификатора задания: submit возвращает идентификатор vjob_* → статус опроса → извлекает байты по завершении. Вызов модели видео через /chat/completions или /images/generations возвращает 400 (код: error_endpoint_for_video). Счета рассчитываются по фактической стоимости использования, когда задание завершается.
Видео задания
Одна конечная точка охватывает несколько задач. Выбор запуска задачи определяется тем, какие поля вы отправляете — одна модель может выполнять преобразование изображения в видео, ключевые кадры и продолжение. Не каждая модель поддерживает все задачи; неподдерживаемый запрос возвращает 400.
Преобразование текста в видео
prompt
Генерируйте только из текстового приглашения — без входных данных.
Преобразование изображения в видео
frame_images: [ first frame ]
Ваше изображение ЯВЛЯЕТСЯ картинкой: оно становится первым кадром и анимируется, сохраняя верность оригиналу. Например. фотография кота → тот же кот поворачивает голову в той же сцене.
Ключевые кадры (первый + последний)
frame_images: [ first, last ]
Дайте начало и конец изображения; модель интерполирует движение между ними.
Продолжение
input_video
Расширить существующий клип. Запрошенная продолжительность должна быть больше длины исходного видео.
Ссылка на видео
input_references: [ images ]
Ваши изображения — это REFERENCES, а не кадры: модель сохраняет subject/style и генерирует совершенно новую сцену. Например. фото кота + «танцы в лесу» → новое видео, где кошачий взгляд сохранен, но сцена и движение новые (1–9 ссылок). Отличие от изображения к видео: i2v сохраняет точное изображение; r2v преобразует объект в новые кадры.
Видеомонтаж
input_video + prompt
Отредактируйте существующее видео — измените сцену, стиль или движение. Оплата производится за секунды ввода видео + секунды вывода.
First/last изображения кадров (преобразование изображения в видео, ключевые кадры). Объекты { type: "image_url", image_url: {url},frame_type: "first_frame" | «last_frame» } или простые строки URL.
input_references
array
Справочные изображения для ссылок на видео — рекомендации subject/style, а не точные кадры.
input_video
string|object
Исходное видео URL для продолжения и редактирования видео. Должен быть общедоступным для восходящего потока.
aspect_ratio
string
Соотношение сторон, например 16:9 или 9:16. Игнорируется, когда входное изображение определяет соотношение.
watermark
boolean
Добавьте водяной знак. По умолчанию ложь.
callback_url
string
Webhook URL вызывается, когда задание достигает конечного состояния — только HTTPS, SSRF проверено. Нет подписи в v1; воспринимайте это как подсказку и подтвердите через GET /videos/{id}.
Разрешенные разрешения различаются в зависимости от модели: неподдерживаемое значение возвращает 400 со списком поддерживаемых.
Вход images/videos должен быть доступен из общедоступного URL. Хосты, защищенные хотлинками (например, некоторые вики), выходят из строя.
Входящие медиафайлы проходят модерацию исходного контента и иногда могут быть отклонены.
Для продолжения запрошенная продолжительность должна превышать длину исходного видео.
Соотношение сторон вывода соответствует входному изображению: квадратное изображение дает квадратное видео.
Видеомонтаж оплачивается по секундам входного видео плюс секунды сгенерированного выходного видео.
input_video (редактирование/продолжение) должен быть PUBLIC URL. Видео, которые вы создаете здесь, обслуживаются с помощью вашего ключа API, поэтому восходящий поток не может их получить — разместите исходное видео на общедоступном URL.
Полезные данные вебхука не имеют знака — проверьте status/amount через GET /videos/{id}, прежде чем действовать, и обратите внимание, что unsigned_urls являются абсолютными (в отличие от относительных путей в ответе на опрос).
Поддерживаемые видеомодели
Model ID
Modality
Tasks
bytedance/seedance-2.0
text+image+audio+video->video
t2v, i2v
bytedance/seedance-2.0-fast
text+image+audio+video->video
t2v, i2v
google/veo-3.1
text+image->video
t2v, i2v
openai/sora-2-pro
text+image->video
t2v, i2v
bytedance/seedance-1-5-pro
text+image->video
t2v, i2v
alibaba/happyhorse-1.0
text->video
t2v
alibaba/wan2.6-r2v-flash
text+image+video->video
r2v
alibaba/wan2.5-i2v-preview
text+image->video
i2v
alibaba/happyhorse-1.1
text->video
t2v
alibaba/wan2.7-t2v
text->video
t2v
alibaba/wan2.7-i2v
text+image+video->video
i2v, kf2v, continuation
alibaba/wan2.6-t2v
text->video
t2v
alibaba/wan2.5-t2v-preview
text->video
t2v
alibaba/wan2.2-t2v-plus
text->video
t2v
alibaba/wan2.7-r2v
text+image+video->video
r2v
alibaba/wan2.1-t2v-plus
text->video
t2v
alibaba/wan2.1-t2v-turbo
text->video
t2v
alibaba/wan2.6-i2v-flash
text+image->video
i2v
alibaba/wan2.2-i2v-flash
text+image->video
i2v
alibaba/wan2.7-videoedit
text+image+video->video
videoedit
alibaba/wan2.6-i2v
text+image->video
i2v
alibaba/wan2.2-i2v-plus
text+image->video
i2v
alibaba/wan2.6-r2v
text+image+video->video
r2v
Видеовходы
Отправляйте видеофайлы на модели, поддерживающие видеовход, для анализа, создания субтитров или вопросов о сценах и событиях. Работает с прямыми данными URL или базовыми данными URI — URL более эффективен для общедоступного видео; base64 предназначен для локальных файлов или частного видео.
Поддерживаемые форматы
MP4 (H.264)MPEGMOVВебМ
1
2
3
4
5
6
7
8
9
10
11
12
13
response = client.chat.completions.create(
model="google/gemini-2.5-flash",
messages=[{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {"url": "https://example.com/video.mp4"},
},
{"type": "text", "text": "What is happening in this video?"},
],
}],
)
Отправляйте документы PDF непосредственно в сообщениях для моделей, которые изначально поддерживают ввод PDF (например, Claude, Gemini). BazaarLink перенаправляет файл прямо в модель — тарифицируется как обычные входные токены, без дополнительной оплаты или этапа обработки.
Поддерживаемые форматы
PDF документы (текст, изображения, таблицы, сканированные)
Данные в кодировке
An OpenAI Ответы Конечная точка, совместимая с API, для многоповоротных диалогов без сохранения состояния, вызова инструментов и мультимодальных входных данных. Идеально подходит для агентов и платформ, которые используют OpenAI Python SDK ≥ 1.x с client.responses.create().
POST/api/v1/responses
Note
Принимает ту же аутентификацию и модель маршрутизации, что и Chat Completions.
Тело запроса
modelобязательно
string
Идентификатор модели, например. «openai/gpt-4o» или «anthropic/claude-3.5-sonnet»
inputобязательно
string | Item[]
User input — простая строка (одиночное сообщение) или массив элементов ввода для многооборотных/мультимодальных разговоров.
instructions
string
Инструкции системного уровня, эквивалентные системному сообщению. Необходимо отправлять повторно при каждом запросе.
stream
boolean
Если true, возвращает события потока ответов API SSE. Типы событий: ответ.создан, ответ.выходной_текст.дельта, ответ.завершено.
max_output_tokens
integer
Максимальное количество создаваемых выходных токенов (включая логические токены для моделей серии O).
Определения
temperature
number
Температура отбора проб 0–2. Выше = более случайно. По умолчанию: 1
top_p
number
Масса вероятности выборки ядра. По умолчанию: 1
tools
Tool[]
Tool (функции) — тот же формат схемы JSON, что и Chat Completions (принимает как плоскую форму ответов, так и вложенную форму). Собственные встроенные размещенные инструменты OpenAI (web_search_preview, file_search, Computer_use_preview) не поддерживаются; веб-поиск доступен через плагины: [{id:"web"}] — поддерживается только на некоторых маршрутах модели.
tool_choice
string | object
Использование инструмента управления: «авто», «нет» или конкретный инструмент.
parallel_tool_calls
boolean
Включить параллельный вызов функций при наличии инструментов. По умолчанию: правда. Только модели семейства OpenAI — см. примечание ниже.
response_format
object
Force структурированный вывод JSON. См. раздел «Структурированный вывод».
models
string[]
Резервный список моделей — BazaarLink пробует каждую по порядку в случае сбоя основной
transforms
string[]
Message преобразуется для применения, например ["середина"]. Пропустить автоматическое применение к моделям с контекстом ≤8 тыс.
previous_response_id
string
Эта конечная точка не имеет состояния — при передаче ненулевого значения немедленно возвращается 400 (invalid_prompt), оно никогда не принимается и игнорируется. Вместо этого используйте режим без сохранения состояния: передайте полную историю разговоров во входной массив.
provider
object
Расширенные настройки маршрутизации — большинству пользователей это не нужно.
curl https://bazaarlink.ai/api/v1/responses \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"instructions": "You are a helpful assistant.",
"input": "What is the capital of Taiwan?"
}'
Замените сообщения входными данными (строкой или массивом), используйте инструкции вместо сообщения системной роли и прочитайте выходные данные[0].content[0].text вместо choice[0].message.content.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Chat Completions (before)
response = client.chat.completions.create(
model="openai/gpt-4o-mini",
messages=[
{"role": "system", "content": "You are helpful."},
{"role": "user", "content": "Hello"},
]
)
text = response.choices[0].message.content
# Responses API (after)
response = client.responses.create(
model="openai/gpt-4o-mini",
instructions="You are helpful.",
input="Hello"
)
text = response.output[0].content[0].text
Ограничения
previous_response_id или store: true отклоняется с кодом 400 (код ошибки valid_prompt) — не принимается и игнорируется. Всегда используйте режим без сохранения состояния: передавайте полную историю разговоров во входной массив.
Собственные встроенные размещенные инструменты
OpenAI (web_search_preview, file_search, Computer_use_preview) не поддерживаются. Веб-поиск доступен через плагины: [{id:"web"}] — поддерживается только на некоторых маршрутах модели.
background: true принимается, но игнорируется — каждый запрос выполняется синхронно до завершения.
Messages (Anthropic)
Anthropic-совместимые сообщения API для Claude SDK. Используйте точно так же, как и с API из Anthropic — просто измените базу URL и заголовок аутентификации.
POST/api/v1/messages
Note
Принимает токен носителя или заголовок x-api-key (совместимость с Anthropic SDK). Максимальный размер тела: 10 МБ.
Тело запроса
modelобязательно
string
Идентификатор модели, например. «openai/gpt-4o» или «anthropic/claude-3.5-sonnet»
max_tokensобязательно
integer
Максимальное количество токенов для генерации (положительное целое число).
messagesобязательно
Message[]
Масив сообщений диалога (непустой).
system
string
Дополнительная системная подсказка.
stream
boolean
Если true, возвращает поток событий, отправленных сервером. По умолчанию: ложь
temperature
number
Температура отбора проб 0–2. Выше = более случайно. По умолчанию: 1
top_p
number
Масса вероятности выборки ядра. По умолчанию: 1
top_k
integer
Ограничить выбор жетонов до K. 0 = отключено (учитывать все). По умолчанию: 0
{"id":"msg_...","type":"message","role":"assistant","model":"anthropic/claude-opus-4","content":[{"type":"text","text":"Hello! How can I help you today?"}],"stop_reason":"end_turn","usage":{"input_tokens":10,"output_tokens":12,"cache_read_input_tokens":0,"cache_creation_input_tokens":0,"bz_cost":0.00042}}
// /v1/models — Response SchematypeModelsResponse = {
data: Model[];
};
typeModel = {
id: string; // Model ID (e.g. "openai/gpt-4.1")name: string; // Human-readable namecontext_length: number | null; // Max context window in tokensmodality: string | null; // e.g. "text->text", "text+image->text"architecture?: {
input_modalities?: string[];
output_modalities?: Array<
"text" | "image" | "embeddings" | "audio" |
"video" | "rerank" | "speech" | "transcription"
>;
};
pricing: {
prompt: string; // Input price per 1M tokens (USD)completion: string; // Output price per 1M tokens (USD)
};
description?: string | null; // Model descriptiontop_provider?: {
max_completion_tokens?: number;
};
supported_parameters?: string[]; // e.g. ["tools", "response_format", "reasoning"]pricing_tiers?: { // Present only for models with input-length tiersabove_prompt_tokens: number; // Ascending; strict "greater than" thresholdprompt: string; // USD per token, override tiercompletion: string; // USD per token, override tier
}[];
};
Многоуровневое ценообразование на входную длину
Некоторые модели переключаются на другую таблицу цен, когда запрос превышает порог токена — меняется вся таблица, а не только токены выше порога. Пороговые значения строгие: приглашение с ровно N жетонами по-прежнему выставляет счета на уровне ниже N; более высокий уровень применяется только тогда, когда входные токены больше N.
pricing_tiers — это аналог ценообразования, который присутствует только в том случае, если у модели есть переопределенные уровни, превышающие базовую цену. Записи сортируются по возрастанию числа выше_промпт_токенов; prompt/completion — это USD на токен (та же единица измерения, что и pricing.prompt/pricing.completion). «pricing.prompt» и «pricing.completion» всегда остаются базовым (самым низким) уровнем.
Большинство моделей не имеют уровней — для них ключ Price_tiers просто отсутствует в ответе.
При потоковой передаче данные об использовании возвращаются в последнем фрагменте перед сообщением [DONE] вместе с массивом выбора с пустой дельтой и параметром Finish_reason: «stop».
Keep-alive и финальный фрагмент
Streams может содержать строки комментариев SSE (начинающиеся с двоеточия) или события пульса в качестве контрольных событий — пропустите строки, не относящиеся к данным: вместо JSON.анализа необработанного потока. Последний фрагмент данных содержит данные об использовании (количество токенов и стоимость) перед данными: [DONE]. Успешные ответы включают заголовок X-Request-Id — включайте его при сообщении о проблемах.
1
2
3
4
5
6
7
: keepalive <- SSE comment line — ignore, do NOT JSON.parse
data: {"id":"chatcmpl-abc","choices":[{"delta":{"content":"Hi"},"index":0}]}
data: {"id":"chatcmpl-abc","choices":[{"delta":{},"finish_reason":"stop","index":0}],"usage":{...}}
data: [DONE]
Отмена трансляции
Потоковые запросы можно отменить, закрыв клиентское соединение — например. вызов AbortController.abort() или закрытие объекта потока. BazaarLink прекращает ретрансляцию дальнейших фрагментов и отменяет исходящий запрос провайдера, как только будет получено уведомление об отмене.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
importOpenAIfrom"openai";
const client = newOpenAI({
baseURL: "https://bazaarlink.ai/api/v1",
apiKey: "sk-bl-YOUR_API_KEY",
});
const controller = newAbortController();
const stream = await client.chat.completions.create(
{
model: "anthropic/claude-sonnet-4.6",
messages: [{ role: "user", content: "Write a long story." }],
stream: true,
},
{ signal: controller.signal }
);
forawait (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
}
// e.g. on a "Stop" button click:
controller.abort();
За прерванную трансляцию плата не взимается.
Если поток заканчивается до прибытия окончательного фрагмента использования (включая отмену на стороне клиента), для этого запроса нет достоверной информации о подсчете токенов, поэтому BazaarLink возвращает полную резервацию. Вам не выставляется счет за контент, уже доставленный вашему клиенту до отмены.
Не гарантируется мгновенная остановка провайдера
Закрытие соединения останавливает BazaarLink от немедленной ретрансляции и оплаты дальнейших токенов, но прекратит ли вышестоящий провайдер генерацию на своих собственных серверах в момент разрыва соединения, зависит от этого провайдера — некоторые могут продолжать выполнять вычисления некоторое время после отключения.
Ошибки среднего потока
Нет поля выбора в кадрах ошибок
Если сбой происходит после начала потоковой передачи (например, разрыв восходящего соединения), вы получаете кадр данных SSE в форме {error:{message,type,code}} вместо обычного {choices:[...]} — без изменения статуса HTTP, поскольку заголовки уже были отправлены. Прежде чем читать options[0].delta, проверьте наличие ключа ошибки и выставляйте счет только за уже переданные токены (применяется частичная оплата).
1
2
3
4
5
data: {"id":"chatcmpl-abc","choices":[{"delta":{"content":"The capital of "},"index":0}]}
data: {"error":{"message":"Upstream connection lost.","type":"upstream_error","code":502}}
data: [DONE]
Embeddings
Embeddings — это числовые представления текста, которые отражают семантическое значение. Они преобразуют текст в векторы (массивы чисел), которые можно использовать для ряда задач машинного обучения. BazaarLink предоставляет унифицированную конечную точку, совместимую с OpenAI Embeddings API, поэтому вы можете вызывать модели внедрения от нескольких поставщиков через один интерфейс.
Что такое встраивания?
Вложения преобразуют текст в многомерные векторы, где семантически схожие тексты расположены ближе друг к другу в векторном пространстве — например, «кошка» и «котенок» будут иметь схожие вложения, а «кошка» и «самолет» будут далеко друг от друга. Эти векторные представления позволяют машинам понимать взаимосвязи между фрагментами текста, что делает их основой для многих приложений искусственного интеллекта.
Общие случаи использования
Случай использования
Описание
RAG (генерация с расширенным поиском)Создавайте системы, которые извлекают соответствующий контекст из базы знаний перед генерированием ответа — встраивания находят наиболее релевантные документы для включения в контекст LLM.
Семантический поискПреобразуйте документы и запросы во встраивания, а затем находите наиболее релевантные документы по векторному сходству — это позволяет понять смысл, а не просто сопоставить ключевые слова, что дает лучшие результаты, чем поиск по ключевым словам.
Системы рекомендацийСоздавайте вложения для элементов (продуктов, статей, видео) и предпочтений пользователя, чтобы рекомендовать похожие элементы — векторное сравнение позволяет выявить семантически связанные элементы даже без общих ключевых слов.
Кластеризация и классификацияГруппируйте похожие документы или классифицируйте текст путем анализа шаблонов встраивания — документы со схожими вложениями обычно относятся к одной и той же теме или категории.
Обнаружение дубликатовНаходите повторяющийся или почти повторяющийся контент путем сравнения сходства встраивания — это работает, даже если контент был перефразирован или переформулирован.
Обнаружение аномалийВыявляйте необычное или необычное содержимое, выявляя встраивания, которые значительно отличаются от типичного шаблона набора данных.
POST/api/v1/embeddings
Note
Не все вышестоящие поставщики поддерживают встраивание. Если ваш настроенный поставщик не поддерживает запрошенную модель, BazaarLink автоматически переключится на следующего доступного поставщика.
Параметры
modelобязательно
string
Используемая модель внедрения, например. "openai/text-embedding-3-small".
inputобязательно
string | string[] | ContentItem[]
Текст для встраивания — одна строка, массив строк для одного пакетного вызова или (для моделей, которые это поддерживают) массив элементов {content:[...]}, смешивающих части text и image_url.
dimensions
integer
Запрошенный размер выходного вектора. Уважается только моделями, поддерживающими переменные размеры (например, семейство OpenAI text-embedding-3); пересылается вышестоящему поставщику как есть и игнорируется моделями, которые его не поддерживают.
encoding_format
string
Запрошенная кодировка внедрения, например «плавающее» или «base64». Пересылается вышестоящему поставщику в неизменном виде — поддержка зависит от модели.
provider
object
Настройки маршрутизации поставщика — order,allow_fallbacks, data_collection и другие поля, описанные в разделе «Выбор поставщика».
Основной запрос
1
2
3
4
5
6
7
8
9
10
11
12
13
from openai import OpenAI
client = OpenAI(
base_url="https://bazaarlink.ai/api/v1",
api_key="sk-bl-YOUR_API_KEY",
)
response = client.embeddings.create(
model="openai/text-embedding-3-small",
input="The quick brown fox jumps over the lazy dog",
)
print(response.data[0].embedding) # 1536-dimensional vector
Пакетная обработка
Отправьте массив строк для встраивания нескольких текстов в один запрос — дешевле и быстрее, чем один вызов для каждого текста.
1
2
3
4
5
6
7
8
9
10
11
response = client.embeddings.create(
model="openai/text-embedding-3-small",
input=[
"Machine learning is a subset of artificial intelligence",
"Deep learning uses neural networks with multiple layers",
"Natural language processing enables computers to understand text",
],
)
for i, item inenumerate(response.data):
print(f"Embedding {i}: {len(item.embedding)} dimensions")
Многомодальный ввод (изображение + текст)
Модели с поддержкой ввода изображений (output_modalities включает «embeddings», а inputModalities включает «image») принимают элементы ввода в форме {content:[{type:"text",...}, {type:"image_url",...}]}, что позволяет встраивать изображение отдельно или вместе с текстом.
В зависимости от модели
Только некоторые модели внедрения принимают входные изображения — перед отправкой содержимого image_url проверьте поддерживаемые модели модальности на странице «Модели». Модели, содержащие только текст, отклонят эту форму.
Control, который восходящий обслуживает запрос на встраивание так же, как и завершение чата — полную ссылку на поле см. в разделе «Выбор поставщика».
1
2
3
4
5
6
7
8
9
{"model":"openai/text-embedding-3-small","input":"Your text here","provider":{"order":["openai"],"allow_fallbacks":true,"data_collection":"deny"}}
Поиск моделей внедрения
Нет специальной конечной точки для списка моделей внедрений — вызовите GET /api/v1/models и отфильтруйте на стороне клиента записи, выходные_модальности которых включают «внедрения», или просмотрите страницу «Модели».
Ограничения
Нет потоковой передачи — встраивания всегда возвращаются как полный ответ, в отличие от завершения чата.
Каждая модель имеет максимальную входную длину; текст, выходящий за этот предел, обрезается или отклоняется в восходящем направлении.
Вложения для идентичных входных данных являются детерминированными — температура или случайность не учитываются.
Передовые практики
Выберите модель для достижения компромисса между speed/quality и стоимостью — модели меньшего размера (например, qwen/qwen3-embedding-4b) дешевле и быстрее; более крупные (например, openai/text-embedding-3-large) обычно встраиваются с более высокой точностью.
Объедините несколько текстовых сообщений в один запрос вместо одного звонка на одно текстовое сообщение — меньше циклов обработки, меньше накладных расходов.
Кэшируйте результаты — внедрения для одних и тех же входных данных никогда не меняются, поэтому сохраняйте их, а не восстанавливайте.
Сравнивайте с косинусным сходством, а не с евклидовым расстоянием — оно масштабно-инвариантно и лучше работает для многомерных векторов.
Следите за длиной контекста каждой модели — перед встраиванием длинных документов может потребоваться разделение на фрагменты.
Pure passthrough — без локальных значений по умолчанию
Они пересылаются вышестоящему провайдеру в том виде, в каком они были отправлены — BazaarLink никогда не внедряет и не применяет значения по умолчанию. «По умолчанию» ниже описывает собственное поведение поставщика, когда поле опущено, а не гарантия BazaarLink.
temperature
number
Температура отбора проб 0–2. Выше = более случайно. По умолчанию: 1
top_p
number
Масса вероятности выборки ядра. По умолчанию: 1
top_k
integer
Ограничить выбор жетонов до K. 0 = отключено (учитывать все). По умолчанию: 0
frequency_penalty
number
Наказание повторяющихся токенов. Диапазон: [-2, 2]. По умолчанию: 0
presence_penalty
number
Назначать штрафы за токены в зависимости от присутствия. Диапазон: [-2, 2]. По умолчанию: 0
repetition_penalty
number
Уменьшить повторение входных токенов. Диапазон: (0, 2]. По умолчанию: 1.
min_p
number
Минимальная вероятность относительно верхнего токена. Диапазон: [0, 1]. По умолчанию: 0
top_a
number
Динамический топ-P на основе токена с наибольшей вероятностью. Диапазон: [0, 1]. По умолчанию: 0
seed
integer
Целочисленное начальное значение для детерминированной выборки. Не гарантируется для всех моделей
max_tokens
integer
Максимальное количество токенов для генерации
n
integer
Количество завершений, которые нужно сгенерировать. По умолчанию: 1
logit_bias
object
Сопоставьте идентификаторы токенов со значениями смещения [-100, 100], добавленными перед выборкой. Только модели семейства OpenAI — см. примечание ниже.
logprobs
boolean
Вернуть вероятности журнала для каждого выходного токена. Только модели семейства OpenAI — см. примечание ниже.
top_logprobs
integer
Количество наиболее вероятных токенов для каждой позиции (требуется logprobs: true). Диапазон: 0–20. Только модели семейства OpenAI — см. примечание ниже.
response_format
object
Force структурированный вывод JSON. См. раздел «Структурированный вывод».
structured_outputs
boolean
Запросите строгий вывод, соответствующий схеме JSON, у поставщиков, которые его поддерживают. Прошло как есть
reasoning
object
Конфигурация reasoning/thinking, специфичная для поставщика. Прошло как есть
reasoning_effort
string
OpenAI Усилие рассуждения в стиле o-серии: «низкое», «среднее» или «высокое». Прошло как есть
stop
string | string[]
Stop-последовательности — генерация останавливается при обнаружении
tools
Tool[]
Список инструментов (функций), которые может вызывать модель
tool_choice
string | object
Использование инструмента управления: «авто», «нет» или конкретный инструмент.
parallel_tool_calls
boolean
Включить параллельный вызов функций при наличии инструментов. По умолчанию: правда. Только модели семейства OpenAI — см. примечание ниже.
BazaarLink — только параметры
transforms
string[]
Message преобразуется для применения, например ["середина"]. Пропустить автоматическое применение к моделям с контекстом ≤8 тыс.
models
string[]
Резервный список моделей — BazaarLink пробует каждую по порядку в случае сбоя основной
route
string
Дополнительное поле совместимости маршрутизации — большинству пользователей это не нужно. Используйте «модели» в качестве запасного варианта.
provider
object
Расширенные настройки маршрутизации — большинству пользователей это не нужно.
Кредиты
Запросить текущий кредитный баланс и использование API за весь срок действия.
GET/api/v1/credits
Auth
Требуется токен носителя (стандартный ключ API sk-bl-...).
Получение подробной статистики для одного завершения по идентификатору поколения (из идентификатора ответа chat/completions или заголовка потоковой передачи x-bz-gen-id).
GET/api/v1/generation?id=<generation-id>
Auth
Требуется токен носителя (стандартный ключ API). Обязательный параметр запроса: id.
Ошибки: 400 (отсутствует идентификатор), 401 (аутентификация), 404 (поколение не найдено).
API Ключевая информация
Запросите текущий уровень ограничения скорости ключа API и агрегированные счетчики использования (формат ответа соответствует общепринятым отраслевым соглашениям о ключах API).
is_free_tier = true, когда кредитный баланс < 10 долларов США. Окна находятся в формате UTC: ежедневно = текущий день, еженедельно = пн–вс, ежемесячно = 1st–EOM. Если для ключа установлен лимит расходов на ключ (с помощью параметра лимита ключа creation/update), limit/limit_remaining/limit_reset отражает этот лимит и использование соответствующего периода; в противном случае лимит равен нулю, и limit_remaining возвращается к кредитному балансу вашего аккаунта. expires_at — срок действия ключа (ноль, если его нет). is_management_key и is_provisioning_key — это псевдонимы одной и той же концепции — оба верны для ключа управления.
BYOK
BazaarLink не предлагает программу принесения собственного ключа (BYOK), поэтому эта конечная точка не возвращает никаких полей byok_usage.
Самостоятельная регистрация агентов ИИ (ботов, автономных систем). Возвращает ключ API с пробными кредитами и токеном заявки на обновление учетной записи.
POST/api/v1/agents/register
Rate Limit
Аутентификация не требуется, но IP-адрес ограничен одной регистрацией в 24 часа.
Тело запроса
nameобязательно
string
Имя агента (непустое, обрезанное, не более 100 символов).
description
string
Описание дополнительного агента.
referral_code
string
Необязательный реферальный код.
Пример запроса
1
2
3
4
5
6
curl -X POST https://bazaarlink.ai/api/v1/agents/register \
-H "content-type: application/json" \
-d '{
"name": "My Agent",
"description": "Autonomous research bot"
}'
Ответ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{"api_key":"sk-bl-xxxxx...","credits":0.10,"credits_usd":"$0.1000","claim_token":"abc...xyz","claim_expires":"2026-04-27T10:00:00.000Z","upgrade_url":"https://bazaarlink.ai/claim?token=...","referral_code":"aBcDeFgH","free_model":"auto:free","message":"Welcome to BazaarLink!...","referral_message":"Share referral link:...","base_url":"https://bazaarlink.ai/api/v1","docs":"https://bazaarlink.ai/llms.txt"}
Model возвращают конверт ошибки, совместимый с OpenAI. Поле типа может отличаться или быть опущено на специализированных конечных точках; используйте статус HTTP и error.code для логики программы вместо анализа сообщения.
Статус и код ошибки
1
2
3
4
5
6
7
{"error":{"message":"Insufficient credits. Please top up to continue.","type":"invalid_request_error","code":"insufficient_credits"}}
HTTP
Перед началом потоковой передачи статус HTTP определяет общий класс сбоя. error.code — это либо числовой статус, либо стабильная строка для сбоев, требующих определенного устранения. Предпочитайте строковый код, если он присутствует, вернитесь к статусу HTTP и рассматривайте error.message как удобочитаемый текст.
Код
Название
Описание
400Неверный запросНеверный запрос, пустой массив сообщений или отсутствуют обязательные поля
401НесанкционированныйAPI Ключ отсутствует, недействителен или отключен.
402Требуется оплатаНедостаточно средств на счете, достигнут предел расходов на ключ или превышен предел бюджета monthly/weekly
403ЗапрещеноУчетная запись заблокирована или не имеет разрешения
404Не найденЗапрошенная модель, поколение, ключ или другой ресурс не существует.
409КонфликтРесурс не находится в требуемом состоянии, например задание видео не завершено.
410УшелЗапрошенная модель снята с производства и должна быть заменена.
413Полезная нагрузка слишком великаТело запроса превышает 10 МБ; уменьшить размер контента или разделить запрос
416Диапазон неудовлетворителенЗапрошенный диапазон байтов недействителен для созданного видеоконтента.
429Слишком много запросовПревышен лимит скорости; перед повторной попыткой проверьте заголовок Retry-After
500Ошибка сервераВнутренняя ошибка BazaarLink
502Плохой шлюзВсе вышестоящие поставщики вышли из строя; была предпринята попытка переключения при отказе
503Сервис недоступенДля этой модели не настроен ни один вышестоящий поставщик; связаться с администратором
504Тайм-аут шлюзаВосходящее соединение или поток остановлены и истекло время ожидания.
Машиночитаемые коды оплаты
Ответ
A 402 может представлять собой различные элементы управления. Эти стабильные коды позволяют клиентам показывать правильное следующее действие.
Код
Описание
budget_cap_reachedA Достигнут предел еженедельного или ежемесячного бюджета рекомендаций; поднимите или сбросьте крышку.
credit_limit_exceededA Жесткая кредитная линия организации, осуществляющей ежемесячные платежи, исчерпана; контактный биллинг.
insufficient_creditsA пользователь или организация с предоплатой не может зарезервировать достаточный баланс; добавить кредиты.
spend_limit_exceededКлюч API достиг настроенного ежедневного, еженедельного или ежемесячного лимита расходов.
Подробные коды ошибок
Если запрос API завершается неудачно, error.code сообщает конкретную причину. Две ошибки могут использовать HTTP 400, но требуют разных исправлений: «unknown_model» означает, что имя модели неверно, а «image_too_large» означает, что изображение необходимо уменьшить. Используйте таблицу ниже, чтобы найти причину и следующее действие.
Статус
Недопустимые параметры, контекст, инструменты, схемы и отказы в отношении безопасности содержимого.
Код
HTTP
missing_required_field400
unsupported_param400
max_tokens_invalid400
context_too_long400
tool_use_unsupported400
malformed_tool_messages400
invalid_response_format_schema400
invalid_tools_definition400
content_moderation403
content_filter403
unknown_4xx400
Создание и редактирование изображений
Ввод изображения, многочастное редактирование, вывод и ошибки конвейера изображений.
Код
HTTP
invalid_image_url400
input_images_not_supported400
invalid_content_type400
mask_not_supported400
unsupported_response_format400
missing_prompt400
missing_image400
too_many_images400
invalid_image_type400
image_too_large400
invalid_n400
pipeline_error502
no_images502
Восходящая маршрутизация
Очистка ошибок подключения, аутентификации, регулирования и доступности поставщика.
Код
HTTP
upstream_unreachable502
upstream_auth_failed502
upstream_rate_limited429
upstream_unavailable502/503
Ограничения ставок, бюджеты и экстренные тормоза
Эти элементы управления могут отклонить действительный запрос. Они отличаются от сбоев поставщика и требуют других действий по восстановлению.
Управление
HTTP
Как это определить
Ограничение скорости запроса429Цифровой код 429; используйте заголовки Retry-After и X-RateLimit-*.
Блок штрафа за ограничение скорости429Цифровой код 429 и сообщение о временном ограничении; используйте Повтор-После.
Global проводит аварийное торможение503Цифровой код 503, сообщение о глобальном лимите расходов и повторная попытка через 30 или 300 секунд.
Org/team/member/user расходный тормоз429Цифровой код 429 и сообщение автоматического выключателя с указанием затронутой области.
Контроль выставления счетов и бюджета402Используйте коды строк стабильного платежа, перечисленные выше.
Примечание о совместимости: пути ограничения скорости и аварийного торможения в настоящее время выдают числовые значения error.code. Не принимайте недокументированные строковые коды. Используйте статус HTTP, Retry-After и документированное ответное сообщение, пока не будет введен стабильный строковый код.
Состояние видео и медиаресурсов
Проверка видео обычно возвращает числовой код 400. Отсутствующее задание возвращает 404, устаревшая модель возвращает 410, незавершенное видеоконтент возвращает 409, а недопустимый диапазон видеобайтов возвращает 416. Опрос до завершения или исправление заголовка Range перед повторной попыткой.
Политика повторных попыток
Повторять только те сбои, которые можно устранить без изменения запроса. Если присутствует Retry-After, подождите столько же; в противном случае используйте экспоненциальную задержку с джиттером. Ограничьте попытки и избегайте наслаивания ручных повторов поверх автоматических попыток SDK.
Повторить попытку с откатом
429, 502, 503 и 504. Соблюдайте параметр «Повторить попытку после», если он предусмотрен. Для запросов на создание не создавайте второе задание после неоднозначного сбоя сети, пока вы не проверите исходное задание.
Исправьте перед повторной попыткой
400, 401, 402, 403, 404, 409, 410, 413 и 416. Сначала измените запрос, учетные данные, баланс, разрешения, состояние ресурса или заголовок диапазона.
Обработка ошибок
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import random
import time
from openai import OpenAI, APIStatusError
client = OpenAI(
base_url="https://bazaarlink.ai/api/v1",
api_key="sk-bl-YOUR_API_KEY",
max_retries=0, # Avoid double retries; this example handles them.
)
RETRYABLE = {429, 502, 503, 504}
for attempt inrange(5):
try:
response = client.chat.completions.create(
model="openai/gpt-4.1",
messages=[{"role": "user", "content": "Hello!"}],
)
breakexcept APIStatusError as error:
if error.status_code notin RETRYABLE or attempt == 4:
raise
retry_after = error.response.headers.get("Retry-After")
delay = (
float(retry_after)
if retry_after
elsemin(8, 0.5 * (2 ** attempt)) + random.uniform(0, 0.25)
)
time.sleep(delay)
Форматы ошибок потоковой передачи
Ошибки, возникающие до потоковой передачи каких-либо токенов, возвращают стандартный ответ об ошибке HTTP с телом JSON.
После запуска потока ответ HTTP уже равен 200. Анализируйте каждый кадр данных SSE и обрабатывайте ошибку верхнего уровня или choice[0].finish_reason === "error" как неудавшийся, неполный ответ.
Если поток завершается сбоем во время выполнения, BazaarLink генерирует последнее событие SSE с объектом ошибки верхнего уровня, за которым следуют данные: [DONE]. Фрагменты, дословно передаваемые из некоторых восходящих потоков, вместо этого могут содержать ошибку выбора (choices[0].finish_reason === "error") — обрабатывают и то, и другое.
1
2
3
4
5
6
7
8
9
10
// If the stream fails mid-flight, BazaarLink emits a final SSE event
// with a top-level "error" object, followed by data: [DONE]
data: {"error":{"message":"Upstream stream interrupted. The response is incomplete.","type":"upstream_error","code":502}}
data: [DONE]
// Chunks relayed verbatim from some upstreams may instead carry the error
// inline on the choice: choices[0].finish_reason === "error" with an
// "error" object ({ code, message }) on the choice — handle both shapes.
// Branch on error.code; error.type can vary by failure path.
Версии
BazaarLink предоставляет единый стабильный путь API, /api/v1 — нет привязанных к дате версий или заголовков версий, которыми нужно управлять. API развивается постоянно, а не через пронумерованные выпуски.
Некритичные изменения
Отправка без предварительного уведомления:
Новые конечные точки
В каталог добавлены новые модели
Новые дополнительные параметры запроса
Новые поля ответа
Новые схемы с дополнительными свойствами
Дополнительные коды ответа status/error
Пишите клиентам в оборонительной форме.
Игнорируйте незнакомые поля ответа и не допускайте сбоев при неизвестных значениях в полях, подобных перечислению: новые добавляются по мере роста каталога и набора функций.
Важные изменения
Это редкие экземпляры, включая:
Удаление или переименование конечной точки, параметра или поля ответа.
Изменение типа поля
Сделать обязательным дополнительный параметр
Когда они все-таки происходят, критическое изменение применяется к конкретной конечной точке, а не ко всей поверхности /api/v1 — не существует какого-либо одного изменения версии, которое могло бы нарушить всю интеграцию сразу. Мы пока не публикуем официальный журнал изменений с пометкой «Критические изменения» (см. «Остаться в курсе» ниже); по вопросам, важным для интеграции, обращайтесь в службу поддержки, прежде чем полагаться на недокументированное поведение.
Политика прекращения поддержки
Одно обычное «критическое» событие, которого следует ожидать: отдельные модели выводятся из эксплуатации, поскольку вышестоящие поставщики устаревают. Запросите текущий статус модели через GET/api/v1/models.
1
2
3
4
5
6
7
GET https://bazaarlink.ai/api/v1/models
Authorization: Bearer sk-bl-YOUR_API_KEY
# A model within 30 days of its deprecation date shows in the catalog# with an "EOL" badge on the Models page. After the effective date it's# dropped from the catalog and calls return:# 410 { "error": { "type": "model_not_available", "code": "model_retired" } }
Будем в курсе
Мы пока не публикуем специальный журнал изменений API или канал RSS. На данный момент проверьте эту страницу напрямую, посмотрите статус модели через GET /api/v1/models или обратитесь в службу поддержки, если вам нужно предварительное уведомление о критической интеграции.
Поддержка
Поддержка
Здравствуйте! Чем мы можем помочь? Отправьте сообщение, и мы ответим в ближайшее время.
Справочник API | Чаты, эмбеддинги и маршрутизация моделей