Перейти к основному содержанию
LocoPal AiLocoPal Ai
Библиотека материаловИнтерфейсы библиотеки материалов

Руководство

Материалы

Отправка материалов-изображений, запрос статуса проверки и запрос списка материалов

Показать Markdown

Материалы

После отправки материал обрабатывается платформой асинхронно; использовать его в видеозадачах можно только после смены статуса с Processing на Active.

Отправка материала-изображения

POST/api/v1/materials/assets

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

Authorization: Bearer <API_KEY>.

Тело запроса · application/json

Prop

Type

image_url и data_url — можно передать только одно. image_url также может быть data:image/...;base64,..., и платформа обработает его как встроенное изображение. При использовании удалённого URL адрес должен быть http(s)://-адресом, который платформа может публично скачать (поддерживаются и http, и https), не зависеть от Cookie, Referer, страницы входа или сессии браузера и оставаться действительным на протяжении всей обработки на платформе.

Удалённый image_url сначала проходит через быстрый промежуточный кеш платформы, а затем зеркалируется библиотекой материалов; для обычных изображений это обычно занимает секунды. Платформа также поддерживает встроенные изображения: можно записать значение image_url как data:image/...;base64,... или использовать отдельное поле data_url. Для изображений, уже находящихся на стороне клиента, встроенная отправка позволяет дополнительно избежать одной внешней загрузки.

data_url загружает всё изображение в base64 (объём примерно в 1,33 раза больше оригинала); используйте его только тогда, когда действительно невозможно предоставить публичный адрес изображения: например, изображение находится за адресом, требующим входа, во внутренней сети или существует только как локальный файл. При использовании data_url время загрузки зависит от размера изображения и пропускной способности вызывающей стороны; платформа записывает изображение в краткосрочное временное промежуточное хранилище, а не в постоянное хранилище материалов платформы. После того как библиотека материалов завершит зеркалирование и материал перейдёт в Active, для превью в первую очередь используется preview_url, возвращённый библиотекой материалов, а временные файлы автоматически удаляются сервисом промежуточного хранения.

Материалы-изображения можно отправлять только в группы virtual; материалы группы real создаются в процессе авторизации образа реального человека по QR-коду.

request_id также можно передать через заголовок запроса Idempotency-Key. При повторной отправке в рамках одной учётной записи с тем же request_id платформа вернёт тот же материал, успешно созданный в первый раз, и не будет повторно создавать материал на стороне вышестоящего сервиса. Если request_id не передан, платформа автоматически сформирует стабильное значение на основе учётной записи, группы, названия и исходных данных изображения; повторные попытки с тем же изображением и названием также можно безопасно переиспользовать.

Пример запроса

curl -X POST "$LOCOPAL_BASE_URL/api/v1/materials/assets" \
  -H "Authorization: Bearer $LOCOPAL_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<JSON
{
  "group_id": "group-1789069780-5762d1",
  "request_id": "brand-character-front-001",
  "title": "角色正面定妆图",
  "image_url": "$LOCOPAL_IMAGE_URL",
  "tags": ["人物", "正面"]
}
JSON

При использовании локального изображения вместо этого передайте data_url:

{
  "group_id": "group-1789069780-5762d1",
  "request_id": "brand-character-front-001",
  "title": "角色正面定妆图",
  "file_name": "person.png",
  "data_url": "data:image/png;base64,iVBORw0KGgo..."
}

Если клиент хочет продолжать использовать поле image_url, можно также передать встроенное изображение:

{
  "group_id": "group-1789069780-5762d1",
  "request_id": "brand-character-front-001",
  "title": "角色正面定妆图",
  "image_url": "data:image/png;base64,iVBORw0KGgo..."
}

Параметры ответа

ПараметрТипОписание
codeintegerПри успехе — 0
msgstringПри успехе — 图片素材已提交
data.asset_idstringID материала, равен data.asset.id
data.asset.idstringID материала; в видеозадачах ссылка указывается как asset://<id>
data.asset.kindstringТип материала; для изображения — image
data.asset.titlestringНазвание материала (итоговое значение после автозаполнения)
data.asset.request_idstring / nullИдемпотентный ID запроса, использованный при данной загрузке
data.asset.platform_asset_idstringID материала в сервисе материалов, используется для диагностики; в текущем развёртывании обычно совпадает с id
data.asset.group_idstringID группы, к которой относится материал
data.asset.statusstringПосле приёма — Processing
data.asset.error_messagestring / nullПричина сбоя обработки; в нормальном случае — null
data.asset.notestring / nullПримечание; null, если не передано
data.asset.tagsstring[]Список тегов; обычно пустой массив, если не передано
data.asset.mime_typestring / nullMIME-тип, возвращённый сервисом материалов; null, если не возвращён
data.asset.bytesinteger / nullРазмер файла материала; null, если сервис материалов его не вернул
data.asset.created_atintegerВремя создания (Unix-секунды)
data.asset.updated_atintegerВремя обновления (Unix-секунды)

Тело ответа

{
  "code": 0,
  "data": {
    "asset_id": "asset-20260911035115-etexu",
    "asset": {
      "id": "asset-20260911035115-etexu",
      "platform_asset_id": "asset-20260911035115-etexu",
      "kind": "image",
      "title": "角色正面定妆图",
      "group_id": "group-1789069780-5762d1",
      "status": "Processing",
      "error_message": null,
      "note": null,
      "tags": [],
      "mime_type": null,
      "bytes": null,
      "created_at": 1789069876,
      "updated_at": 1789069876
    }
  },
  "msg": "图片素材已提交"
}

Успешная отправка означает лишь то, что материал принят; перед отправкой видеозадачи всё равно необходимо запросить статус.

Ответы с ошибками

HTTPmsgОписание
400缺少 group_idГруппа не указана
400image_url 必须是可公开下载的 http(s) 地址,当前为 …Протокол адреса не http / https или адрес неполный; используйте публичный http(s)-адрес либо data_url
400image_url 与 data_url 只能提交一个Оба поля переданы одновременно или не передано ни одного
400data_url 必须是 data:image/...;base64,... 格式Неверный формат data_url
400图片数据无效或超过 20MBДанные изображения пусты или превышают 20 MB
400素材名称不能为空 / 素材名称不能超过 64 个字符Ошибка валидации title
401Invalid tokenAPI Key отсутствует, неверен или истёк
404素材分组不存在或不属于当前账号Неверный group_id или группа не принадлежит текущей учётной записи
404素材分组不存在或不是虚拟素材分组Попытка отправить изображение в группу real
502 / 503素材服务暂不可用Сбой сервиса материалов; сохраните информацию о запросе и повторите попытку

Запрос одного материала

GET/api/v1/materials/assets/{asset_id}

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

Authorization: Bearer <API_KEY>.

Параметры запроса · path

Prop

Type

Пример запроса

curl "$LOCOPAL_BASE_URL/api/v1/materials/assets/asset-20260911035115-etexu" \
  -H "Authorization: Bearer $LOCOPAL_API_KEY"

Параметры ответа

ПараметрТипОписание
codeintegerПри успехе — 0
msgstringПри успехе — OK
data.assetobjectОбъект материала; поля совпадают с интерфейсом отправки

Значения data.asset.status и способы обработки:

СтатусЗначениеПоведение программы
ProcessingМатериал всё ещё обрабатывается или проверяетсяСохраните asset_id, запросите позже, не отправляйте материал повторно
ActiveМатериал можно использовать в задачах, поддерживающих этот тип материалаИспользуйте asset://<asset_id> в поле content видео
FailedСбой обработки материалаПрочитайте error_message, исправьте исходное изображение и создайте новый материал

Тело ответа

{
  "code": 0,
  "data": {
    "asset": {
      "id": "asset-20260911035115-etexu",
      "platform_asset_id": "asset-20260911035115-etexu",
      "kind": "image",
      "title": "角色正面定妆图",
      "group_id": "group-1789069780-5762d1",
      "status": "Active",
      "error_message": null,
      "note": null,
      "tags": [],
      "mime_type": null,
      "bytes": null,
      "created_at": 1789069876,
      "updated_at": 1789069877
    }
  },
  "msg": "OK"
}

При сбое проверки также возвращается HTTP 200, а причина сбоя находится в error_message:

{
  "code": 0,
  "data": {
    "asset": {
      "id": "asset-20260911035115-etexu",
      "status": "Failed",
      "error_message": "素材处理失败"
    }
  },
  "msg": "OK"
}

Ответы с ошибками

HTTPmsgОписание
401Invalid tokenAPI Key отсутствует, неверен или истёк
404素材不存在或无权访问Неверный ID материала, материал удалён или не принадлежит текущей учётной записи
502 / 503素材服务暂不可用Сбой сервиса материалов; сохраните информацию о запросе и повторите попытку

Запрос списка материалов

GET/api/v1/materials/assets

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

Authorization: Bearer <API_KEY>.

Параметры запроса · query

ПараметрТипОбязательныйПо умолчаниюОписание
pageintegerНет1Номер страницы
page_sizeintegerНет20Количество записей на страницу, максимум 100
group_idstringНет—Возвращать только материалы этой группы

Пример запроса

curl "$LOCOPAL_BASE_URL/api/v1/materials/assets?page=1&page_size=20&group_id=group-1789069780-5762d1" \
  -H "Authorization: Bearer $LOCOPAL_API_KEY"

Параметры ответа

ПараметрТипОписание
codeintegerПри успехе — 0
msgstringПри успехе — OK
data.totalintegerОбщее количество материалов, соответствующих условиям
data.page / data.page_sizeintegerПараметры пагинации текущего запроса
data.assetsarrayСписок материалов, поля совпадают с интерфейсом отправки

Тело ответа

{
  "code": 0,
  "data": {
    "assets": [
      {
        "id": "asset-20260911035115-etexu",
        "platform_asset_id": "asset-20260911035115-etexu",
        "kind": "image",
        "title": "角色正面定妆图",
        "group_id": "group-1789069780-5762d1",
        "status": "Active",
        "error_message": null,
        "note": null,
        "tags": [],
        "mime_type": null,
        "bytes": null,
        "created_at": 1789069876,
        "updated_at": 1789069877
      }
    ],
    "total": 1,
    "page": 1,
    "page_size": 20
  },
  "msg": "OK"
}

Ответы с ошибками

HTTPmsgОписание
401Invalid tokenAPI Key отсутствует, неверен или истёк
404素材分组不存在或无权访问Указанный group_id не существует или не принадлежит текущей учётной записи
500 / 502 / 503素材服务暂不可用Сбой сервиса материалов; сохраните информацию о запросе и повторите попытку
Эта страница была полезной?

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