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

Руководство

Коды ошибок и диагностика

HTTP-статусы, значение кодов ошибок, типичные ошибки моделей и материалов, ограничение частоты запросов и шаги диагностики

Показать Markdown

Коды ошибок и диагностика

При диагностике сначала зафиксируйте: код состояния HTTP, идентификатор запроса, возвращённый платформой, ID модели, ID задачи, ID материала и исходный код ошибки.

Не фиксируйте API Key, Token сессии разрешения на использование образа или полный адрес загрузки материала; перед отправкой в поддержку платформы удалите конфиденциальные данные.

Значение HTTP-статусов

СтатусЗначениеДействие
200Запрос успешен (промежуточное состояние асинхронной задачи также 200)Читайте поле статуса в теле ответа
400Ошибка параметров, неверный формат тела запроса, отсутствует modelИсправьте запрос согласно error.message или msg
401API keys отсутствуют, указаны неверно или истеклиПроверьте Authorization и состояние ключа
403Нет прав (например, доступ к материалам другой учётной записи)Убедитесь, что ресурс принадлежит текущей учётной записи
404Ресурс не существует, не принадлежит текущей учётной записи, или не совпадает методСверьте ID; если путь верный, проверьте HTTP-метод
429Слишком частые запросыПовторите с задержкой, не повторяйте параллельно
500Внутренняя ошибка платформыЗафиксируйте идентификатор запроса и повторите; при постоянных сбоях обратитесь в поддержку
502Ошибка обработки материала или сбой зависимого сервисаПовторите позже; при постоянных сбоях обратитесь в поддержку

У 404 три причины — не считайте, что всегда «ID написан неверно»

Это наиболее частая ошибка при диагностике:

СитуацияНаблюдаемое поведение
Ресурс не существует / не принадлежит текущей учётной записиGET /api/v1/materials/assets/<不存在> → 404
GET отправлен на путь, поддерживающий только POSTGET /v1/chat/completions → 404; GET /v1/images/generations → 404
Опечатка в пути404

Получив 404, сначала проверьте, соответствует ли метод пути, и лишь затем подозревайте ID.

Если видеозадача не найдена, возвращается 400, а не 404

Это место не согласуется с другими интерфейсами и требует особого внимания:

ЗапросФактический статусТело ответа
GET /v1/video/generations/<不存在>400{"code":"task_not_exist","message":"task_not_exist","data":null}
GET /v1/videos/<不存在>400То же
GET /api/v1/materials/assets/<不存在>404{"code":404,"data":null,"msg":"素材不存在或无权访问"}

Запрос видеозадачи возвращается со статусом 400 + структура верхнего уровня {code, message, data}, это не 404 и не структура объекта error, описанная ниже.

Три структуры ответа с ошибкой

1. Интерфейсы генерации моделей / изображений / видео — объект error

При ошибке возвращается HTTP не 2xx с объектом error:

{
  "error": {
    "code": "invalid_parameter",
    "message": "请求参数不符合所选模型要求",
    "type": "invalid_request_error",
    "param": "size"
  }
}
ПолеОписание
codeКод ошибки, может быть пустой строкой (см. ниже)
messageЧитаемая причина, обычно содержит request id
typeИдентификатор типа ошибки. При сбое аутентификации, отсутствии модели и некорректном теле запроса на практике всегда new_api_error
paramПоявляется только при ошибках параметров и указывает, какое поле неверно

code может быть пустой строкой. На практике: и при сбое аутентификации, и при невозможности разобрать JSON тела запроса code равен "". Не определяйте «есть ли ошибка» по пустоте code — ориентируйтесь на код состояния HTTP и в первую очередь читайте message.

type — не стабильное поле классификации. Если нужна классификация, читайте code и не полагайтесь на значение type.

2. Интерфейсы библиотеки материалов — code верхнего уровня

Возвращается HTTP не 2xx, code совпадает с HTTP-статусом:

{ "code": 404, "data": null, "msg": "素材不存在或无权访问" }

3. Запрос видеозадачи — строковый code верхнего уровня

{ "code": "task_not_exist", "message": "task_not_exist", "data": null }

Обратите внимание: здесь code — строка task_not_exist, а не число.

request id: ключевой идентификатор для диагностики

Платформа записывает request id прямо в error.message, искать его в заголовках не нужно:

"message": "Invalid token (request id: 202609221135501066578648268d9d6uXuM5QgH)"

Извлечь одной командой:

curl -s "$LOCOPAL_BASE_URL/v1/models" \
  -H "Authorization: Bearer sk-invalid" \
  | grep -oE 'request id: [A-Za-z0-9]+'

Укажите этот request id при обращении в поддержку — это значительно сократит время диагностики.

Сбой аутентификации

Когда API keys отсутствуют, указаны неверно или истекли, все интерфейсы возвращают HTTP 401 и:

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

Обратите внимание, что code — пустая строка; именно поэтому выше мы предупреждали «не полагайтесь на code».

Ошибки моделей и генерации

Код ошибки / сообщениеПричинаДействие
Model name not specifiedВ теле запроса отсутствует поле modelДобавьте ID модели из /v1/models
model_not_foundID модели не существует, или у текущего ключа / группы нет этой моделиПовторно запросите /v1/models и используйте возвращённый id
No available channelВ текущей группе нет доступного каналаВыберите модель того же типа или обратитесь в поддержку платформы
invalid_parameterКомбинация параметров не поддерживается текущей модельюСкорректируйте размер, пропорции, длительность и т. п. согласно полю param
unknown_parameterТекущая модель / канал не распознаёт поле запроса (например, response_format в интерфейсе изображений)Удалите неподдерживаемое поле согласно param и используйте поведение модели по умолчанию
InvalidParameter / upstream_errorВышестоящая модель отклонила параметры (например, не выполнено минимальное число пикселей для изображения)Прочитайте message и скорректируйте размер или параметры
credit_balance_exhausted / insufficient_quotaНа текущем вышестоящем канале нет доступного балансаВыберите модель / канал того же типа или обратитесь в поддержку платформы для пополнения баланса канала
ResourceDownloadFailedАдрес референсного изображения / видео невозможно загрузить напрямуюИспользуйте публично доступный HTTPS-адрес или ссылку asset:// из библиотеки материалов
task_not_existЗапрашиваемый ID задачи не существует или не принадлежит текущей учётной записиСверьте ID задачи и учётную запись, от имени которой задача создавалась
video_generation_failedВидеозадача принята, но на этапе отправки вышестоящему провайдеру, обработки материалов, модерации или генерации произошёл сбойПрочитайте error.message в том же ответе; сохраните ID задачи, исправьте материалы или параметры и предложите пользователю повторно отправить задачу
Текущая модель не поддерживает библиотеку материалов реальных людейМатериал реального человека отправлен в модель без такой возможностиВыберите модель с поддержкой библиотеки материалов реальных людей; не обходите ограничение обычным URL изображения
insufficient_user_quotaБаланса учётной записи или квоты текущего API Key недостаточно для покрытия прогнозируемого расходаПополните баланс или скорректируйте параметры согласно «требуется в этот раз / доступно сейчас» и повторите; задача при этом не создаётся
缺少提示词:请在 prompt 或 content 的 text 元素中提供文本描述У видеозадачи нет текстового описанияДобавьте prompt или элемент text в content
content[0].role 不支持 ...Роль референсного материала не входит в список допустимыхИспользуйте reference_image, first_frame, last_frame, reference_video, reference_audio
素材库中找不到素材 ...Материал asset:// не существует или не принадлежит текущей учётной записиСначала отправьте материал и дождитесь статуса «доступен», либо сверьте учётную запись
task_concurrency_exceededЧисло одновременно обрабатываемых задач генерации для текущей учётной записи или платформы достигло предела (HTTP 429)Дождитесь завершения существующих задач согласно «сейчас N / предел M» и только затем отправляйте; не повторяйте подряд

Ошибки библиотеки материалов

HTTPСообщениеПричинаДействие
400请求体必须是 JSON 对象Тело запроса не является корректным JSONИсправьте тело запроса
400type 只能是 virtual 或 realНеверное значение typeИсправьте type
400素材分组名称不能为空 / 不能超过 64 个字符Название отсутствует или слишком длинноеИсправьте название
400素材分组说明不能超过 300 个字符Описание слишком длинноеСократите описание
400缺少 group_idПри отправке материала не указана группаДобавьте group_id
400image_url 必须是可公开下载的 http(s) 地址…Адрес не http(s) или неполныйИспользуйте публичный http(s)-адрес или data_url
400image_url 与 data_url 只能提交一个Переданы оба поля или ни одногоОставьте только одно поле
400data_url 必须是 data:image/...;base64,... 格式 / 图片数据无效或超过 20MBНеверный формат загружаемых данных или слишком большой размерИсправьте данные или используйте image_url
404素材不存在或无权访问ID материала неверен, материал удалён или не принадлежит текущей учётной записиИспользуйте asset_id, возвращённый при отправке материала
404素材分组不存在或无权访问 / 素材分组不存在或不属于当前账号ID группы неверен или группа не принадлежит текущей учётной записиИспользуйте ID группы в своей учётной записи
404素材分组不存在或不是虚拟素材分组Изображение отправляется в группу realИзображения можно отправлять только в группу virtual
429Слишком частые запросыСлишком быстрый опрос или слишком высокая параллельностьПовторите с задержкой согласно подсказке
500 / 502 / 503素材服务暂不可用Сбой сервиса материалов или функция не подключенаСохраните информацию о запросе и повторите; при постоянных сбоях обратитесь в поддержку

Незавершённая проверка материала — не ошибка: запрос возвращает 200, status равен Processing; просто продолжайте опрашивать тот же ID материала.

Пустой вывод рассуждающей модели — тоже не HTTP-ошибка: если вернулся 200, finish_reason равен length, а usage.completion_tokens_details.reasoning_tokens уже занимает весь лимит вывода, следует увеличить квоту вывода или перейти на нерассуждающую модель.

Ошибки разрешения на использование образа

СообщениеПричинаДействие
Сессия авторизации не существует или доступ запрещёнСессия истекла, уже использована или принадлежит другому пользователюТекущему пользователю нужно создать QR-код заново
Авторизация ещё не завершенаПользователь ещё не завершил сбор данных на телефонеСохраните QR-код и выполните разбор после завершения
Этот материал реального человека уже привязан к другому пользователюОдну и ту же группу материалов реального человека нельзя повторно использовать между учётными записямиИспользуйте исходную привязанную учётную запись или предложите человеку авторизоваться заново
Сервис материалов временно недоступенКанал авторизации сейчас недоступенЗафиксируйте время запроса и обратитесь в поддержку платформы; не заменяйте сбор материалов реального человека обычной загрузкой изображения

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

  • 429 означает слишком частые запросы; повторяйте с задержкой (backoff) согласно подсказке и не повторяйте параллельно;
  • статус материала рекомендуется запрашивать раз в 5–10 секунд, видеозадачу — раз в 5–15 секунд;
  • повторяйте только 429 и кратковременные 5xx; при 400 / 401 / 403 / 404 сразу исправляйте запрос;
  • перед повтором сначала запросите по ID задачи / ID материала, чтобы избежать повторного создания и повторного списания средств.

Быстрая самопроверка

  1. Соответствует ли Authorization формату Bearer <API Key> и включён ли ещё ключ;
  2. Указан ли в запросе домен, заданный сейчас в консоли (по умолчанию https://locopalai.com, для зарубежных моделей может быть https://us-api.locopalai.com);
  3. Взят ли model из data[].id ответа /v1/models;
  4. Достиг ли status материала значения Active;
  5. Является ли адрес референсного изображения / видео публично доступным http(s)-адресом, не зависящим от Cookie или Referer;
  6. Не отправлялись ли одна и та же задача / один и тот же материал повторно.

Что приложить при обращении в поддержку

  • время запроса и путь эндпоинта;
  • код состояния HTTP и полное тело ответа (API Key замаскирован);
  • идентификатор запроса, ID задачи или ID материала, возвращённые платформой;
  • задействованные ID моделей и параметры;
  • минимальный воспроизводимый пример запроса.
Эта страница была полезной?

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