LanaChat

API: Media di Vault e upload firmati

5 min di letturaAggiornato Markdown

Il Vault contiene foto, video e note vocali di una creator, organizzati in cartelle. Ogni elemento è Free, Teaser o Paid con un prezzo in Stars. I file non transitano mai tramite l'API: si richiede un URL di upload firmato, si invia il file lì, poi si conferma.

Endpoints #

MethodPathDescrizionePermessoStato
GET/mediaElenca media (creator_id= richiesto, folder_id=, type=photo,video,voice, access=free,teaser,paid)can_setupPlanned
POST/media/uploadsOttieni un URL firmato per caricare un file (valido 15 minuti)can_setupPlanned
POST/media/uploads/{upload_id}/completeConferma l'upload; il media viene creato e processatocan_setupPlanned
GET/media/{id}Un media, la sua anteprima e dove viene usatocan_setupPlanned
PATCH/media/{id}Cambia descrizione, accesso, prezzo o cartellacan_setupPlanned
DELETE/media/{id}Elimina il media (rifiutato se uno step di uno script lo usa)can_setupPlanned
GET/media/foldersCartelle del Vault di una creatorcan_setupPlanned
POST/media/foldersCrea una cartellacan_setupPlanned
PATCH/media/folders/{id}Rinomina o sposta una cartellacan_setupPlanned
DELETE/media/folders/{id}Elimina una cartella vuotacan_setupPlanned

L'oggetto 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"
}
CampoTipoDescrizione
idstringInizia con med_
creator_idstringDi chi è il Vault
typestringphoto, video o voice
statusstringprocessing, ready o failed (con motivo)
folder_idstring o nullCartella del Vault
accessstringfree, teaser o paid
starsnumber o nullPrezzo in Stars, richiesto se access è paid (1 a 100.000)
descriptionstring o nullAiuta l'AI a scegliere il media giusto; mai mostrata ai fan
preview_urlstring o nullAnteprima, quando il media è ready
created_atstringISO 8601, UTC

Media #

Elenca media #

GET /media · can_setup

ParametroTipoObbligatorioDescrizione
creator_idstringSìLa creator
folder_idstringNoSolo questa cartella
typestringNophoto, video o voice; più valori separati da virgola
accessstringNofree, teaser o paid; più valori separati da virgola
limit, cursornumber, stringNoPaginazione
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
}

Senza creator_id l'API risponde con 400.

Carica un file #

Tre chiamate: richiedi un URL firmato, invia il file lì, conferma.

Step 1. POST /media/uploads · can_setup

ParametroTipoObbligatorioDescrizione
creator_idstringSìIl Vault che lo riceve
file_namestringSìNome del file, es. beach-01.jpg
content_typestringSìEs. image/jpeg o video/mp4
size_bytesnumberSìDimensione file, fino a 2 GB
folder_idstringNoCartella del Vault dove inserirlo
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"
}

L'URL è valido 15 minuti.

Step 2. Invia il file con PUT all'url, con esattamente gli headers indicati (senza 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

Step 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"
}

Lo status passa da processing a ready (anteprime e copia Telegram create) o failed con motivo. Un webhook media.ready ti avvisa, vedi Webhooks. Formati accettati: JPEG, PNG, HEIC, MP4, MOV, OGG e M4A, fino a 2 GB.

Ottieni un media #

GET /media/{id} · can_setup

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

La risposta è l'oggetto media, con anteprima e dove è usato. Un id sconosciuto risponde 404.

Prezzo e descrizione #

PATCH /media/{id} · can_setup

ParametroTipoObbligatorioDescrizione
accessstringNofree, teaser o paid
starsnumberSe access è paid1 a 100.000
descriptionstringNoCosa mostra, per l'AI
folder_idstring o nullNoSpostalo in un'altra cartella
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"}'

La risposta è il media aggiornato. stars è richiesto se access è paid (1 a 100.000), altrimenti l'API risponde 400. La descrizione aiuta l'AI a scegliere il media giusto; non è mai mostrata ai fan.

Elimina un media #

DELETE /media/{id} · can_setup

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

Un media usato da uno step di uno script viene rifiutato (409): rimuovilo prima dallo script.

Cartelle #

Elenca cartelle #

GET /media/folders · can_setup

ParametroTipoObbligatorioDescrizione
creator_idstringSìDi chi è il Vault
curl "https://api.lanachat.ai/v1/media/folders?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Crea una cartella #

POST /media/folders · can_setup

ParametroTipoObbligatorioDescrizione
creator_idstringSìDi chi è il Vault
namestringSìNome della cartella
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"}'

Rinomina o sposta una cartella #

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"}'

Elimina una cartella #

DELETE /media/folders/{id} · can_setup

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

Si può eliminare solo una cartella vuota; altrimenti l'API risponde 409.

Le ultime novità su Lana su Telegram

Novità e inviti alla beta, prima di tutto nel canale.