LanaChat

API: Media w Vault i podpisane przesyłanie plików

5 min czytaniaZaktualizowano Markdown

Vault przechowuje zdjęcia, filmy i notatki głosowe twórczyni, posegregowane w folderach. Każdy element jest Free, Teaser lub Paid z ceną w Stars. Pliki nigdy nie przechodzą przez API: prosisz o podpisany URL do przesłania, wysyłasz tam plik, a potem potwierdzasz.

Endpoints #

MethodPathDescriptionPermissionStatus
GET/mediaLista mediów (creator_id= wymagane, folder_id=, type=photo,video,voice, access=free,teaser,paid)can_setupPlanned
POST/media/uploadsPobierz podpisany URL do przesłania jednego pliku (ważny 15 minut)can_setupPlanned
POST/media/uploads/{upload_id}/completePotwierdź przesłanie; media zostaje utworzone i przetworzonecan_setupPlanned
GET/media/{id}Jedno media, jego podgląd i gdzie jest używanecan_setupPlanned
PATCH/media/{id}Zmień opis, dostęp, cenę lub foldercan_setupPlanned
DELETE/media/{id}Usuń je (odmowa, jeśli używa go krok skryptu)can_setupPlanned
GET/media/foldersFoldery w Vault twórczynican_setupPlanned
POST/media/foldersUtwórz foldercan_setupPlanned
PATCH/media/folders/{id}Zmień nazwę lub przenieś foldercan_setupPlanned
DELETE/media/folders/{id}Usuń pusty foldercan_setupPlanned

Obiekt 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"
}
PoleTypOpis
idstringZaczyna się od med_
creator_idstringCzyj Vault
typestringphoto, video lub voice
statusstringprocessing, ready lub failed (z powodem)
folder_idstring lub nullFolder w Vault
accessstringfree, teaser lub paid
starsnumber lub nullCena w Stars, wymagana gdy access to paid (1 do 100000)
descriptionstring lub nullPomaga AI wybrać właściwe media; nigdy nie jest pokazywana fanowi
preview_urlstring lub nullPodgląd, gdy media jest ready
created_atstringISO 8601, UTC

Media #

Lista mediów #

GET /media · can_setup

ParametrTypWymaganyOpis
creator_idstringTakTwórczyni
folder_idstringNieTylko ten folder
typestringNiephoto, video lub voice; kilka oddzielonych przecinkami
accessstringNiefree, teaser lub paid; kilka oddzielonych przecinkami
limit, cursornumber, stringNiePaginacja
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
}

Bez creator_id API odpowiada 400.

Przesyłanie pliku #

Trzy wywołania: prosisz o podpisany URL, wysyłasz plik, potwierdzasz.

Krok 1. POST /media/uploads · can_setup

ParametrTypWymaganyOpis
creator_idstringTakCzyj Vault go otrzymuje
file_namestringTakNazwa pliku, np. beach-01.jpg
content_typestringTakNa przykład image/jpeg lub video/mp4
size_bytesnumberTakRozmiar pliku, do 2 GB
folder_idstringNieFolder Vault, do którego trafi
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 jest ważny 15 minut.

Krok 2. Wyślij plik metodą PUT na url, z dokładnie podanymi headers (bez nagłówka 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

Krok 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 zmienia się z processing na ready (tworzone są podglądy i kopia do Telegrama) lub failed z powodem. Webhook media.ready powiadomi Cię o gotowości, zobacz Webhooks. Akceptowane formaty: JPEG, PNG, HEIC, MP4, MOV, OGG i M4A, do 2 GB.

Pobierz media #

GET /media/{id} · can_setup

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

Odpowiedź to obiekt media z podglądem i miejscami użycia. Nieznane id zwraca 404.

Cena i opis #

PATCH /media/{id} · can_setup

ParametrTypWymaganyOpis
accessstringNiefree, teaser lub paid
starsnumberGdy access to paid1 do 100000
descriptionstringNieCo pokazuje, dla AI
folder_idstring lub nullNiePrzenieś do innego folderu
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"}'

Odpowiedzią jest zaktualizowane media. stars jest wymagane, gdy access to paid (1 do 100000), inaczej API zwraca 400. Opis pomaga AI wybrać właściwe media; nigdy nie jest pokazywany fanowi.

Usuń media #

DELETE /media/{id} · can_setup

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

Media używane przez krok skryptu nie zostanie usunięte (409): najpierw usuń je ze skryptu.

Foldery #

Lista folderów #

GET /media/folders · can_setup

ParametrTypWymaganyOpis
creator_idstringTakCzyj Vault
curl "https://api.lanachat.ai/v1/media/folders?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Utwórz folder #

POST /media/folders · can_setup

ParametrTypWymaganyOpis
creator_idstringTakCzyj Vault
namestringTakNazwa folderu
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"}'

Zmień nazwę lub przenieś 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"}'

Usuń folder #

DELETE /media/folders/{id} · can_setup

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

Można usunąć tylko pusty folder; w przeciwnym razie API zwraca 409.

Najnowsze wieści o Lanie na Telegramie

Nowości i zaproszenia do bety, najpierw na kanale.