BazaarLink Документация
BazaarLink — это унифицированный шлюз AI API для Тайваня, обеспечивающий доступ к сотням моделей из OpenAI, Anthropic, Google, Meta и других через единый OpenAI-совместимый шлюз. конечная точка API.
Read https://bazaarlink.ai/skill.md and follow the instructions to integrate BazaarLink into your app.Цены
BazaarLink использует модель цен с нулевой наценкой (идентичной официальной прейскурантной цене каждого поставщика). Комиссия за платформу взимается при пополнении счета (депозите): комиссия за транзакцию 10% плюс 5% Тайвань VAT на каналах TWD. Счет выставляется в формате USD с расценками TWD и едиными электронными счетами. Пополнение баланса с оплатой по мере использования; предприятия могут организовать ежемесячную оплату (Net-30, по договоренности).
Как это работает
- Потребление (дебет): каждый вызов API оплачивается на основе фактического использования токенов по официальной прейскурантной цене USD провайдера, вычитаемой из вашего баланса — нулевая наценка, никакой дополнительной платы за потребление.
- Пополнение (депозит): TWD конвертируется в USD по курсу продажи в реальном времени и добавляется к вашему балансу; При пополнении взимается комиссия за транзакцию 10%.
- • Кредитная карта: взимается дополнительная фиксированная комиссия в размере 0.60 в долларах США; выдается квитанция.
- • TWD каналы: 5% Тайвань добавляется VAT и выдается единый электронный счет для Тайваня.
- • Банковский перевод: для крупных или корпоративных пополнений свяжитесь с нами, чтобы организовать банковский перевод и индивидуальное выставление счета.
- Выставление счетов: электронные унифицированные счета поддерживаются для рабочих процессов расходов Тайваня; компании, которым необходимы закупки или ежемесячные счета, могут договориться на корпоративных условиях (Net-30, по договоренности).
О курсе валют
При конвертации иностранной валюты используется курс реального времени; при ежемесячном выставлении счетов используется ставка на момент выставления счета (выписки), а при предоплаченных пополнениях конвертируется по ставке на момент пополнения счета. Тариф и временная метка сохраняются в записях о выставлении счетов.
Защита от выставления счетов при сбое запроса
Если восходящий запрос завершается неудачей без оплачиваемого использования, BazaarLink автоматически возвращает всю зарезервированную сумму. Вы платите 0 долларов за эту попытку, даже если трансляция уже началась до того, как она потерпела неудачу.
- Восходящий канал не может подключиться, отклоняет запрос или не возвращает пригодный для использования ответ.
- A поток останавливается до получения окончательной записи об использовании, даже после частичного содержимого.
- Ответ не содержит данных об использовании или содержит только пустой объект использования с нулевым значением. Вывод токенов
0 не всегда означает бесплатность
Если запрос завершается нормально и поставщик возвращает допустимое использование, BazaarLink регулирует это использование. Не решайте, был ли запрос свободен только от выходных токенов: ответ с 0 выходными токенами все равно может быть выставлен счет за входные токены или действительные затраты, указанные в восходящем направлении. Проверьте возвращенную стоимость использования или запись активности на предмет окончательного платежа.
Быстрый старт
Три способа интеграции
Начните работу менее чем за 5 минут. BazaarLink полностью совместим с OpenAI SDK — просто измените
База URL
https://bazaarlink.ai/api/v1Использование OpenAI SDK
BazaarLink полностью совместим с OpenAI SDK. Просто измените базовый ключ URL и API — весь остальной код останется прежним.
sk-bl-.✗ gpt-4.1 claude-sonnet-4.6 gemini-2.5-flash
Принесите свой ключ (BYOK)
Прикрепите ключи API своего вышестоящего поставщика (совместимые с OpenAI или Anthropic) к своей учетной записи или организации — соответствующие запросы затем передаются вверх через ваш ключ с плавным или строгим резервным режимом. Персональные ключи находятся на вкладке BYOK страницы ключей; организации управляют своими в настройках организации. Перейти в настройки BYOK →
Контентная фильтрация
Двусторонняя защита содержимого вашего трафика API: запросы, содержащие попытки внедрения подсказок, блокируются (400), а конфиденциальные данные в подсказках или ответах (ключи API, номера карт, национальные идентификаторы и т. д.) автоматически удаляются. Правила и список исключений настраиваются, включая статистику использования. Перейти к настройкам фильтра контента →
Миграция с OpenRouter
API API совместим с OpenRouter — большинство интеграций переключаются путем изменения двух значений: базового URL на https://bazaarlink.ai/api/v1 и ключа API на a. Ключ BazaarLink, начинающийся с sk-bl-.
- База URL: https://openrouter.ai/api/v1 → https://bazaarlink.ai/api/v1
- API ключ: sk-or-... → sk-bl-... (создайте его по адресу /keys)
- Model ID: тот же формат provider/model (например, anthropic/claude-sonnet-4.6); полный каталог по адресу GET /api/v1/models. Резервные варианты
- models[], настройки маршрутизации поставщика, потоковая передача, вызов инструментов и структурированные выходные данные используют одну и ту же форму запроса.
Аутентификация
Для всех запросов API требуется заголовок авторизации с вашим ключом API.
Authorization: Bearer sk-bl-YOUR_API_KEYПолучите ключ API с сайта приборная панель. Храните свой ключ в безопасности — не раскрывайте его в клиентском коде.
Дополнительные заголовки
Принципы
BazaarLink разработан на основе трех основных принципов:
1. Единый интерфейс
Один API, один SDK, сотни моделей. Переключайтесь между OpenAI, Anthropic, Google Gemini, Meta Llama и другими, не меняя код — просто измените идентификатор модели.
2. Оптимизация цен
BazaarLink автоматически направляет к наиболее экономичному поставщику для выбранной вами модели. Вы платите только за то, что используете, счет выставляется в формате USD с полной поддержкой выставления счетов.
3. Высокая доступность
Автоматическое переключение при сбое означает, что в случае сбоя провайдера ваши запросы будут плавно перенаправлены. Никаких изменений кода, никаких простоев.
Мультимодальный
BazaarLink поддерживает мультимодальные входы — отправляйте изображения, аудио и файлы вместе с текстом в модели, которые их поддерживают. Контент передается вышестоящему провайдеру.
Поддерживаемые методы
Примеры:
Отправка изображений
Используйте формат массива содержимого с частями image_url. Поддерживаемые форматы: PNG, JPEG, WebP и GIF (включая анимированные). Вы можете включить несколько изображений в одно сообщение — каждое как отдельную часть image_url:
Ограничения
BazaarLink применяет два независимых ограничения: ограничение скорости запросов в минуту и кредитный лимит на расходы по счету. Превышение ограничения скорости возвращает HTTP 429; исчерпание кредитов возвращает HTTP 402.
Ограничения ставок
Ограничения скорости указаны для каждого пользователя (а не для каждого ключа) и измеряются в запросах в минуту (RPM). Дневного лимита нет. Уровень определяется автоматически в зависимости от кредитного баланса вашего аккаунта.
При превышении ограничения скорости вы получаете ответ 429 с заголовком Retry-After. Реализуйте экспоненциальную отсрочку при повторных запросах.
Заголовки ответов
Каждый успешный ответ включает заголовки ограничения скорости для отслеживания на стороне клиента:
X-RateLimit-Limit: 200 # Max requests per minute for your tier
X-RateLimit-Remaining: 198 # Remaining requests in current window
X-RateLimit-Reset: 1740000060 # Unix timestamp when the window resets
X-Request-Id: chatcmpl-abc123 # Unique request ID for debuggingКредитные лимиты Ответ
A 402 означает, что баланс вашего счета или ограничение расходов ключа достигло нуля — это не значит, что вы отправляете запросы слишком быстро. Эти ответы не содержат заголовков ограничения скорости, и если ограничение будет достигнуто в середине потока, вы получите событие ошибки SSE вместо изменения статуса HTTP.
個人緊急煞車
針對您所有 API 金鑰套用的固定 1 分鐘 / 1 小時 USD 支出上限。當時間窗口的門檻被觸及時,新的請求將收到 HTTP 429;窗口於整點邊界自動重置。
Генерация изображения
Создавайте изображения с помощью /v1/chat/дополнений с модальностями:["image"] или OpenAI DALL·E-совместимого /v1/images/generations.
curl -N https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer $BAZAARLINK_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}'Полный поток (потоковая передача, редактирование изображений, протокол SSE, список моделей) →
Создание видео
Async Трехэтапный процесс (отправка → опрос → контент). Создание видео занимает от 30 секунд до 5 минут.
curl https://bazaarlink.ai/api/v1/videos \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"alibaba/wan2.7-t2v","prompt":"a bird flying over mountains","duration":3}'
# → 202 { "id": "vjob_xxx", "status": "pending" }Полный поток (опрос, загрузка, типы задач, предупреждения) →
PDF Входы
Отправляйте документы PDF непосредственно в сообщениях для моделей, которые изначально поддерживают ввод PDF (например, Claude, Gemini). BazaarLink перенаправляет файл прямо в модель — тарифицируется как обычные входные токены, без дополнительной оплаты или этапа обработки.
Поддерживаемые форматы
- PDF документы (текст, изображения, таблицы, сканированные) Данные в кодировке
- Base64 URL (`data:application/pdf;base64,...`)
- Многостраничные документы
- Только PDF-файлы без пароля
Видеовходы
Отправляйте видеофайлы на модели, поддерживающие видеовход, для анализа, создания субтитров или вопросов о сценах и событиях. Работает с прямыми данными URL или базовыми данными URI — URL более эффективен для общедоступного видео; base64 предназначен для локальных файлов или частного видео.
Поддерживаемые форматы
MP4 (H.264)MPEGMOVВебМУправление API Ключи
Ключи управления предназначены для программного управления ключами. Они могут создавать, перечислять, обновлять, отключать и удалять стандартные ключи API, но не могут вызывать модели ИИ.
Создание ключа управления
Перейти вManagement API Страница ключейи нажмите «Создать» — это отдельная страница от ваших стандартных ключей API, а не селектор типа на той же странице.
Список ключей
Создать дополнительный ключ
Update Key
Отменить ключ
DELETE https://bazaarlink.ai/api/v1/keys/:id
Authorization: Bearer sk-bl-YOUR_MGMT_KEY
# Returns 204 No Content on successЗапрос баланса
Использование запросов
GET https://bazaarlink.ai/api/v1/usage?period=month
Authorization: Bearer sk-bl-YOUR_MGMT_KEY
# period: day | week | month | yearАтрибуция приложения
Идентифицируйте свое приложение в заголовках запросов, чтобы обеспечить отслеживание использования, видимость информационной панели и детальную аналитику.
Доступные заголовки
| Header | Description |
|---|---|
| HTTP-Referer | Ваш сайт URL, для отслеживания использования и анализа (необязательно) |
| X-Title | Название вашего приложения, отображаемое на информационных панелях (необязательно) |
Коды ошибок
Ошибка формата ответа Конечные точки вывода
Model возвращают конверт ошибки, совместимый с OpenAI. Поле типа может отличаться или быть опущено на специализированных конечных точках; используйте статус HTTP и error.code для логики программы вместо анализа сообщения. Статус и код ошибки
{
"error": {
"message": "Insufficient credits. Please top up to continue.",
"type": "invalid_request_error",
"code": "insufficient_credits"
}
}HTTP
Перед началом потоковой передачи статус HTTP определяет общий класс сбоя. error.code — это либо числовой статус, либо стабильная строка для сбоев, требующих определенного устранения. Предпочитайте строковый код, если он присутствует, вернитесь к статусу HTTP и рассматривайте error.message как удобочитаемый текст.
Машиночитаемые коды оплаты Ответ
A 402 может представлять собой различные элементы управления. Эти стабильные коды позволяют клиентам показывать правильное следующее действие.
Подробные коды ошибок
Если запрос API завершается неудачно, error.code сообщает конкретную причину. Две ошибки могут использовать HTTP 400, но требуют разных исправлений: «unknown_model» означает, что имя модели неверно, а «image_too_large» означает, что изображение необходимо уменьшить. Используйте таблицу ниже, чтобы найти причину и следующее действие. Статус
Ограничения ставок, бюджеты и экстренные тормоза
Эти элементы управления могут отклонить действительный запрос. Они отличаются от сбоев поставщика и требуют других действий по восстановлению.
Примечание о совместимости: пути ограничения скорости и аварийного торможения в настоящее время выдают числовые значения error.code. Не принимайте недокументированные строковые коды. Используйте статус HTTP, Retry-After и документированное ответное сообщение, пока не будет введен стабильный строковый код.
Состояние видео и медиаресурсов
Проверка видео обычно возвращает числовой код 400. Отсутствующее задание возвращает 404, устаревшая модель возвращает 410, незавершенное видеоконтент возвращает 409, а недопустимый диапазон видеобайтов возвращает 416. Опрос до завершения или исправление заголовка Range перед повторной попыткой.
Политика повторных попыток
Повторять только те сбои, которые можно устранить без изменения запроса. Если присутствует Retry-After, подождите столько же; в противном случае используйте экспоненциальную задержку с джиттером. Ограничьте попытки и избегайте наслаивания ручных повторов поверх автоматических попыток SDK.
Обработка ошибок
Форматы ошибок потоковой передачи
Ошибки, возникающие до потоковой передачи каких-либо токенов, возвращают стандартный ответ об ошибке HTTP с телом JSON.
После запуска потока ответ HTTP уже равен 200. Анализируйте каждый кадр данных SSE и обрабатывайте ошибку верхнего уровня или choice[0].finish_reason === "error" как неудавшийся, неполный ответ.
Если поток завершается сбоем во время выполнения, BazaarLink генерирует последнее событие SSE с объектом ошибки верхнего уровня, за которым следуют данные: [DONE]. Фрагменты, дословно передаваемые из некоторых восходящих потоков, вместо этого могут содержать ошибку выбора (choices[0].finish_reason === "error") — обрабатывают и то, и другое.
Вызов инструмента
Tool Вызов (также известный как вызов функции) позволяет моделям вызывать внешние функции, которые вы определяете. Модель решает, когда вызывать инструмент, и генерирует структурированные аргументы — ваш код выполняет функцию и возвращает результаты для продолжения диалога.
Поддерживаемые модели
Большинство передовых моделей поддерживают вызов инструментов. Вот несколько популярных вариантов:
Определение инструментов
Каждый инструмент представляет собой объект JSON, описывающий функцию, которую может вызывать модель. Поле параметров использует схему JSON.
tool_choice Параметры
Полный поток
Вызов инструмента — это многоходовой процесс: (1) отправка запроса с помощью инструментов → (2) модель возвращает Tool_calls → (3) выполнение функций → (4) отправка результатов обратно → (5) модель генерирует окончательный ответ.
Параллельные вызовы инструментов
Некоторые модели могут вызывать несколько инструментов в одном ответе. Обрабатывайте каждый вызов инструмента и возвращайте все результаты:
Вызовы инструментов потоковой передачи
При потоковой передаче вызовы инструментов поступают в виде частичных дельт, индексированных по позиции — строка аргументов каждой дельты накапливается по индексу до тех пор, пока Finish_reason не станет «tool_calls», что сигнализирует о завершении вызова.
Простой агентский цикл
A универсальный шаблон, который продолжает вызывать модель, пока она продолжает запрашивать инструменты, и останавливается, как только возвращает окончательный ответ. Используйте max_iterations для защиты от бесконечных циклов.
Рекомендации по определению функций
- Используйте конкретные описательные имена — get_weather_forecast, а не просто погода.
- Напишите четкое описание того, что делает функция и когда ее использовать — модель полагается исключительно на этот текст, чтобы решить, следует ли ее вызывать.
- Ограничивайте значения перечислением, где это возможно, и включите пример в описание, чтобы уменьшить количество неверных аргументов.
- Обязательно отмечайте только те поля, которые действительно обязательны — необязательные поля должны быть действительно пропущенными.
Структурированный вывод
Заставьте модель возвращать действительный JSON, соответствующий схеме. Это важно для создания надежных приложений, которые программно анализируют выходные данные модели.
Метод 1: формат_ответа (схема JSON)
для обеспечения строгого соответствия схеме JSON:
Советы
- Используйте понятные, описательные имена свойств — модель использует их в качестве контекста.
- Добавьте описания к свойствам схемы для управления моделью.
- Set strict: true для гарантированного соответствия схемы (может немного увеличить задержку).
- Сохраняйте простоту схем: глубокая вложенность схем может снизить качество вывода.
- Протестируйте разные модели — некоторые справляются со сложными схемами лучше, чем другие.
Assistant Предварительное заполнение
Добавьте частичное сообщение помощника в качестве последнего элемента, чтобы запросить продолжение маршрутов совместимой модели.
Преобразование сообщений
Автоматическое преобразование сообщений в соответствии с ограничениями контекста модели. Когда ваши сообщения выходят за рамки контекстного окна модели, преобразования разумно сжимают разговор, удаляя сообщения из середины.
Использование
Типы преобразования
Поведение по умолчанию
В моделях с контекстом ≤8k автоматически включается промежуточный выход. Для более крупных контекстных моделей включите это явно. Модели Anthropic Claude также автоматически обеспечивают ограничение в 1000 сообщений независимо от настроек преобразований.
Нулевое сохранение данных
BazaarLink по умолчанию не сохраняет содержимое вашего сообщения. На этой странице описывается, как обрабатываются ваши данные. Подходит для приложений, обрабатывающих конфиденциальные данные.
Обработка текущих данных
- Содержимое сообщения: не сохраняется по умолчанию, удаляется из памяти после обработки
- Метаданные платежных данных: количество токенов, временные метки, идентификаторы моделей.
- Журналы использования: только запрос статистики, без содержания сообщений
- Пересылка вверх по течению: сообщения пересылаются вышестоящим поставщикам — в соответствии с их политикой конфиденциальности. При кэшировании
Быстрое кэширование
Prompt повторно используются ранее вычисленные токены подсказок, что значительно снижает затраты и задержки — особенно для приложений с большими повторяющимися системными подсказками.
Как это работает
Необходимость настройки кэширования зависит от поставщика. Модели семейства OpenAI автоматически кэшируют длинные повторяющиеся префиксы подсказок — никаких изменений запроса не требуется. Claude (Anthropic) моделирует кэширование только тогда, когда запрос содержит явную точку останова Cache_control; BazaarLink не добавляет это за вас, поэтому запрос Claude без маркера никогда не кэшируется. BazaarLink пересылает любые маркеры кэша, которые вы отправляете, как есть, и сообщает о результирующих токенах кэша read/write в ответе об использовании.
Жетоны рассуждений
Модели рассуждения (например, серии DeepSeek R1, o1) думают внутренне, прежде чем дать окончательный ответ. Эти внутренние токены называются токенами рассуждения и оплачиваются отдельно.
Чтение жетонов рассуждения из ответов
Управление режимом мышления
Некоторые модели поддерживают переключение режима «мышления». В режиме мышления перед выдачей окончательного ответа генерируются жетоны внутреннего рассуждения, что повышает качество за счет большего количества жетонов.
| Семейство моделей | Параметр | По умолчанию |
|---|---|---|
| qwen3-* | enable_thinking: boolean | false (платформа по умолчанию) |
| openai/o1, o3, o4-mini | reasoning_effort: "low" | "medium" | "high" | medium |
| deepseek/deepseek-r1 | — | Всегда включено (невозможно отключить) |
Единый объект рассуждения (новый формат)
BazaarLink также поддерживает унифицированный объект рассуждения, который работает во всех семействах моделей с единым согласованным API:
| Поле | Значения | Применяется к |
|---|---|---|
| reasoning.effort | "xhigh" | "high" | "medium" | "low" | "none" | OpenAI o-series, Grok |
| reasoning.max_tokens | integer | Anthropic Claude, Gemini |
| reasoning.exclude | boolean | Скрыть мысли от ответа (модель все еще рассуждает) |
Задержка и производительность
Оптимизация задержки ответа AI API имеет решающее значение для удобства пользователей. Ниже приведены ключевые факторы, влияющие на задержку в архитектуре BazaarLink, а также рекомендации по оптимизации.
Факторы, влияющие на задержку
- Размер модели: модели большего размера (70B+), как правило, генерируются медленнее.
- Нагрузка поставщика: зависит от поставщика и времени суток.
- Количество токенов: чем больше max_tokens, тем дольше время завершения
- Потоковая передача и непотоковая передача: поток: true доставляет первый токен быстрее.
- Длина контекста: очень длинные контексты увеличивают время предварительной обработки.
Советы по оптимизации
- Предпочитайте потоковую передачу (stream: true), чтобы уменьшить воспринимаемую задержку.
- Используйте вариант :nitro для выбора поставщиков с высокой пропускной способностью.
- Выбирайте модели меньшего размера (flash/mini/haiku) для сценариев, чувствительных к задержке.
- Используйте поставщик.sort: «задержка», чтобы автоматически выбирать поставщика с наименьшей задержкой.
- Включите кэширование запросов, чтобы уменьшить задержку при повторных запросах.
Оптимизация времени работы
BazaarLink максимизирует доступность API за счет нескольких уровней: автоматическое переключение при сбое, автоматические выключатели и мониторинг работоспособности поставщика.
Механизмы доступности
- Автоматический выключатель: автоматически обнаруживает и изолирует неисправных поставщиков
- Автоматическое переключение при сбое: плавное переключение на резервного поставщика — никаких изменений кода не требуется.
- Мониторинг состояния поставщика: непрерывно отслеживает частоту ошибок и задержку для каждого поставщика.
- Retry логика: временные ошибки (5xx) автоматически повторяются
Автоматический выключатель
Ограждения
Добавьте механизмы безопасности контента в запросы API для фильтрации вредоносного контента и обеспечения соблюдения политик соответствия. BazaarLink в настоящее время предлагает настраиваемые защитные фильтры контента только на уровне организации; Персональные (не организационные) ключи API не имеют эквивалентных настроек — безопасность контента полностью зависит от собственных встроенных систем безопасности каждого вышестоящего поставщика модели.
Планируемые функции (пока недоступны ни для личных ключей, ни для ключей организации)
Текущее поведение
Личные ключи API: все вышестоящие поставщики имеют свои собственные системы безопасности контента — ответы модели, запускающие фильтры контента, возвращаются с Finish_reason: «content_filter», а BazaarLink не применяет дополнительную фильтрацию. Ключи организации API: org_admin может настраивать пользовательские правила (block/redact/flag) в разделе «Защитные ограждения фильтра содержимого», применяемые до того, как текст достигнет модели.
Cursor IDE Интеграция
Используйте BazaarLink в качестве переопределения OpenAI курсора URL. Встроенная настройка с автоматическим преобразованием тел ответов API, нормализацией формата инструмента и соглашением о префиксе bz- для моделей Claude.
Быстрая настройка
В Курсоре откройте «Настройки» → «Модели», затем:
- Установите для переопределения OpenAI Base URL значение https://bazaarlink.ai/v1.
- Установите Override OpenAI API Key на ваш ключ sk-bl-... BazaarLink
- Добавьте желаемое название модели — см. ниже Claude (префикс bz-).
Префикс bz- (для моделей Claude)
Проверка Cursor на стороне клиента перенаправляет любое имя модели, начинающееся с claude-, посредством собственной интеграции Cursor с Anthropic, минуя переопределение URL. Чтобы заставить Cursor отправить запрос на BazaarLink, добавьте к имени модели префикс bz-. Сервер удаляет префикс и разрешает остальное через карту псевдонимов.
Варианты «точка-дефис» нормализованы: bz-claude-sonnet-4.6 и bz-claude-sonnet-4-6 разрешаются для одной и той же модели.
CURSOR_MODEL_MAP env var (переопределение оператора)
Для локальных развертываний BazaarLink установите эту переменную env, чтобы переназначить произвольные имена моделей на стороне курсора в канонические идентификаторы каталога:
CURSOR_MODEL_MAP=gpt-claude-sonnet:anthropic/claude-sonnet-4.6,gpt-opus:anthropic/claude-opus-4.7Теперь gpt-claude-sonnet, введенный в курсор, сопоставляется с серверной стороной anthropic/claude-sonnet-4.6. Полезно, когда вы хотите, чтобы курсор считал модель семейством GPT (поэтому она маршрутизируется через переопределение URL), в то время как вы на самом деле обслуживаете Claude.
Что происходит автоматически
Когда запрос достигает /api/v1/chat/completions, BazaarLink прозрачно применяет эти преобразования совместимости — вам не нужно ничего делать на стороне клиента:
- Автоматическое обнаружение тел ответов API — если тело содержит входные данные вместо сообщений, оно преобразуется в форму Chat Completions (курсор отправляет ответы в формате API для моделей семейства GPT).
- Wraps определения плоского инструмента — агент курсора отправляет { имя, описание, параметры } без оболочки функции. Мы обертываем его так, чтобы Anthropic не отклонялся как «Инструмент», не найденный в предоставленных инструментах.
- Приводит неверный инструмент Tool_choice — Курсор отправляет { type: "auto" } (форма объекта, без функции). Спецификация OpenAI требует строковой формы для auto/none/required, поэтому мы приводим.
- Strips поля только для OpenAI при маршрутизации к поставщикам, не относящимся к OpenAI — Parallel_tool_calls, logprobs, top_logprobs, logit_bias, service_tier, user удаляются перед пересылкой (в противном случае Anthropic возвращает 400).
- Maps max_output_tokens → max_tokens и полосы Responses-API-только поля (previous_response_id, усечение, фон, хранилище). Поле рассуждений сохраняется для тел, родных для Chat-Completions.
Режим агента курсора
Вызов инструментов осуществляется через стандартный поток вызова инструментов Chat Completions. Курсор отправляет инструменты (Shell, Read, Write, Grep и т. д.) с помощью Tool_choice: "auto"; BazaarLink перенаправляет выбранному вами провайдеру, который решает, следует ли вызывать инструмент. Вызовы инструментов возвращаются как стандартные OpenAItool_calls deltas; Курсор выполняется локально и продолжает диалог. Работает одинаково независимо от того, выбираете ли вы gpt-4o (родной OpenAI) или bz-claude-sonnet-4.6.
Модель маршрутизации
BazaarLink использует формат provider/model-name для маршрутизации запросов к правильному вышестоящему поставщику. Это дает вам доступ ко всем основным моделям через единую конечную точку API.
Формат идентификатора модели
{provider}/{model-name}
# Examples
openai/gpt-5.4-mini
anthropic/claude-sonnet-4.6
google/gemini-3-flash-preview
deepseek/deepseek-v3.2Приоритет маршрутизации
При отправке запроса BazaarLink разрешает вышестоящего поставщика в следующем порядке:
- Exact match — ищет маршрут модели, соответствующий полному идентификатору модели.
- Provider Подстановочный знак — возвращается к маршрутам поставщика/* (например, openai/*)
- Global wildcard — возвращается к * маршрутам с подстановочными знаками.
- Ключ поставщика по умолчанию — только для известной модели каталога, используются активированные ключи, помеченные как ключи по умолчанию.
Посмотрите все доступные модели на Страница моделей.
Автомаршрутизатор
Auto Router v3 распределяет запрос по одному из 14 уровней задач, а затем использует текущую основную и резервную цепочку, настроенную для этого уровня. Платные и бесплатные столы управляются отдельно в консоли администратора.
- auto — платная таблица маршрутизации. Успешно решенная модель оплачивается по опубликованной цене.
- auto:free — свободная таблица маршрутизации. Звонки в пределах бесплатной квоты стоят 0$; после достижения квоты финансируемые аккаунты могут переключиться на платную автоматическую маршрутизацию, если не отключен платный резервный вариант.
Как использовать
Установите модель «auto» (платная) или «auto:free» (бесплатная), чтобы включить автоматическую маршрутизацию:
curl https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Review this TypeScript function"}]}'Как версия 3 выбирает уровень
Общие уровни бывают простыми, стандартными, сложными и логическими. Специализированные уровни — это кодирование, видение, изображения, видео, данные, поиск, социальные сети, электронная почта, календарь и торговля. Результаты границ с низкой достоверностью повышаются на один уровень вместо угадывания вниз.
- Оценка уровней: сообщения, инструменты, длина, ключевые слова и структурные сигналы, выберите один из 14 уровней.
- Жесткие переопределения: видение, формальные рассуждения и специализированные задачи могут напрямую выбирать уровень.
- Поиск маршрута: выбранный режим считывает текущий основной уровень и до пяти резервных; отключенный уровень возвращает 503
- Execution: BazaarLink пробует основную, а затем настроенную резервную цепочку по порядку.
- Отслеживание ответов: решенная модель возвращается в теле ответа и заголовке X-Auto-Resolved-Model.
Таблицы текущих моделей
Приведенные ниже таблицы считываются из той же активной конфигурации, которая используется для вывода и консоли администратора. Администраторы могут изменить основную модель каждого уровня, резервный порядок и включенное состояние без развертывания.
auto
auto:free
Выбранные модели имеют ограниченный по скорости уровень бесплатного пользования. Бесплатное право на участие предоставляется платформой для каждой модели — назовите модель по ее обычному идентификатору; суффикс :free является необязательным псевдонимом (добавление его к платной модели не делает ее бесплатной).
Варианты модели
Добавьте суффикс к любому идентификатору модели, чтобы изменить поведение маршрутизации. BazaarLink поддерживает 7 типов вариантов.
Независимые идентификаторы моделей
Эти варианты существуют как отдельные модели со своей ценой и возможностями. BazaarLink сначала пытается использовать полный идентификатор модели (с суффиксом), а затем возвращается к базовой модели.
:free
:extended
:thinking
:exactoЯрлыки маршрутизации
Эти суффиксы изменяют выбор поставщика без изменения идентификации модели. Суффикс удаляется перед сопоставлением маршрутов.
:floor # lowest listed input price first
:nitro # throughput-oriented shortcut
:online # enable web-search routingПоведение нескольких поставщиков
Для восходящих потоков, поддерживающих варианты, суффиксы передаются как есть. Для прямых поставщиков (например, прямых OpenAI, Fireworks) суффикс удаляется, и BazaarLink обрабатывает маршрутизацию локально.
Бесплатные модели
Выбранные модели имеют ограниченный по скорости уровень бесплатного пользования. Бесплатное право на участие предоставляется платформой для каждой модели — назовите модель по ее обычному идентификатору; суффикс :free является необязательным псевдонимом (добавление его к платной модели не делает ее бесплатной).
- Вызовите обычный идентификатор модели (например, deepseek/deepseek-v4-flash). Запросы автоматически обслуживаются бесплатно в пределах бесплатной квоты.
- Бесплатное использование для каждого пользователя ограничено количеством запросов в минуту и дневным лимитом. Ограничения масштабируются в зависимости от уровня учетной записи (без кредита/зачислено).
- Если вы превысите бесплатную квоту и у вас появятся кредиты, запросы автоматически перейдут на платный уровень по указанной цене. Отправьте X-Free-Fallback: false, чтобы отключить автоматический возврат и вместо этого получить 429. Без кредитов запросы на превышение квоты возвращают 429.
- GET /api/v1/models перечисляет запись :free для каждой модели с уровнем бесплатного пользования; auto:free всегда маршрутизирует к свободной модели.
Модели с бесплатным уровнем прямо сейчас
Вызовите эти идентификаторы моделей напрямую, чтобы использовать бесплатную квоту. Список меняется по мере добавления или удаления моделей — запросите API для получения актуального набора.
deepseek/deepseek-v4-flashБесплатные ограничения квоты
Ваш дневной бюджет = дневной бюджет запроса выше × множитель уровня вашего аккаунта, рассчитываемый отдельно для каждой бесплатной модели. auto:free дополнительно обеспечивает ограничение количества параллельных IP-адресов. Отдельные модели могут иметь более жесткие или более мягкие ограничения, установленные платформой — в блоке «Уровень бесплатного пользования» на странице модели всегда отображаются действующие значения.
После исчерпания бесплатной квоты
Как только квота будет израсходована, запросы будут автоматически продолжаться по оплаченной цене модели до тех пор, пока на вашем счете есть баланс — никаких перерывов в обслуживании, оплата взимается точно так же, как и любой платный звонок. Если вы предпочитаете потерпеть неудачу, чем получить счет, отправьте заголовок X-Free-Fallback: false или отключите автоматический резервный вариант в настройках ключа; вместо этого вы получите 429. При отсутствии баланса запросы на превышение квоты всегда возвращают 429.
# Return 429 instead of switching to paid routing
-H "X-Free-Fallback: false"Управление организацией
Когда несколько человек используют BazaarLink, создайте организацию, чтобы группировать участников в команды и управлять ключами API, разрешенными моделями, бюджетами и выставлением счетов в одном месте. Организация владеет общим балансом, а команды и участники могут иметь свои собственные ежемесячные лимиты.
Трехуровневая бюджетная система
Каждый запрос API проверяет ограничения участников, команд и организаций. Ошибка ежемесячного бюджета или баланса возвращает HTTP 402; расход аварийного торможения возвращает HTTP 429.
- Member ежемесячный бюджет (OrgMember.monthlyBudget)
- Ежемесячный бюджет команды (Team.monthlyBudget)
- Org баланс кредитов (Организация.кредиты)
Отчеты об использовании
Откройте организацию и выберите «Отчеты», чтобы просмотреть ежемесячные расходы четырьмя способами:
- Обзор: общие расходы, ставка маржи, график дневных тенденций
- По команде: расходы на каждую команду, процент доли, разбивка по модели, использование бюджета.
- By Model: расходы на модель, средняя цена ($/1 млн токенов)
- По участнику: расходы на каждого участника — только org_admin
Все представления поддерживают экспорт CSV с префиксом BOM для прямой совместимости с Excel.
Создание организаций и управление ими
- Откройте «Настройки» и создайте организацию в разделе «Организации».
- Выберите название организации, чтобы открыть раздел управления
- Создавайте группы и при необходимости назначайте коды центров затрат и ежемесячные бюджеты.
- Пригласите участников по электронной почте, назначьте роль и команду.
- Issue API ключи для участников — использование автоматически помечается правильной командой/участником.
- Просмотрите страницу отчетов, чтобы узнать ежемесячные расходы с разбивкой по команде, модели или участнику.
Роли участников
Чем еще может управлять организация?
Помимо участников и команд, область управления организацией обеспечивает:
- API ключи: создавайте ключи для организации, команды или участника и ограничивайте их разрешенные модели.
- Фильтрация контента: блокируйте, редактируйте или регистрируйте конфиденциальный текст до того, как он достигнет модели.
- Разрешенные модели: ограничение моделей для организации, команды, участника или отдельного ключа API.
- Бюджеты и экстренное торможение: установите ежемесячные лимиты и minute/hour защитите расходы
- Отчеты и выставление счетов: просмотр расходов, использования модели, распределения команд, баланса, кредитных лимитов и платежей.
- Журналы изменений и безопасности: отслеживание изменений настроек, попаданий в фильтры содержимого и событий безопасности.
- Планы учреждения: организации образования могут дополнительно управлять студенческими сессиями и квотами
Контентная фильтрация
Это правила, принадлежащие организации, которые проверяют текст перед его отправкой в модель через ключ организации API. Администратор организации может включать, редактировать и тестировать правила в разделе «Настройки» → «Фильтрация контента».
- block: отклонить весь запрос с помощью HTTP 403 до того, как он достигнет модели.
- отредактировать: заменить совпавший текст на [REDACTED], затем отправить очищенный текст
- flag: отправить запрос без изменений и записать совпадение в журнал аудита организации.
- Используйте встроенные шаблоны конфиденциальных данных и ввода подсказок или создавайте правила для ключевых слов и регулярных выражений.
- До 100 правил; регулярные выражения проверяются на безопасность, а правила можно просмотреть с помощью тестового текста.
Управление API (v1)
Используйте элемент управления API, чтобы составлять список организаций, создавать команды, добавлять участников или обновлять бюджеты, не нажимая на веб-интерфейс. `/api/v1/orgs` управляет организацией и участниками; отчеты о затратах используют отдельные пути `/api/orgs/:orgId/reports/*`, указанные ниже.
Организации
/api/v1/orgsПеречислите все организации, к которым принадлежит вызывающий абонент, с указанием роли и места соединения.
/api/v1/orgs/:orgIdПолучите подробную информацию об организации, включая количество команд и участников.
curl https://bazaarlink.ai/api/v1/orgs \
-H "Authorization: Bearer sk-bl-YOUR_MANAGEMENT_KEY"Команды
/api/v1/orgs/:orgId/teamsСписок команд с указанием количества участников, упорядоченных по имени.
/api/v1/orgs/:orgId/teams/api/v1/orgs/:orgId/teams/:teamIdЧастичное обновление — включает только те поля, которые нужно изменить.
/api/v1/orgs/:orgId/teams/:teamId# Create a team
curl https://bazaarlink.ai/api/v1/orgs/{orgId}/teams \
-X POST \
-H "Authorization: Bearer sk-bl-YOUR_MANAGEMENT_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Engineering", "costCenterCode": "ENG-001", "monthlyBudget": 500}'Члены
/api/v1/orgs/:orgId/membersПеречислите всех участников с вложенным пользователем (id/name/email) и информацией о команде.
/api/v1/orgs/:orgId/members404, если у адреса электронной почты нет учетной записи BazaarLink. 409, если вы уже являетесь участником. Роль по умолчанию: участник.
/api/v1/orgs/:orgId/members/:memberIdЧастичное обновление роли, идентификатора команды или ежемесячного бюджета.
/api/v1/orgs/:orgId/members/:memberIdВозвращает 400, если целью является последний org_admin.
Отчеты API
Отчеты API обеспечивают работу страницы отчетов организации, а также могут использоваться для внутренних информационных панелей, ежемесячной сверки или автоматической загрузки CSV. org_admin имеет доступ к каждому отчету; billing_viewer может получить доступ к обзорным, командным и модельным отчетам, но не к расходам на каждого участника. Он принимает сеанс входа в систему или ключ управления носителем.
Укажите год и месяц (1–12). Обзор и по команде по умолчанию относятся к текущему месяцу, если они опущены, тогда как для по модели, по участнику и экспорта требуются оба значения. Предоставление обоих каждый раз позволяет избежать сюрпризов, связанных с конечной точкой.
Ссылка на ответ об ошибке
Разрешенные модели (белый список)
Ограничьте модели, которые могут вызывать ваша организация, команды или отдельные участники. Полезно для блокировки дорогих или непроверенных моделей, обеспечения соблюдения стандартов моделей или объединения команды с одним поставщиком.
Как это работает
- Три независимых уровня — Организация, Команда, Участник — каждый содержит свой собственный список (String[] в базе данных).
- Когда все три слоя пусты, разрешена любая модель (поведение по умолчанию).
- Если один или несколько слоев непусты, эффективный список представляет собой пересечение непустых слоев — модель должна быть разрешена для прохождения на каждом ограниченном уровне.
- Изменения вступают в силу в течение нескольких секунд (60 секунд в памяти + 5 минут в кэше Redis; оба очищаются при обновлении).
Формат шаблона
- Точное совпадение — например. openai/gpt-4o (только эта модель).
- Подстановочный знак поставщика — например. openai/* (любая модель с префиксом openai/).
- Только строчные буквы. Макс. 200 записей в списке, 100 символов в записи.
Где управлять
Организационный портал → Разрешенные модели. org_admin может редактировать списки организаций/команд/членов; Team_admin может редактировать свою команду и ее участников.
Ошибка ответа при блокировке
Вызовы запрещенной модели возвращают HTTP 403 со следующим телом:
Управление API
Все конечные точки принимают ключ управления веб-сеансом или носителем (sk-bl-...). PATCH заменяет весь список; передайте [] для очистки.
Автоматический выключатель (выключатель расхода)
A ограничение расходов с двумя окнами, которое блокирует дальнейшие запросы при резком росте затрат на исходящие ресурсы. Создан для предотвращения неконтролируемых сценариев, бесконечных циклов или злоупотреблений с украденными ключами до того, как они начнут стоить реальных денег.
Как это работает
- В Redis отслеживаются два фиксированных окна для каждой области: стоимость восходящего потока за 1 минуту и 1 час (USD).
- Если расходы какого-либо окна достигают порогового значения, все последующие запросы в этой области отклоняются до тех пор, пока окно не будет перезагружено.
- По умолчанию: 5 долларов США в минуту, 20 долларов США в час, включено по умолчанию.
- Counters живут в Redis с помощью TTL — восстановление происходит автоматически, ручной сброс не требуется для поездок org/team/участника.
Scopes (участник переопределяет команду, переопределяет организацию)
Каждый слой может устанавливать свои собственные пороговые значения. Порядок разрешения следующий: участник → команда → организация → платформа по умолчанию — первое ненулевое значение выигрывает для каждого поля (cbEnabled, cbMinuteUsd, cbHourlyUsd). Уровень
- Org — применяется ко всем ключам организации. Устанавливается в Оргпортале → Выключатель.
- Уровень команды — применяется ко всем ключам, помеченным этой командой. Переопределяет org для этих ключей. Уровень
- Member — применяется только к ключам, помеченным для этого участника. Переопределяет команду и организацию.
Поведение при отключении
При отключении запросы быстро завершаются сбоем (восходящий вызов не выполняется). Ответ — HTTP 429 с таким телом:
Журнал аудита
Записывается каждое событие отключения и каждое изменение конфигурации:
- Trip события — действия org.cb.tripped/team.cb.tripped/org_member.cb.tripped. Дедуплицируется до одной записи на область + окно в час, поэтому продолжительное отключение не переполняет журнал.
- Изменения конфигурации — действия org.cb.update/team.cb.update/org_member.cb.update. Захватите значения before/after плюс актер.
Управление API
Администраторы организации могут читать и обновлять настройки через API. Все конечные точки принимают ключ управления веб-сеансом или носителем (sk-bl-...). Отправьте любое подмножество полей в теле PATCH; null очищает поле и возвращается к родительскому слою.
API Поворот ключа
Регулярная смена ключей API — это лучшая практика обеспечения безопасности. BazaarLink поддерживает ротацию ключей без простоев — сначала создайте новый ключ, затем перенесите его, а затем отзовите старый. Ключи
Этапы вращения
- Создайте новый ключ API.
- Обновите приложение или переменные окружения, чтобы использовать новый ключ
- Убедитесь, что новый ключ работает правильно.
- Отключить или удалить старый ключ
Экспорт активности
Загрузите полную историю использования API как CSV для финансового аудита, анализа затрат или составления отчетов о соответствии.
CSV Экспорт
Войдите в систему и перейдите на страницу журналов. Нажмите кнопку «Экспортировать CSV» в правом верхнем углу, чтобы загрузить полную историю в виде файла CSV. Вызов API не требуется. Столбцы
CSV
JSON Использование API
Для программного доступа запросите агрегированную статистику, сгруппированную по периоду, модели или ключу:
Учет использования
Запросите подробную статистику использования через API, включая потребление токенов, анализ затрат и историю запросов.
Справочник по полю ответа
| Field | Type | Description |
|---|---|---|
| model | string | Model ID used (e.g., openai/gpt-4o) |
| provider | string | Upstream provider name |
| prompt_tokens | number | Input tokens consumed |
| completion_tokens | number | Output tokens generated |
| total_tokens | number | Total tokens (prompt + completion) |
| reasoning_tokens | number | Reasoning tokens (for thinking models) |
| cached_tokens | number | Prompt tokens served from cache |
| cost | number | Total cost in USD credits |
| duration_ms | number | End-to-end latency in milliseconds |
| throughput | number | Generation speed in tokens/sec |
| finish_reason | string | stop | length | content_filter | error |
| status | number | HTTP status code from upstream |
| app_name | string | null | Application name (X-Title header) |
| key_name | string | API key name used for the request |
План учреждения
План учреждения позволяет любому учреждению (школе, предприятию, конференции, правительству и т. д.) выдавать своим членам краткосрочные токены сеанса с помощью одного ключа уровня организации. Участникам не нужно создавать учетную запись платформы. Организация контролирует, какие участники могут запрашивать токены по домену электронной почты (например, nthu.edu.tw); все использование выставляется на счет организации. На этой странице в качестве примера используется образовательный сценарий — тот же механизм работает для любого учреждения, которому требуется краткосрочный многопользовательский временный доступ.
Обзор архитектуры
- Ключ учреждения — Начинается с sk-edu-. Создано администратором организации на странице ключей организации. Невозможно использовать напрямую в качестве токена-носителя для вызова API — прямые вызовы возвращают 403.
- Токен сеанса участника — Начинается с edu-sess-. Участники получают его после проверки электронной почты. Время жизни по умолчанию составляет 24 часа; может быть отозван администратором организации.
- Разрешенные домены — Организация настраивает, какие домены электронной почты (точное совпадение, без обхода суффикса) могут запрашивать сеанс.
- Атрибуция использования — Все запросы учащихся выставляются на счет организации. Использование можно просмотреть для каждого сеанса и для каждого электронного письма на панели управления организации.
Шаг 1. Запрос на активацию плана учреждения
Свяжитесь с отделом продаж или поддержки BazaarLink (sales@bazaarlink.ai / support@bazaarlink.ai) и сообщите нам, что ваша организация хочет включить институциональный план со списком разрешенных доменов электронной почты (например, nthu.edu.tw). Мы активируем функцию для вашей организации:
Шаг 2. Администратор организации создает ключ учреждения.
На странице «Ключи» организации API выберите «Образование» в качестве типа ключа при создании нового ключа (это внутреннее кодовое имя для ключа учреждения). Система генерирует ключ sk-edu-... и показывает его ONCE — сохраните его и распространите по официальным каналам членам этой организации.
Шаг 3. Участник запрашивает код подтверждения.
Участники могут запросить проверочный код двумя способами: (а) посетить / получить доступ и ввести ключ учреждения + свой институциональный адрес электронной почты — страница вызывает для них API; (б) напрямую вызвать API:
/api/edu/request-codeШаг 4. Участник отправляет код для обмена на токен сеанса.
/api/edu/verifyШаг 5. Используйте токен сеанса для вызова API.
Используйте токен edu-sess-... в качестве токена-носителя для любой конечной точки чата/завершения/встраивания:
curl -X POST https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer edu-sess-827d11a1ec67d175cfd4f67f929261f4" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-4.5",
"messages": [{"role": "user", "content": "Hello"}]
}'403 — Education keys cannot be used directly. Visit /access to exchange for a session.Это преднамеренные обратные ворота — они не позволяют учреждению передавать долгоживущие ключи отдельным членам.
Панель управления организации: мониторинг и отзыв
Организации образовательного типа получают вкладку «Образование» на боковой панели навигации, на которой представлены:
- Настройки — Настройте разрешенные домены, TTL, максимальное количество сеансов на одно письмо для каждого ключа, а также квоты на запрос / токен / USD для каждого сеанса.
- Сессии — Список всех активных/истекших/отмененных сессий; фильтровать по электронной почте; отменить отдельные сеансы.
- Статистика использования — Количество вызовов за сеанс, потребление токенов и накопленная стоимость.
Безопасность и ограничения
| Предмет | По умолчанию | Описание |
|---|---|---|
| Сеанс TTL | 24 часа | Срок действия токена сеанса; истекшие сеансы требуют повторной проверки. |
| Код подтверждения TTL | 15 минут | Срок действия кода подтверждения электронной почты. |
| Длина кода проверки | 6 цифр | Хранится в Redis как хэш HMAC-SHA256, а не в виде открытого текста. |
| Угадай предел | 5 попыток | В остальном код немедленно становится недействительным. |
| Время восстановления кода запроса | 60 секунд | Минимальный интервал между повторными запросами одного и того же (ключа, электронной почты). |
| Ограничение скорости на IP-адрес | 10 / 15 мин. | Антиспам. |
| Ограничение скорости на ключ | 100/час | Предотвращает массовую рассылку электронных писем. |
| Максимальное количество сеансов на одно письмо | 5 | Настраивается в eduConfig; предотвращает накопление токенов в одном почтовом ящике. |
| Распространение отзыва | ≤ 60 секунд | L1/L2 кэш TTL; после отзыва БД распространение на все узлы занимает до 60 секунд. |
Атрибуция выставления счетов и использования
Все запросы, выполненные с помощью токенов сеанса, выставляются на 100 % счет организации, владеющей ключом учреждения, в соответствии с тем, как вышестоящие поставщики (OpenAI / Anthropic / и т. д.) выставляют счета (за токен). Панель мониторинга организации поддерживает детализацию по сеансам, электронной почте и ключам.
Пожаловаться на отзыв
Помогите нам улучшить BazaarLink, сообщая о проблемах, ошибках или предложениях. Мы активно отслеживаем все каналы обратной связи.
Как сообщить
Что включить
- Идентификатор запроса (из поля идентификатора ответа)
- Использованная модель и отправленные параметры
- Ожидаемое и фактическое поведение
- Временные метки и частота возникновения проблем
- Сообщения об ошибках или коды состояния HTTP