Перейти к основному содержанию
LocoPal AiLocoPal Ai
Подключение к API

Руководство

Аутентификация и базовые соглашения

Базовый адрес, аутентификация по API Key, правила запросов и ответов, пагинация, ограничение частоты запросов, идемпотентность и соглашения об ошибках

Показать Markdown

Аутентификация и базовые соглашения

Эта страница описывает общие соглашения для всех эндпоинтов: базовый адрес, аутентификацию, формат запроса и ответа, пагинацию, ограничение частоты запросов, идемпотентность и обработку ошибок. Параметры и примеры конкретных эндпоинтов см. в разделе Обзор API и на страницах соответствующих интерфейсов.

Базовый адрес

ПараметрЗначение
Базовый адрес по умолчаниюhttps://locopalai.com
Адрес доступа к зарубежным моделямhttps://us-api.locopalai.com (если в консоли указан другой адрес, ориентируйтесь на консоль)
Интерфейсы моделей и генерации<基础地址>/v1/...
Интерфейсы библиотеки материалов<基础地址>/api/v1/materials/...
Формат запросаapplication/json; успешный ответ аудиоинтерфейса speech — бинарный аудиофайл
Кодировка символовUTF-8

Аутентификация

Все эндпоинты используют один и тот же платформенный API Key:

Authorization: Bearer sk-你的APIKey
Content-Type: application/json
ПараметрОписание
Способ полученияСоздаётся на странице «Ключи API» в консоли; ключ можно включать, отключать и удалять в любой момент
Область действияМодели, текст, изображения, видео, аудио и материалы используют один и тот же ключ; его также нужно передавать в GET-запросах
Требования к хранениюХраните только в серверных переменных окружения или сервисе управления секретами; не записывайте в браузер, клиентские установочные пакеты или публичные репозитории

Префикс Bearer можно опустить (но не рекомендуется)

На практике проверены четыре варианта записи:

Заголовок запросаРезультат
Authorization: Bearer <key>200 — рекомендуемый вариант
Authorization: <key> (голый token)200 — платформа его также принимает
authorization: bearer <key> (все строчные)200 — имя заголовка и название схемы регистронезависимы
(Authorization не отправляется вовсе)401

Платформа принимает и голый token, поэтому ответ 200 не означает, что клиент настроен правильно. И наоборот: если какой-то клиент возвращает 401, сначала проверьте, не пропускает ли он весь заголовок Authorization, а не подозревайте сразу сам ключ. Всегда используйте запись с Bearer.

Если API Key отсутствует, указан неверно, отключён или принадлежит другой учётной записи, возвращается HTTP 401:

{
  "error": {
    "code": "",
    "message": "Invalid token (request id: 202609221135501066578648268d9d6uXuM5QgH)",
    "type": "new_api_error"
  }
}

Обратите внимание: code — пустая строка. При сбое аутентификации платформа не заполняет code, поэтому не определяйте по пустоте code, завершился ли запрос ошибкой — ориентируйтесь на код состояния HTTP. request id из message можно сразу извлечь для обращения в поддержку.

Такая ошибка аутентификации на всех эндпоинтах имеет одинаковую структуру, а message содержит идентификатор запроса, что упрощает диагностику.

Структура ответа

У платформы три структуры ответа; клиент должен проверять и код состояния HTTP, и тело ответа.

Интерфейсы моделей, текста, изображений, видео и аудио

При успехе напрямую возвращается объект результата, при ошибке — HTTP не 2xx с объектом error:

{
  "error": {
    "code": "invalid_parameter",
    "message": "请求参数不符合所选模型要求",
    "type": "invalid_request_error",
    "param": "size"
  }
}

Исключение — запрос видеозадачи: если задача не найдена, возвращается 400, а тело ответа имеет структуру верхнего уровня { code, message, data } (code — строка task_not_exist), а не объект error. Подробнее см. в разделе Коды ошибок и диагностика. Значения code, type и param зависят от типа ошибки; при диагностике ориентируйтесь в первую очередь на message, а не сопоставляйте только фиксированный текст code.

Интерфейсы библиотеки материалов

И при успехе, и при ошибке используется единая структура:

{ "code": 0, "data": {}, "msg": "OK" }
{ "code": 401, "data": null, "msg": "API Key 无效或已失效" }

При ошибке код состояния HTTP совпадает с code (400 / 401 / 404 / 429 / 502 / 503). Незавершённая проверка материала — не ошибка, а поле status в ответе 200 (Processing / Active / Failed).

Пагинация

Интерфейсы списков, такие как группы материалов и список материалов, используют единые параметры пагинации:

ПараметрРасположениеПо умолчаниюМаксимумОписание
pagequery1—Номер страницы, начиная с 1
page_sizequery20100Количество записей на странице; при выходе за допустимый диапазон используется значение по умолчанию

В ответе data.total — общее количество записей, data.page и data.page_size — фактически применённые параметры пагинации. Всегда определяйте наличие следующей страницы по total, а не по «количеству записей в этом ответе».

Ограничение частоты запросов и повторные попытки

СценарийПоведение платформыРекомендация
Слишком частые запросыHTTP 429Повторите с задержкой (backoff), не повторяйте параллельно
Запрос статуса материалаЛёгкий эндпоинтОпрашивайте раз в 5–10 секунд, только по одному и тому же ID материала
Запрос видеозадачиЛёгкий эндпоинтОпрашивайте раз в 5–15 секунд, только по исходному ID задачи
Обрыв сетиРезультат запроса неизвестенСначала запросите по ID задачи / ID материала и убедитесь, что задача не создана, затем повторяйте
Кратковременный 5xxСервис или функция временно недоступныОграниченное число повторов с задержкой; при постоянных сбоях обратитесь в поддержку платформы

Повторяйте только 429 и кратковременные 5xx; 400, 401, 403, 404, 409 относятся к ошибкам запроса или прав доступа, повтор не поможет.

Идемпотентность и повторная отправка

Платформа не предоставляет сквозных автоматических ключей идемпотентности, поэтому обеспечьте однократную отправку на стороне бизнес-логики:

  • при каждом действии пользователя сначала создайте запись о бизнес-операции в собственной базе данных, и только затем вызывайте интерфейс платформы;
  • при создании видеозадачи и отправке материала сохраняйте ID, возвращённый платформой, и перед повтором проверяйте, не создан ли объект;
  • не отправляйте материал повторно, пока он находится в состоянии Processing, иначе будут созданы дубликаты материалов;
  • тарификация основана на фактически успешно отправленных задачах; повторная отправка приводит к повторному списанию средств.

Рекомендуемый порядок вызовов

GET  /v1/models                     选择模型,确认能力与可用性
POST /api/v1/materials/groups       需要素材时创建分组
POST /api/v1/materials/assets       提交图片,保存 asset_id
GET  /api/v1/materials/assets/{id}  轮询到 status 为 Active
POST /v1/video/generations          提交视频任务,用 asset://<id> 引用素材
GET  /v1/video/generations/{id}     轮询任务,读取结果或错误

Рекомендации по серверной интеграции

  1. Задавайте разумный тайм-аут для каждого запроса и различайте «тайм-аут» и «отмену пользователем»;
  2. Для 429 и кратковременных 5xx выполняйте ограниченное число повторов с задержкой, остальные ошибки сразу возвращайте вызывающей стороне;
  3. Сохраняйте номер бизнес-запроса, ID модели, ID материала, ID задачи и идентификатор запроса, возвращённый платформой, для упрощения диагностики;
  4. Не записывайте API Key в логи, отчёты об ошибках, клиентскую аналитику или скриншоты;
  5. Для больших файлов предпочтительно используйте публичный HTTPS-адрес объектного хранилища или ссылку asset:// из библиотеки материалов; не помещайте большие файлы в тело запроса.

Что дальше

Что вы хотите узнатьКуда перейти
Какие есть эндпоинтыОбзор API
Каталог моделей и текстовый диалогМодели и текстовый интерфейс
Генерация изображенийИнтерфейс генерации изображений
Генерация видео, несколько изображений и референсное видеоИнтерфейс генерации видео
Группы материалов, статус материалов, разрешение на использование образаИнтерфейсы библиотеки материалов
Как диагностировать ошибкиКоды ошибок и диагностика
Эта страница была полезной?

На этой странице