v1 · REST · JSON
API referencia
Feltöltés, fájlkezelés, megosztási linkek és webhookok egyetlen REST API-n. Minden végpont a https://filemv.com/api alatt érhető el, JSON törzsekkel.
Gyorsindító — első feltöltés három lépésben
A feltöltés két külön hívás. A POST /api/uploads lefoglal egy munkamenetet, és visszaad egy uploadUrl címet. A fájl bájtjait erre a címre kell PUT kéréssel elküldeni. Ehhez a kéréshez nem kell API-kulcs, mert a munkamenet azonosítója hitelesíti. Végül a GET /api/uploads/{sessionId}/status hívással megvárod, hogy az állapot COMPLETE legyen.
A bájtok mindig a https://filemv.com/files/… címre mennek. 100 MiB fölötti fájloknál a folytatható /files/tus protokoll ajánlott.
import { readFile } from "node:fs/promises";
const base = "https://filemv.com";
const auth = { Authorization: `Bearer ${process.env.FILEMV_API_KEY}` };
const bytes = await readFile("video.mp4");
// 1. Reserve an upload session
const res = await fetch(`${base}/api/uploads`, {
method: "POST",
headers: { ...auth, "Content-Type": "application/json" },
body: JSON.stringify({ fileName: "video.mp4", contentType: "video/mp4", fileSizeBytes: bytes.length }),
});
const { sessionId, uploadUrl } = await res.json();
// 2. Send the bytes to uploadUrl (no API key needed: the session id authorizes it)
await fetch(uploadUrl, { method: "PUT", body: bytes, headers: { "Content-Length": String(bytes.length) } });
// 3. Poll until COMPLETE
const status = await fetch(`${base}/api/uploads/${sessionId}/status`, { headers: auth }).then((r) => r.json());
console.log(status.status, status.fileId);Hitelesítés
Külső alkalmazásokhoz az API-kulcs való: minden kérésen küldd el az Authorization: Bearer fmv_… fejlécben. A FileMv webes felülete bejelentkezési sütivel működik. Ugyanaz a végpont mindkét módon hívható.
API-kulcsajánlott
Authorization: Bearer fmv_…
Kulcsonként 600 kérés/perc. Minden előfizetéssel elérhető, felhasználónként legfeljebb 10 aktív kulcs lehet. Bármikor visszavonható.
Böngészős munkamenet (süti)
auth_token · X-XSRF-TOKEN
A webes felület HttpOnly sütivel lép be. Az adatot módosító kérésekhez X-XSRF-TOKEN fejléc kell. Saját integrációhoz ne ezt használd.
Kulcs létrehozása a felületen
- Nyisd meg a Beállítások → API-kulcsok oldalt (
/settings/api-keys). - Adj meg egy címkét, ha szeretnél (legfeljebb 80 karakter), majd kattints a Kulcs létrehozása gombra.
- A teljes kulcs csak egyszer jelenik meg, ezért azonnal másold ki. Utána a listában csak az eleje (például
fmv_AbC12x…), a címke, a létrehozás ideje és az utolsó használat látszik. - Egy kulcsot a sorában vonhatsz vissza. Egyszerre legfeljebb 10 aktív kulcsod lehet, e fölött a létrehozás
409 api_key_limit_reachedhibát ad.
Kulcs létrehozása API-n
A POST /api/me/api-keys hívás törzse opcionális, például {"label": "CI szerver"}. A válasz 201 státuszú, és tartalmazza a rawKey mezőt. Ezt soha többé nem kérheted le, mert a szerver csak a kulcs kulcsolt hash-ét tárolja. A GET listázza a kulcsokat, a DELETE /api/me/api-keys/{id} pedig 204-gyel visszavonja.
Formátum és használat
A kulcs a fmv_ előtagból és 40 URL-biztos base64 karakterből áll (~240 bit). A szerver csak a Bearer fmv_ kezdetű tokent tekinti API-kulcsnak. Ismeretlen vagy visszavont kulcs esetén a védett végpontok 401 authentication_required hibát adnak, a nyilvános végpontok pedig úgy futnak le, mintha nem küldtél volna kulcsot. Kérésenként csak egy hitelesítést küldj: vagy kulcsot, vagy sütit.
A kulcs teljes jogkört ad
Nincsenek hatókörök: a kulcs mindent megtehet, amit a tulajdonosa. Hozzáfér a fájlokhoz, a megosztásokhoz, a webhookokhoz, a kulcsok kezeléséhez és a fiókműveletekhez. Ha a tulajdonos admin, akkor az admin végpontokhoz is. Úgy kezeld, mint egy jelszót.
Jó gyakorlat
- Tárold környezeti változóban vagy titokkezelőben. Soha ne kerüljön kliensoldali vagy mobilkódba, sem repóba.
- Rotálás: hozz létre új kulcsot, állítsd át rá az integrációt, majd vond vissza a régit.
- Figyeld a
lastUsedAtértéket, hogy észrevedd a váratlan használatot. Minden integráció kapjon saját kulcsot.
Rate limit
| Szint | Limit | Kulcs |
|---|---|---|
| apikey | 600 / perc | API-kulcsonként |
| api | 60 / perc | IP-címenként (kulcs nélküli kérések) |
| auth | 10 / perc | IP-címenként, /api/auth/** |
Minden /api válasz tartalmazza az X-RateLimit-Limit (percenkénti keret), X-RateLimit-Remaining (hátralévő kérések) és X-RateLimit-Reset (hány másodperc múlva telik újra a keret) fejlécet. Túllépéskor 429 válasz jön Retry-After fejléccel és rate_limited kóddal.
Egyes funkcióknak saját limitje is van, ezek 429 too_many_requests hibát adnak:
- Anonim feltöltés: IP-címenként óránként 5 (egy kötegben legfeljebb 10 fájl, fájlonként legfeljebb 100 MiB).
- Jelszavas megosztás feloldása: megosztásonként és IP-címenként 15 percenként 5 próbálkozás.
- Megosztás lekérése: IP-címenként percenként 40, letöltési URL frissítése: percenként 30.
- Webhook létrehozása, tesztelése és titokcseréje: felhasználónként percenként 10.
Hibakódok
Minden hiba ugyanabban a formában érkezik: { "timestamp", "status", "error", "code", "message" }. Validációs hibánál ehhez egy errors lista is jön. A programodban a code mezőre építs.
| HTTP | code | Mikor |
|---|---|---|
| 400 | validation_failed, bad_request | Hiányzó vagy hibás mező a kérésben |
| 401 | authentication_required | Nincs, vagy érvénytelen az API-kulcs, illetve a munkamenet |
| 403 | access_denied | Másik felhasználó erőforrása |
| 404 | *_not_found | Ismeretlen azonosító vagy token |
| 409 | storage_quota_exceeded, api_key_limit_reached, vanity_slug_taken, webhook_limit_reached | Tárhelykvóta, kulcs- vagy webhook-limit, foglalt egyedi link |
| 413 | payload_too_large | A fájl nagyobb a megengedettnél |
| 429 | rate_limited, too_many_requests | Rate limit — várj a Retry-After szerint |
Feltöltés
Feltöltési munkamenet létrehozása
Feltöltési munkamenetet foglal a hitelesített felhasználónak. A válaszban kapott uploadUrl címre kell PUT-tal elküldeni a fájl bájtjait. parentFolderId megadásakor a mappa tulajdonjoga a foglalás előtt ellenőrzésre kerül. autoShare esetén a válasz azonnal tartalmaz egy link-only megosztási tokent és a rövid linket. autoShare mellett a publicListing: true listázott (PUBLIC) megosztást hoz létre, amelyet a keresőmotorok indexelhetnek.
Kérés törzseapplication/json
- autoShareboolean Opcionális. true esetén a feltöltéshez azonnal létrejön egy csak linkkel elérhető (SHARED) megosztás, és a válasz már a bájtok feltöltése előtt tartalmazza a tokent és a rövid linket. Alapértelmezés false: a fájl privát marad.
- contentTypestringkötelező A fájl MIME-típusa, ahogy a kliens felismerte. Kötelező.
- fileNamestringkötelező A feltöltött fájl megjelenített neve. Kötelező.
- fileSizeBytesinteger A fájl mérete bájtban. 0-nál nagyobb kell legyen.
- parentFolderIdstring Opcionális célmappa UUID. Ha nincs megadva, a fájl a gyökérmappába kerül. A szerver a foglalás előtt ellenőrzi, hogy a mappa a hívóé.
- publicListingboolean Opcionális, csak autoShare=true mellett számít. Ha true, a létrehozott megosztás PUBLIC (listázott) lesz a csak linkkel elérhető SHARED helyett: a megosztás oldalát a keresőmotorok indexelhetik, és a fájl a FileMv saját keresésében is megjelenik. autoShare nélkül figyelmen kívül marad (a feltöltés PRIVATE marad). Alapértelmezés: false.
Válaszok
- 201A munkamenet létrejött — a törzs tartalmazza a sessionId-t és az uploadUrl-t, autoShare esetén a megosztás adatait is
- 400Érvénytelen kérés (üres fileName/contentType, vagy nem pozitív méret)
- 401Hiányzó vagy érvénytelen Bearer token
- 404A parentFolderId ismeretlen, más felhasználóé, vagy fájlra mutat
- 409A feltöltés túllépné a felhasználó tárhelykvótáját
- 413A megadott fileSizeBytes meghaladja a hívó csomagjának fájlonkénti limitjét (freeUserMaxBytes / paidUserMaxBytes a GET /api/public/config válaszában) — code=payload_too_large
const res = await fetch("https://filemv.com/api/uploads", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"contentType": "image/jpeg",
"fileName": "vacation.jpg",
"fileSizeBytes": 1048576
}),
});
const data = await res.json();{
"directUrl": null,
"fileId": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091",
"sessionId": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091",
"shareToken": null,
"shortUrl": null,
"uploadUrl": "https://filemv.com/files/2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091"
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Munkamenet állapota
Visszaadja a feltöltési munkamenet állapotát ( PENDING , UPLOADING , COMPLETE , FAILED ). COMPLETE után a válasz tartalmazza a fileId értéket. Csak a munkamenetet létrehozó felhasználó kérdezheti le.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| sessionId kötelező | path | string | A POST /api/uploads által visszaadott munkamenet UUID-ja |
Válaszok
- 200A munkamenet aktuális állapota
- 400Hibás formátumú sessionId
- 401Hiányzó vagy érvénytelen Bearer token
- 403A munkamenet más felhasználóé
- 404Ismeretlen sessionId
- 502Belső hiba a feltöltési szolgáltatással való kommunikációban
const res = await fetch("https://filemv.com/api/uploads/3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77/status", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
const data = await res.json();{
"fileId": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091",
"fileName": "vacation.jpg",
"sessionId": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091",
"status": "COMPLETE"
}Ehhez a híváshoz paraméter kell — futtasd a saját környezetedből a fenti mintával.
Anonim feltöltési munkamenet
Bejelentkezés nélküli feltöltési munkamenet. IP-címenként óránként 5 feltöltés, fájlonként legfeljebb 100 MiB. A válasz rögtön tartalmazza a megosztási tokent. Captcha-token kellhet. publicListing: true esetén a megosztás listázott (PUBLIC) lesz, és a keresőmotorok indexelhetik; enélkül link-only (SHARED) marad.
Kérés törzseapplication/json
- captchaTokenstring Cloudflare Turnstile token. Akkor kötelező, ha a captcha be van kapcsolva.
- contentTypestringkötelező A fájl MIME-típusa, ahogy a kliens felismerte. Kötelező.
- fileNamestringkötelező A feltöltött fájl megjelenített neve. Kötelező.
- publicListingboolean Opcionális. Ha true, a megosztás PUBLIC (listázott) lesz: a megosztás oldalát a keresőmotorok indexelhetik, és a fájl a FileMv saját keresésében is megjelenik. Hiányzó vagy false érték esetén marad az alapértelmezett, csak linkkel elérhető SHARED mód (nem listázott, noindex).
- sizeBytesinteger A fájl mérete bájtban. 0-nál nagyobb kell legyen.
Válaszok
- 201A munkamenet létrejött — a törzs tartalmazza a feltöltési URL-t és a megosztási tokent
- 400Érvénytelen kérés (validation_failed: üres fileName/contentType, nem pozitív méret), vagy hiányzó / elutasított captcha (captcha_failed)
- 429Elérted az IP-címenkénti anonim feltöltési limitet
const res = await fetch("https://filemv.com/api/public/uploads", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
"contentType": "image/png",
"fileName": "screenshot.png",
"sizeBytes": 524288
}),
});
const data = await res.json();{
"directUrl": null,
"fileId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"sessionId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"shareToken": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"shortUrl": "https://filemv.com/…",
"uploadUrl": "https://filemv.com/…"
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Anonim feltöltés több fájllal
Legfeljebb 10 fájl anonim feltöltése egyetlen kéréssel, egy közös megosztási linkkel. Az egész köteg egy feltöltésnek számít az IP-alapú óránkénti limitben. publicListing: true esetén minden megosztás listázott (PUBLIC) lesz, és a keresőmotorok indexelhetik; enélkül link-only (SHARED) marad.
Kérés törzseapplication/json
- captchaTokenstring Cloudflare Turnstile token, egyszer ellenőrizve az egész kötegre. Akkor kötelező, ha a captcha be van kapcsolva.
- object[]kötelező A fájlok, amelyekhez munkamenet kell, megjelenítési sorrendben. Legalább egy, legfeljebb a kötegenkénti korlát (10).
- publicListingboolean Opcionális. Ha true, minden fájl megosztása PUBLIC (listázott) lesz: a megosztás oldalát a keresőmotorok indexelhetik, és a fájl a FileMv saját keresésében is megjelenik. Hiányzó vagy false érték esetén marad az alapértelmezett, csak linkkel elérhető SHARED mód (nem listázott, noindex).
Válaszok
- 201A munkamenetek létrejöttek — a törzs fájlonként egy választ tartalmaz, a kérés sorrendjében
- 400Érvénytelen kérés (üres lista, üres fileName/contentType, nem pozitív méret, túl sok fájl a kötegben), vagy hiányzó / elutasított captcha (captcha_failed)
- 413Legalább egy fájl nagyobb az anonim feltöltés fájlonkénti korlátjánál — semmi nem lett lefoglalva
- 429Elérted az IP-címenkénti anonim feltöltési limitet
const res = await fetch("https://filemv.com/api/public/uploads/batch", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
"files": [
{
"contentType": "image/jpeg",
"fileName": "nyaralas-2026.jpg",
"sizeBytes": 524288
}
]
}),
});
const data = await res.json();{
"files": [
{
"directUrl": null,
"fileId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"sessionId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"shareToken": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"shortUrl": "https://filemv.com/…",
"uploadUrl": "https://filemv.com/…"
}
]
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Fájlok
Mappa tartalmának listázása vagy keresés
Egy mappa közvetlen elemeit adja vissza, parentId nélkül a gyökér elemeit. A sort paraméter a rendezést választja. Nem üres q esetén mappától függetlenül keres a saját, nem törölt fájlok nevében.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| parentId | query | string | A szülőmappa UUID-ja. Elhagyva (vagy null értékkel) a gyökér elemei listázódnak. `q` megadásakor figyelmen kívül marad. |
| limit | query | integer | Oldalméret. A szerver felső korlátot alkalmaz. |
| page | query | integer | Oldalszám, 1-től számozva. |
| sort | query | string | Rendezés. Elfogadott értékek: `type,name` (alapértelmezés — előbb a mappák, aztán ábécérendben); `name` / `-name` (név szerint növekvő / csökkenő, mappák és fájlok vegyesen); `createdAt` / `-createdAt` (létrehozás ideje szerint, vegyesen); `size` / `-size` (csak fájlokra — előbb a mappák név szerint, utánuk a fájlok méret szerint). Ismeretlen érték esetén 400. |
| q | query | string | Opcionális keresőkifejezés a fájlnevekben, mappától függetlenül. Ha nem üres, a `parentId` figyelmen kívül marad, és a válasz a hívó összes nem törölt fájlja közül azokat listázza, amelyek neve kis- és nagybetűtől függetlenül tartalmazza ezt az értéket. Üresen vagy elhagyva a mappa tartalma listázódik. |
Válaszok
- 200A fájlok és mappák lapozott listája
- 400Nem támogatott `sort` érték
- 401Hiányzó vagy érvénytelen Bearer token
- 404A parentId ismeretlen, vagy más felhasználóé
const res = await fetch("https://filemv.com/api/files", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
const data = await res.json();{
"files": [
{
"commentsCount": 1,
"contentKind": "FILE",
"deletedAt": "2026-10-04T09:30:00Z",
"downloadCount": 1,
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"likesCount": 1,
"mimeType": "string",
"name": "vacation.jpg",
"parentId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"previewUrl": "https://filemv.com/…",
"shareMode": "string",
"shareToken": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"size": 1048576,
"type": "file",
"uploadedAt": "2026-10-04T09:30:00Z"
}
],
"pagination": {
"currentPage": 1,
"totalItems": 1,
"totalPages": 1
}
}Mappa létrehozása
Új mappát hoz létre a megadott szülőmappában, parentId nélkül a gyökérben.
Kérés törzseapplication/json
- namestringkötelező Az új mappa neve. Kötelező, legfeljebb 255 karakter, útvonal-elválasztó nélkül.
- parentIdstring Opcionális szülőmappa UUID. Nélküle a mappa a gyökérben jön létre.
Válaszok
- 201A mappa létrejött
- 400Érvénytelen kérés (üres név)
- 401Hiányzó vagy érvénytelen Bearer token
- 404A parentId ismeretlen, más felhasználóé, vagy fájlra mutat
- 409A célmappában már van ilyen nevű elem
const res = await fetch("https://filemv.com/api/files/folders", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Holiday 2025",
"parentId": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091"
}),
});
const data = await res.json();{
"commentsCount": 1,
"contentKind": "FILE",
"deletedAt": "2026-10-04T09:30:00Z",
"downloadCount": 1,
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"likesCount": 1,
"mimeType": "string",
"name": "vacation.jpg",
"parentId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"previewUrl": "https://filemv.com/…",
"shareMode": "string",
"shareToken": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"size": 1048576,
"type": "file",
"uploadedAt": "2026-10-04T09:30:00Z"
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Több elem áthelyezése
Több fájlt vagy mappát helyez át ugyanabba a célmappába ( parentId ) vagy a gyökérbe ( moveToRoot ) egyetlen kéréssel.
Kérés törzseapplication/json
- idsstring[]kötelező Az áthelyezendő fájlok és mappák UUID-jai. Legalább egy kell.
- moveToRootboolean Minden elem a gyökérmappába kerül. A parentId mellett nem adható meg.
- parentIdstring A célmappa UUID-ja. A moveToRoot mellett nem adható meg.
Válaszok
- 200Elemenkénti siker / hiba
- 400Érvénytelen kérés — üres ids, vagy sem parentId, sem moveToRoot nincs megadva
- 401Hiányzó vagy érvénytelen Bearer token
const res = await fetch("https://filemv.com/api/files/move", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"ids": [
"6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b",
"9a8b7c6d-5e4f-4321-9876-0fedcba98765"
],
"parentId": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091"
}),
});
const data = await res.json();{
"failed": [
{
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"message": "string",
"status": 1
}
],
"moved": [
{
"commentsCount": 1,
"contentKind": "FILE",
"deletedAt": "2026-10-04T09:30:00Z",
"downloadCount": 1,
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"likesCount": 1,
"mimeType": "string",
"name": "vacation.jpg",
"parentId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"previewUrl": "https://filemv.com/…",
"shareMode": "string",
"shareToken": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"size": 1048576,
"type": "file",
"uploadedAt": "2026-10-04T09:30:00Z"
}
]
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Kuka listázása
A hívó törölt, még visszaállítható fájljait listázza.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| includeFolders | query | boolean | A közvetlenül kukába tett mappákat is listázza (`folder` típus, `size` értéke null). Alapértelmezés `false`: csak fájlok. |
Válaszok
- 200A kukában lévő elemek, a legutóbb törölttel kezdve
- 401Hiányzó vagy érvénytelen Bearer token
const res = await fetch("https://filemv.com/api/files/trash", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
const data = await res.json();[
{
"commentsCount": 1,
"contentKind": "FILE",
"deletedAt": "2026-10-04T09:30:00Z",
"downloadCount": 1,
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"likesCount": 1,
"mimeType": "string",
"name": "vacation.jpg",
"parentId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"previewUrl": "https://filemv.com/…",
"shareMode": "string",
"shareToken": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"size": 1048576,
"type": "file",
"uploadedAt": "2026-10-04T09:30:00Z"
}
]Elem áthelyezése vagy átnevezése
Áthelyez és/vagy átnevez egy fájlt vagy mappát.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| id kötelező | path | string | A módosítandó elem UUID-ja |
Kérés törzseapplication/json
- moveToRootboolean Az elem a gyökérmappába kerül. A parentId mellett nem adható meg.
- namestring Az elem új neve. Legfeljebb 255 karakter, útvonal-elválasztó nélkül. A szerver levágja a széleken lévő szóközöket, és eltávolítja a vezérlőkaraktereket.
- parentIdstring A célmappa UUID-ja. A moveToRoot mellett nem adható meg.
Válaszok
- 200A módosított elem
- 400Érvénytelen kérés (nincs változtatás megadva, vagy túl hosszú a név)
- 401Hiányzó vagy érvénytelen Bearer token
- 404Az elem vagy a célmappa ismeretlen, illetve más felhasználóé
- 409Névütközés a célmappában, vagy az áthelyezés mappakört hozna létre
const res = await fetch("https://filemv.com/api/files/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "report-final.pdf",
"parentId": "2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091"
}),
});
const data = await res.json();{
"commentsCount": 1,
"contentKind": "FILE",
"deletedAt": "2026-10-04T09:30:00Z",
"downloadCount": 1,
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"likesCount": 1,
"mimeType": "string",
"name": "vacation.jpg",
"parentId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"previewUrl": "https://filemv.com/…",
"shareMode": "string",
"shareToken": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"size": 1048576,
"type": "file",
"uploadedAt": "2026-10-04T09:30:00Z"
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Elem áthelyezése a kukába
Fájlt vagy mappát helyez a kukába. Onnan visszaállítható, amíg végleg nem törlöd.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| id kötelező | path | string | A kukába helyezendő elem UUID-ja |
Válaszok
- 204Az elem a kukába került
- 401Hiányzó vagy érvénytelen Bearer token
- 404Az elem ismeretlen, vagy más felhasználóé
const res = await fetch("https://filemv.com/api/files/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
console.log(res.status); // 204Nincs választörzs.
Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Elem elérési útja
Visszaadja az elem szülőmappáinak láncát a gyökértől.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| id kötelező | path | string | Az elem UUID-ja, amelynek a szülőmappái kellenek |
Válaszok
- 200A szülőmappák sorrendben, a lista végén maga az elem
- 401Hiányzó vagy érvénytelen Bearer token
- 404Az elem ismeretlen, vagy más felhasználóé
const res = await fetch("https://filemv.com/api/files/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b/path", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
const data = await res.json();[
{
"commentsCount": 1,
"contentKind": "FILE",
"deletedAt": "2026-10-04T09:30:00Z",
"downloadCount": 1,
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"likesCount": 1,
"mimeType": "string",
"name": "vacation.jpg",
"parentId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"previewUrl": "https://filemv.com/…",
"shareMode": "string",
"shareToken": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"size": 1048576,
"type": "file",
"uploadedAt": "2026-10-04T09:30:00Z"
}
]Ehhez a híváshoz paraméter kell — futtasd a saját környezetedből a fenti mintával.
Végleges törlés
Véglegesen törli a kukában lévő elemet. Nem vonható vissza.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| id kötelező | path | string | A véglegesen törlendő, kukában lévő elem UUID-ja |
Válaszok
- 204Az elem véglegesen törölve (vagy már korábban törlődött)
- 401Hiányzó vagy érvénytelen Bearer token
- 404Az elem ismeretlen, vagy más felhasználóé
- 409Az elem létezik, de nincs a kukában — előbb a kukába kell helyezni
const res = await fetch("https://filemv.com/api/files/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b/permanent", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
console.log(res.status); // 204Nincs választörzs.
Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Visszaállítás a kukából
Visszaállít egy kukába helyezett elemet az eredeti helyére.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| id kötelező | path | string | A visszaállítandó, kukában lévő elem UUID-ja |
Válaszok
- 200A visszaállított elem
- 401Hiányzó vagy érvénytelen Bearer token
- 404Az elem ismeretlen, más felhasználóé, vagy nincs a kukában
- 409A visszaállítás helyén már van ilyen nevű elem, ezért a visszaállítás nem lehetséges
const res = await fetch("https://filemv.com/api/files/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b/restore", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
const data = await res.json();{
"commentsCount": 1,
"contentKind": "FILE",
"deletedAt": "2026-10-04T09:30:00Z",
"downloadCount": 1,
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"likesCount": 1,
"mimeType": "string",
"name": "vacation.jpg",
"parentId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"previewUrl": "https://filemv.com/…",
"shareMode": "string",
"shareToken": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"size": 1048576,
"type": "file",
"uploadedAt": "2026-10-04T09:30:00Z"
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Letöltési URL egy saját fájlhoz
Rövid ideig érvényes, aláírt letöltési URL-t ad a hívó saját fájljához.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| fileId kötelező | path | string | |
| inline | query | boolean | true = megtekintési (inline) URL; false (alapértelmezés) = letöltési URL. |
Válaszok
- 200A törzs tartalmazza az aláírt letöltési URL-t
- 401Hiányzó vagy érvénytelen Bearer token
- 403A fájl nem a hívóé
- 404A fájl nem található
- 410file_purged — a fájl tartalma törölve lett; URL nem készül
const res = await fetch("https://filemv.com/api/files/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b/download-url", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
const data = await res.json();{
"downloadUrl": "https://filemv.com/…"
}Ehhez a híváshoz paraméter kell — futtasd a saját környezetedből a fenti mintával.
ZIP készítése kiválasztott fájlokból
Egyszeri ZIP-archívumot készít a hívó 1–200 saját fájljából, és letöltési URL-t ad vissza hozzá.
Kérés törzseapplication/json
- fileIdsstring[]kötelező A ZIP-be kerülő saját fájlok UUID-jai, 1–200 darab. A határokon kívül 400 a válasz.
Válaszok
- 200Elfogadva — a törzs tartalmazza a ZIP letöltési URL-jét
- 400Érvénytelen kérés (üres vagy túl hosszú fileIds lista)
- 401Hiányzó vagy érvénytelen Bearer token
- 403Egy vagy több azonosító ismeretlen, törölt, vagy más felhasználóé
- 413A kiválasztott fájlok együtt nagyobbak a ZIP méretkorlátjánál — a hiba kódja archive_size_exceeded, mellette az actual_bytes és a cap_bytes érték
- 502A ZIP-kérés a méretkorláton kívüli okból nem teljesíthető
const res = await fetch("https://filemv.com/api/files/archive", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"fileIds": [
"6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b",
"9a8b7c6d-5e4f-4321-9876-0fedcba98765"
]
}),
});
const data = await res.json();{}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Megosztás
Láthatóság beállítása több elemre
Fájlokat és mappákat állít PUBLIC vagy PRIVATE láthatóságúra egyszerre (legfeljebb 200 azonosító). Mappánál a közvetlen fájlokra is érvényes.
Kérés törzseapplication/json
- idsstring[]kötelező Fájl- és mappaazonosítók vegyesen. Mappánál a beállítás a mappa közvetlen fájljaira is érvényes (csak egy szint mélyen). 1–200 azonosító kérésenként.
- modestringkötelező A cél-láthatóság: PUBLIC (megosztási token + nyilvános listázás) vagy PRIVATE (a token törlése + listázás megszüntetése). SHARED-hez a fájlonkénti PATCH végpontot használd. PRIVATE · PUBLIC · SHARED
Válaszok
- 200Minden elem sikerült — az `updated` kitöltve, a `failed` üres
- 207Részleges hiba — a `failed` nem üres (azonosítónként 404 / 409 / 410), az `updated` a sikeres elemeket tartalmazza
- 400Érvénytelen kérés (üres ids, vagy érvénytelen mód)
- 401Hiányzó vagy érvénytelen Bearer token
const res = await fetch("https://filemv.com/api/files/visibility", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"ids": [
"6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b",
"9a8b7c6d-5e4f-4321-9876-0fedcba98765"
],
"mode": "PUBLIC"
}),
});
const data = await res.json();{
"failed": [
{
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"message": "string",
"status": 1
}
],
"updated": [
{
"commentsCount": 1,
"contentKind": "FILE",
"deletedAt": "2026-10-04T09:30:00Z",
"downloadCount": 1,
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"likesCount": 1,
"mimeType": "string",
"name": "vacation.jpg",
"parentId": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"previewUrl": "https://filemv.com/…",
"shareMode": "string",
"shareToken": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"size": 1048576,
"type": "file",
"uploadedAt": "2026-10-04T09:30:00Z"
}
]
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Publikus
API-kulcsok
API-kulcsok listázása
A hívó API-kulcsait listázza a legújabbal kezdve, a visszavontakat is. A válasz csak a prefixet és a metaadatokat tartalmazza, a nyers kulcsot soha. A lastUsedAt legfeljebb percenként frissül.
Válaszok
- 200A hívó kulcsai
- 401Nincs hitelesítés (`authentication_required`)
const res = await fetch("https://filemv.com/api/me/api-keys", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
const data = await res.json();Nincs választörzs.
API-kulcs létrehozása
Új személyes API-kulcsot hoz létre. A nyers kulcs ( rawKey ) csak ebben a válaszban jelenik meg, utólag nem kérhető le, ezért azonnal mentsd el. A törzs és a label opcionális. Legfeljebb 10 aktív kulcs lehet.
Kérés törzseapplication/json
- labelstring Opcionális címke (legfeljebb 80 karakter) a kulcsok megkülönböztetéséhez. Üresen nincs címke.
Válaszok
- 201A kulcs létrejött — a `rawKey` csak ebben a válaszban látható
- 400A `label` hosszabb 80 karakternél (`validation_failed`)
- 401Nincs hitelesítés (`authentication_required`)
- 409A felhasználónak már 10 aktív kulcsa van (`api_key_limit_reached`)
const res = await fetch("https://filemv.com/api/me/api-keys", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"label": "CI server"
}),
});
const data = await res.json();Nincs választörzs.
Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
API-kulcs visszavonása
Visszavon egy kulcsot, a vele érkező kéréseket ezután elutasítja a szerver. Már visszavont kulcsnál nem történik semmi.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| id kötelező | path | string |
Válaszok
- 204Visszavonva
- 401Nincs hitelesítés (`authentication_required`)
- 404A hívónak nincs ilyen kulcsa (`api_key_not_found`)
const res = await fetch("https://filemv.com/api/me/api-keys/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
console.log(res.status); // 204Nincs választörzs.
Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Webhookok
Webhookok listázása
A regisztrált webhookokat listázza. Az aláíró titok maszkolva jelenik meg.
Válaszok
- 200A webhookok listája (üres is lehet)
- 401Hiányzó vagy érvénytelen hitelesítés
const res = await fetch("https://filemv.com/api/users/me/webhooks", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
const data = await res.json();[
{
"consecutiveFailures": 1,
"createdAt": "2026-10-04T09:30:00Z",
"disabledReason": "string",
"enabled": true,
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"signingSecretMasked": "string",
"url": "https://filemv.com/…"
}
]Webhook regisztrálása
Új HTTPS végpontot regisztrál. Az aláíró titkot ( signingSecret ) csak ez a válasz tartalmazza. PRO_CREATOR előfizetés kell hozzá, felhasználónként legfeljebb 5 webhook lehet.
Kérés törzseapplication/json
- urlstringkötelező A kézbesítési végpont HTTPS URL-je. Csak nyilvános címre mutathat.
Válaszok
- 201A webhook regisztrálva — a válasz egyszer tartalmazza a teljes aláíró titkot
- 400Érvénytelen kérés (üres vagy túl hosszú URL, vagy nem nyilvános címre mutat)
- 401Hiányzó vagy érvénytelen hitelesítés
- 409Elérted a felhasználónkénti webhook-limitet (webhook_limit_reached)
- 429Túl sok webhook-módosítás — a Retry-After fejléc mutatja, mennyit kell várni
const res = await fetch("https://filemv.com/api/users/me/webhooks", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"url": "https://example.com/webhook"
}),
});
const data = await res.json();{
"createdAt": "2026-10-04T09:30:00Z",
"enabled": true,
"id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"signingSecret": "4f9c2b7e1a6d3c8f0b5e2a9d7c4f1e8b3a6d9c2f5e8b1a4d7c0f3e6b9a2d5c8f",
"url": "https://example.com/webhook"
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Webhook módosítása
Módosítja a webhook URL-jét, illetve be- vagy kikapcsolja. Az újbóli bekapcsoláshoz előfizetés kell.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| id kötelező | path | string |
Kérés törzseapplication/json
- enabledboolean | null Új állapot. true = újra bekapcsolja, false = kikapcsolja, null = nem változik.
- urlstring | null Új kézbesítési URL. Csak nyilvános címre mutathat. Null esetén az URL nem változik.
Válaszok
- 200A módosított webhook (a titok maszkolva)
- 400Érvénytelen kérés (túl hosszú URL, vagy nem nyilvános címre mutat)
- 401Hiányzó vagy érvénytelen hitelesítés
- 404A webhook nem található, vagy más felhasználóé
const res = await fetch("https://filemv.com/api/users/me/webhooks/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"url": "https://example.com/webhook"
}),
});
const data = await res.json();{
"consecutiveFailures": 1,
"createdAt": "2026-10-04T09:30:00Z",
"disabledReason": "string",
"enabled": true,
"id": "3f9c1e2a-7b4d-4c1e-9a2f-0d8e6b1c5a77",
"signingSecretMasked": "string",
"url": "https://filemv.com/…"
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Webhook törlése
Törli a webhookot és a kézbesítési előzményeit.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| id kötelező | path | string |
Válaszok
- 204A webhook törölve
- 401Hiányzó vagy érvénytelen hitelesítés
- 404A webhook nem található, vagy más felhasználóé
const res = await fetch("https://filemv.com/api/users/me/webhooks/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
console.log(res.status); // 204Nincs választörzs.
Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Aláíró titok cseréje
Új aláíró titkot generál. A régi titok azonnal érvénytelenné válik, nincs átmeneti időszak.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| id kötelező | path | string |
Válaszok
- 200Az új aláíró titok (teljes, csak most látható)
- 401Hiányzó vagy érvénytelen hitelesítés
- 404A webhook nem található, vagy más felhasználóé
- 429Túl sok webhook-módosítás — a Retry-After fejléc mutatja, mennyit kell várni
const res = await fetch("https://filemv.com/api/users/me/webhooks/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b/rotate-secret", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
const data = await res.json();{
"createdAt": "2026-10-04T09:30:00Z",
"enabled": true,
"id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"signingSecret": "4f9c2b7e1a6d3c8f0b5e2a9d7c4f1e8b3a6d9c2f5e8b1a4d7c0f3e6b9a2d5c8f",
"url": "https://example.com/webhook"
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Teszt-kézbesítés küldése
Egyszeri webhook.test eseményt küld a végpontra, és szinkron visszaadja az eredményt.
Paraméterek
| Név | Hol | Típus | Leírás |
|---|---|---|---|
| id kötelező | path | string |
Válaszok
- 200A tesztkézbesítés eredménye (lásd a delivered mezőt)
- 401Hiányzó vagy érvénytelen hitelesítés
- 404A webhook nem található, vagy más felhasználóé
- 429Túl sok webhook-módosítás — a Retry-After fejléc mutatja, mennyit kell várni
const res = await fetch("https://filemv.com/api/users/me/webhooks/6f1e2d3c-4b5a-4987-8a6b-5c4d3e2f1a0b/test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.FILEMV_API_KEY}`,
},
});
const data = await res.json();{
"delivered": true,
"error": "string",
"statusCode": 1
}Ez a végpont adatot módosít — futtasd a saját környezetedből a fenti mintával.
Webhookok — kézbesítés és aláírás
A POST /api/users/me/webhooks hívással regisztrálhatsz egy HTTPS végpontot. Az eseményeket aláírt JSON POST kérésekként kapod. A webhookok minden csomagban elérhetők. Felhasználónként legfeljebb 5 webhook lehet. Privát, loopback vagy belső hálózati címre mutató URL-re a válasz 400 webhook_url_blocked.
Az aláírás ellenőrzése
Minden kézbesítés tartalmazza az X-FileMV-Signature: t=<unix>,v1=<hex> fejlécet. v1 = HMAC-SHA256(kulcs, "<t>." + nyers törzs), kisbetűs hexában. A kulcs a regisztrációkor kapott 64 karakteres signingSecret szövegként, UTF-8 bájtokként. Ne dekódold hexából. A nyers törzzsel számolj, még a JSON-feldolgozás előtt. A t értéket 5 percnél régebbi kérésnél utasítsd el. A szerver minden kézbesítési kísérletnél friss t értéket küld.
import crypto from "node:crypto";
// rawBody: the request body exactly as received (Buffer), before JSON.parse
export function verifyFileMvSignature(rawBody, header, secret, toleranceSec = 300) {
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const t = Number(parts.t);
if (!t || Math.abs(Date.now() / 1000 - t) > toleranceSec) return false;
const expected = crypto
.createHmac("sha256", Buffer.from(secret, "utf8"))
.update(`${t}.`)
.update(rawBody)
.digest("hex");
const a = Buffer.from(expected, "utf8");
const b = Buffer.from(parts.v1 ?? "", "utf8");
return a.length === b.length && crypto.timingSafeEqual(a, b);
}Események
share.download— egy e-mailben értesített címzett letöltöttshare.download.anonymous— névtelen letöltés egy megosztásbólcollect.uploaded— valaki feltöltött a gyűjtőlinkedreproofing.submitted— az ügyfél beküldte a válogatásátwebhook.test— a tesztkézbesítés
Kézbesítés
Csak a 2xx válasz számít sikernek, átirányítást nem követünk. Időkorlát: 5 mp csatlakozás, 10 mp válasz. Hiba esetén legfeljebb 6 próbálkozás jön: azonnal, majd 1 perc, 5 perc, 30 perc, 2 óra és 6 óra múlva. Ha 10 kézbesítés egymás után minden próbálkozással elbukik, a webhook letiltódik (disabledReason: auto_disabled_failures), és erről e-mailt kapsz. Az ismétlődéseket az X-FileMV-Delivery fejléc alapján szűrd.
Példa törzs
{
"id": "evt_5b0f2c1e-8d7a-4e3b-9c6f-1a2b3c4d5e6f",
"type": "share.download",
"created": 1791105000,
"data": {
"share_token": "Qm4t7Xz2Lp9Kd3Wf8Rb1Nc",
"share_name": "Holiday 2025",
"recipient_email_domain": "example.com",
"occurred_at": "2026-10-04T09:30:00Z"
}
}Changelog
Jelszavak: legfeljebb 72 bájt
A megosztási jelszó (POST /api/files/{fileId}/share, POST /api/folders/{folderId}/share, PATCH …/share/password, POST /api/files/share-multi) és a paste jelszava (POST /api/pastes) legfeljebb 72 bájt lehet UTF-8-ban (korábban 128 karakter). Ékezetes betűvel ez 36, emojival 18 karakter. A hosszabb jelszó 400 password_too_long választ kap — korábban egy része 500-as hibát adott.
Webhookok minden csomagban
A /api/users/me/webhooks végpontok (létrehozás, bekapcsolás, tesztküldés, titkos kulcs cseréje) már az ingyenes csomagban is használhatók, és a kézbesítés sem függ a csomagtól: a 403 webhook_paid_required válasz megszűnt.
Egyedi link minden csomagban
A PATCH /api/files/{fileId}/share/slug, a PATCH /api/folders/{folderId}/share/slug és a GET /api/share/slug-available végpont már az ingyenes csomagban is használható: a 403 vanity_slug_paid_required válasz megszűnt. A 403 ezeken a végpontokon mostantól csak azt jelenti, hogy a fájl vagy mappa nem a hívóé.
publicListing az egyfájlos anonim feltöltésnél is
A POST /api/public/uploads kérés is elfogadja az opcionális publicListing mezőt, ugyanazzal a jelentéssel, mint a kötegelt végpont: true esetén a megosztás PUBLIC (listázott) lesz, és a keresőmotorok indexelhetik; hiányzó vagy false érték esetén SHARED marad.
Listázott megosztás feltöltéskor: publicListing
Új, opcionális publicListing mező a POST /api/public/uploads/batch és (autoShare mellett) a POST /api/uploads kérésben. true esetén a megosztás PUBLIC (listázott) lesz, és a keresőmotorok indexelhetik; hiányzó vagy false érték esetén minden marad a régiben (SHARED). A GET /api/public/share/{token} válasz új indexable mezője jelzi, hogy a megosztás oldala indexelhető-e.
Megjelent a nyilvános API-referencia
A feltöltés, fájlkezelés, megosztás, API-kulcs és webhook végpontok dokumentációja, JavaScript, PHP és C# példákkal. Minden /api válasz X-RateLimit-Limit, -Remaining és -Reset fejlécet kap.