LanaChat

API : Médias du Vault et téléchargements signés

Lecture de 5 minMis à jour Markdown

Le Vault contient les photos, vidéos et notes vocales d’une créatrice, triées dans des dossiers. Chaque élément est Free, Teaser ou Paid avec un prix en Stars. Les fichiers ne transitent jamais par l’API : vous demandez une URL de téléchargement signée, envoyez le fichier là-bas, puis confirmez.

Endpoints #

MethodPathDescriptionPermissionStatus
GET/mediaLister les médias (creator_id= requis, folder_id=, type=photo,video,voice, access=free,teaser,paid)can_setupPlanned
POST/media/uploadsObtenir une URL signée pour uploader un fichier (valide 15 minutes)can_setupPlanned
POST/media/uploads/{upload_id}/completeConfirmer l’upload ; le média est créé et traitécan_setupPlanned
GET/media/{id}Un média, son aperçu et où il est utilisécan_setupPlanned
PATCH/media/{id}Modifier sa description, accès, prix ou dossiercan_setupPlanned
DELETE/media/{id}Supprimer (refusé si un script l’utilise)can_setupPlanned
GET/media/foldersDossiers du Vault d’une créatricecan_setupPlanned
POST/media/foldersCréer un dossiercan_setupPlanned
PATCH/media/folders/{id}Renommer ou déplacer un dossiercan_setupPlanned
DELETE/media/folders/{id}Supprimer un dossier videcan_setupPlanned

L’objet média #

{
  "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"
}
ChampTypeDescription
idstringCommence par med_
creator_idstringÀ qui appartient le Vault
typestringphoto, video ou voice
statusstringprocessing, ready ou failed (avec raison)
folder_idstring ou nullDossier du Vault
accessstringfree, teaser ou paid
starsnumber ou nullPrix en Stars, requis si access est paid (1 à 100 000)
descriptionstring ou nullAide l’IA à choisir le bon média ; jamais montré au fan
preview_urlstring ou nullAperçu, une fois le média ready
created_atstringISO 8601, UTC

Médias #

Lister les médias #

GET /media · can_setup

ParamètreTypeRequisDescription
creator_idstringOuiLa créatrice
folder_idstringNonSeulement ce dossier
typestringNonphoto, video ou voice ; plusieurs séparés par des virgules
accessstringNonfree, teaser ou paid ; plusieurs séparés par des virgules
limit, cursornumber, stringNonPagination
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
}

Sans creator_id, l’API répond 400.

Télécharger un fichier #

Trois appels : demandez une URL signée, envoyez le fichier, confirmez.

Étape 1. POST /media/uploads · can_setup

ParamètreTypeRequisDescription
creator_idstringOuiÀ qui appartient le Vault
file_namestringOuiNom du fichier, par exemple beach-01.jpg
content_typestringOuiPar exemple image/jpeg ou video/mp4
size_bytesnumberOuiTaille du fichier, jusqu’à 2 Go
folder_idstringNonDossier du Vault où le mettre
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 est valide 15 minutes.

Étape 2. Envoyez le fichier avec PUT à url, avec exactement les headers donnés (pas d’en-tête Authorization ici).

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

Étape 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"
}

Le status passe de processing à ready (aperçus et copie Telegram créés) ou failed avec une raison. Un webhook media.ready vous informe, voir Webhooks. Formats acceptés : JPEG, PNG, HEIC, MP4, MOV, OGG et M4A, jusqu’à 2 Go.

Obtenir un média #

GET /media/{id} · can_setup

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

La réponse est l’objet média, avec son aperçu et où il est utilisé. Un id inconnu répond 404.

Prix et description #

PATCH /media/{id} · can_setup

ParamètreTypeRequisDescription
accessstringNonfree, teaser ou paid
starsnumberSi access est paid1 à 100 000
descriptionstringNonCe que ça montre, pour l’IA
folder_idstring ou nullNonDéplacer dans un autre dossier
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 réponse est le média mis à jour. stars est requis si access est paid (1 à 100 000), sinon l’API répond 400. La description aide l’IA à choisir le bon média ; elle n’est jamais montrée au fan.

Supprimer un média #

DELETE /media/{id} · can_setup

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

Un média encore utilisé par un script est refusé (409) : retirez-le d’abord du script.

Dossiers #

Lister les dossiers #

GET /media/folders · can_setup

ParamètreTypeRequisDescription
creator_idstringOuiÀ qui appartient le Vault
curl "https://api.lanachat.ai/v1/media/folders?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Créer un dossier #

POST /media/folders · can_setup

ParamètreTypeRequisDescription
creator_idstringOuiÀ qui appartient le Vault
namestringOuiNom du dossier
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"}'

Renommer ou déplacer un dossier #

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

Supprimer un dossier #

DELETE /media/folders/{id} · can_setup

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

Seul un dossier vide peut être supprimé ; sinon l’API répond 409.

Les dernières nouvelles de Lana sur Telegram

Nouveautés et invitations à la bêta, en premier sur le canal.