LanaChat

API: Media din Vault și încărcări semnate

5 min de cititActualizat Markdown

Vault conține fotografiile, videoclipurile și notele vocale ale unei creatoare, sortate în foldere. Fiecare element este Free, Teaser sau Paid cu un preț în Stars. Fișierele nu trec niciodată prin API: ceri un URL de încărcare semnat, trimiți fișierul acolo, apoi confirmi.

Endpoints #

MethodPathDescriptionPermissionStatus
GET/mediaListează media (creator_id= obligatoriu, folder_id=, type=photo,video,voice, access=free,teaser,paid)can_setupPlanned
POST/media/uploadsObține un URL semnat pentru încărcarea unui fișier (valid 15 minute)can_setupPlanned
POST/media/uploads/{upload_id}/completeConfirmă încărcarea; media este creată și procesatăcan_setupPlanned
GET/media/{id}O media, previzualizarea ei și unde este folosităcan_setupPlanned
PATCH/media/{id}Schimbă descrierea, accesul, prețul sau folderulcan_setupPlanned
DELETE/media/{id}Șterge media (refuzat dacă un pas de script o folosește)can_setupPlanned
GET/media/foldersFolderele din Vault-ul unei creatoarecan_setupPlanned
POST/media/foldersCreează un foldercan_setupPlanned
PATCH/media/folders/{id}Redenumește sau mută un foldercan_setupPlanned
DELETE/media/folders/{id}Șterge un folder golcan_setupPlanned

Obiectul media #

{
  "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Începe cu med_
creator_idstringÎn al cui Vault se află
typestringphoto, video sau voice
statusstringprocessing, ready sau failed (cu motiv)
folder_idstring sau nullFolderul din Vault
accessstringfree, teaser sau paid
starsnumber sau nullPreț în Stars, obligatoriu când access este paid (1 până la 100.000)
descriptionstring sau nullAjută AI să aleagă media potrivită; nu se arată fanului
preview_urlstring sau nullO previzualizare, când media este ready
created_atstringISO 8601, UTC

Media #

Listează media #

GET /media · can_setup

ParameterTypeRequiredDescription
creator_idstringDaCreatoarea
folder_idstringNuDoar din acest folder
typestringNuphoto, video sau voice; mai multe separate prin virgulă
accessstringNufree, teaser sau paid; mai multe separate prin virgulă
limit, cursornumber, stringNuPaginare
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
}

Fără creator_id, API răspunde cu 400.

Încarcă un fișier #

Trei apeluri: ceri un URL semnat, trimiți fișierul acolo, confirmi.

Pasul 1. POST /media/uploads · can_setup

ParameterTypeRequiredDescription
creator_idstringDaÎn al cui Vault se încarcă
file_namestringDaNumele fișierului, ex. beach-01.jpg
content_typestringDaEx. image/jpeg sau video/mp4
size_bytesnumberDaDimensiunea fișierului, până la 2 GB
folder_idstringNuFolderul din Vault unde se pune
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-ul este valabil 15 minute.

Pasul 2. Trimite fișierul cu PUT la url, cu exact headers-urile date (fără header 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

Pasul 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 trece de la processing la ready (se fac previzualizări și copia pentru Telegram) sau failed cu motiv. Un webhook media.ready te anunță când, vezi Webhooks. Acceptate: JPEG, PNG, HEIC, MP4, MOV, OGG și M4A, până la 2 GB.

Obține o media #

GET /media/{id} · can_setup

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

Răspunsul este obiectul media, cu previzualizarea și unde este folosită. Un id necunoscut răspunde cu 404.

Preț și descriere #

PATCH /media/{id} · can_setup

ParameterTypeRequiredDescription
accessstringNufree, teaser sau paid
starsnumberCând access este paid1 până la 100.000
descriptionstringNuCe arată, pentru AI
folder_idstring sau nullNuMută în alt folder
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"}'

Răspunsul este media actualizată. stars este obligatoriu când access este paid (1 până la 100.000), altfel API răspunde cu 400. Descrierea ajută AI să aleagă media potrivită; nu se arată fanului.

Șterge o media #

DELETE /media/{id} · can_setup

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

O media folosită încă într-un pas de script este refuzată (409): scoate-o mai întâi din script.

Foldere #

Listează foldere #

GET /media/folders · can_setup

ParameterTypeRequiredDescription
creator_idstringDaÎn al cui Vault
curl "https://api.lanachat.ai/v1/media/folders?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Creează un folder #

POST /media/folders · can_setup

ParameterTypeRequiredDescription
creator_idstringDaÎn al cui Vault
namestringDaNumele folderului
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"}'

Redenumește sau mută un 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"}'

Șterge un folder #

DELETE /media/folders/{id} · can_setup

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

Doar un folder gol poate fi șters; altfel API răspunde cu 409.

Ultimele noutăți despre Lana pe Telegram

Noutăți și invitații în beta, mai întâi pe canal.