LanaChat

API: Медиа Vault и подписанные загрузки

Чтение 5 минОбновлено Markdown

Vault хранит фотографии, видео и голосовые заметки автора, отсортированные по папкам. Каждый элемент может быть Free, Teaser или Paid с ценой в Stars. Файлы никогда не передаются через API: вы запрашиваете signed upload URL, отправляете файл туда, затем подтверждаете.

Endpoints #

MethodPathDescriptionPermissionStatus
GET/mediaСписок медиа (creator_id= обязателен, folder_id=, type=photo,video,voice, access=free,teaser,paid)can_setupPlanned
POST/media/uploadsПолучить подписанный URL для загрузки одного файла (валиден 15 минут)can_setupPlanned
POST/media/uploads/{upload_id}/completeПодтвердить загрузку; медиа создаётся и обрабатываетсяcan_setupPlanned
GET/media/{id}Одно медиа, его превью и где используетсяcan_setupPlanned
PATCH/media/{id}Изменить описание, доступ, цену или папкуcan_setupPlanned
DELETE/media/{id}Удалить (отклоняется, если шаг скрипта его использует)can_setupPlanned
GET/media/foldersПапки Vault автораcan_setupPlanned
POST/media/foldersСоздать папкуcan_setupPlanned
PATCH/media/folders/{id}Переименовать или переместить папкуcan_setupPlanned
DELETE/media/folders/{id}Удалить пустую папкуcan_setupPlanned

The media object #

{
  "id": "med_5521",
  "creator_id": "cr_lea",
  "type": "photo",
  "status": "ready",
  "folder_id": "vf_3",
  "access": "paid",
  "stars": 300,
  "description": "Beach, golden hour, white bikini",
  "preview_url": "https://cdn.lanachat.ai/w/7Hq2/cr_lea/med_5521/preview.jpg",
  "created_at": "2026-10-06T14:21:40Z"
}
FieldTypeDescription
idstringНачинается с med_
creator_idstringЧей Vault
typestringphoto, video или voice
statusstringprocessing, ready или failed (с причиной)
folder_idstring или nullПапка Vault
accessstringfree, teaser или paid
starsnumber или nullЦена в Stars, обязательна при access = paid (от 1 до 100000)
descriptionstring или nullПомогает AI выбрать нужное медиа; фанам не показывается
preview_urlstring или nullПревью, когда медиа ready
created_atstringISO 8601, UTC

Media #

List media #

GET /media · can_setup

ParameterTypeRequiredDescription
creator_idstringДаАвтор
folder_idstringНетТолько эта папка
typestringНетphoto, video или voice; несколько через запятую
accessstringНетfree, teaser или paid; несколько через запятую
limit, cursornumber, stringНетПагинация
curl "https://api.lanachat.ai/v1/media?creator_id=cr_lea&type=photo&access=paid" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
{
  "data": [
    { "id": "med_5522", "creator_id": "cr_lea", "type": "photo", "status": "ready", "folder_id": "vf_3", "access": "paid", "stars": 250, "description": "Mirror, black dress", "preview_url": "https://cdn.lanachat.ai/w/7Hq2/cr_lea/med_5522/preview.jpg", "created_at": "2026-10-06T14:25:10Z" },
    { "id": "med_5521", "creator_id": "cr_lea", "type": "photo", "status": "ready", "folder_id": "vf_3", "access": "paid", "stars": 300, "description": "Beach, golden hour, white bikini", "preview_url": "https://cdn.lanachat.ai/w/7Hq2/cr_lea/med_5521/preview.jpg", "created_at": "2026-10-06T14:21:40Z" }
  ],
  "next_cursor": null
}

Без creator_id API возвращает 400.

Upload a file #

Три вызова: запросить подписанный URL, отправить файл туда, подтвердить.

Шаг 1. POST /media/uploads · can_setup

ParameterTypeRequiredDescription
creator_idstringДаЧей Vault принимает файл
file_namestringДаИмя файла, например beach-01.jpg
content_typestringДаНапример image/jpeg или video/mp4
size_bytesnumberДаРазмер файла, до 2 ГБ
folder_idstringНетПапка Vault для файла
curl -X POST https://api.lanachat.ai/v1/media/uploads \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "file_name": "beach-01.jpg", "content_type": "image/jpeg", "size_bytes": 2483201, "folder_id": "vf_3"}'
{
  "upload_id": "up_7781",
  "url": "https://uploads.lanachat.ai/w/7Hq2/up_7781?X-Signature=…&X-Expires=1759760100",
  "method": "PUT",
  "headers": { "Content-Type": "image/jpeg" },
  "expires_at": "2026-10-06T14:35:00Z"
}

URL действителен 15 минут.

Шаг 2. Отправьте файл с помощью PUT на url, с точно такими же headers (без заголовка Authorization).

curl -X PUT "https://uploads.lanachat.ai/w/7Hq2/up_7781?X-Signature=…&X-Expires=1759760100" \
  -H "Content-Type: image/jpeg" --data-binary @beach-01.jpg

Шаг 3. POST /media/uploads/{upload_id}/complete · can_setup

curl -X POST https://api.lanachat.ai/v1/media/uploads/up_7781/complete \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"
{
  "id": "med_5521",
  "creator_id": "cr_lea",
  "type": "photo",
  "status": "processing",
  "folder_id": "vf_3",
  "access": "paid",
  "stars": null,
  "description": null,
  "preview_url": null,
  "created_at": "2026-10-06T14:21:40Z"
}

status меняется с processing на ready (создаются превью и копия для Telegram) или failed с причиной. Вебхук media.ready уведомит, когда готово, см. Webhooks. Поддерживаются: JPEG, PNG, HEIC, MP4, MOV, OGG и M4A, до 2 ГБ.

Get a media #

GET /media/{id} · can_setup

curl https://api.lanachat.ai/v1/media/med_5521 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Ответ, объект медиа с превью и информацией, где используется. Неизвестный id возвращает 404.

Price and describe #

PATCH /media/{id} · can_setup

ParameterTypeRequiredDescription
accessstringНетfree, teaser или paid
starsnumberПри access = paidОт 1 до 100000
descriptionstringНетЧто показывает, для AI
folder_idstring или nullНетПереместить в другую папку
curl -X PATCH https://api.lanachat.ai/v1/media/med_5521 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"access": "paid", "stars": 300, "description": "Beach, golden hour, white bikini"}'

Ответ, обновлённое медиа. stars обязателен при access = paid (от 1 до 100000), иначе API вернёт 400. Описание помогает AI выбрать нужное медиа; фанам не показывается.

Delete a media #

DELETE /media/{id} · can_setup

curl -X DELETE https://api.lanachat.ai/v1/media/med_5521 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Медиа, которое ещё используется в шаге скрипта, удалить нельзя (409): сначала уберите его из скрипта.

Folders #

List folders #

GET /media/folders · can_setup

ParameterTypeRequiredDescription
creator_idstringДаЧей Vault
curl "https://api.lanachat.ai/v1/media/folders?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Create a folder #

POST /media/folders · can_setup

ParameterTypeRequiredDescription
creator_idstringДаЧей Vault
namestringДаИмя папки
curl -X POST https://api.lanachat.ai/v1/media/folders \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "name": "Beach"}'

Rename or move a folder #

PATCH /media/folders/{id} · can_setup

curl -X PATCH https://api.lanachat.ai/v1/media/folders/vf_3 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Beach, summer"}'

Delete a folder #

DELETE /media/folders/{id} · can_setup

curl -X DELETE https://api.lanachat.ai/v1/media/folders/vf_3 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Удалить можно только пустую папку; иначе API вернёт 409.

Последние новости о Lana в Telegram

Новые релизы и приглашения в бету, первыми в канале.