Skip to content

Files API

Áttekintés

A Files API fájlokat hosztol a qr3-nál, és ehhez egy stabil URL-t biztosít. A QR-kód erre az URL-re mutat — a mögötte lévő fájlt bármikor kicserélheted anélkül, hogy a kódot újra ki kellene nyomtatnod.

Bázis URL: https://qr3.app/v1/files

Opcionálisan egy fájlt a code_id segítségével egy kódhoz társíthatsz. Ez az alapja a kódonkénti landing page-nek, amely felsorolja egy kód összes nyilvános fájlját.

A támogatott típusokat mágikus bájtok (magic bytes) alapján ellenőrizzük, nem a fájlnév alapján: PDF, PNG, JPEG, WebP, MP4, glTF/GLB, JSON. Egy olyan .pdf fájl, amely valójában nem PDF, elutasításra kerül.

Szerepkörök

MűveletSzükséges403-at kap
Összes GETbármely szerepkör
POST /upload, PUT /:idírási szerepkörviewer
DELETE /:idtörlési szerepkörviewer, contributor

A contributor egy speciális szabály: ez a szerepkör létrehozhat és módosíthat, de nem törölhet semmit.

Fájl feltöltése

POST /v1/files/upload

multipart/form-data formátumot vár.

MezőKötelezőLeírás
fileIgenA fájl
code_idNemKódhoz való társítás (a Workspace-hez kell tartoznia)
visibilityNemprivate (alapértelmezett) vagy public
Terminal window
curl -X POST https://qr3.app/v1/files/upload \
-H "Authorization: Bearer qr3_sk_..." \
-F "code_id=qr_a1b2c3d4" \
-F "visibility=public"

Válasz (HTTP 201):

{
"data": {
"id": "file_a1b2c3d4",
"code_id": "qr_a1b2c3d4",
"filename": "datenblatt.pdf",
"mime_type": "application/pdf",
"size_bytes": 284913,
"hash_sha256": "9f86d081884c7d65…",
"visibility": "public",
"status": "active",
"created_at": "2026-03-14T12:00:00.000Z",
"download_url": "https://qr3.app/v1/files/file_a1b2c3d4/download",
"public_url": "https://qr3.app/f/file_a1b2c3d4"
},
"meta": { "request_id": "req_abc123" }
}

A public_url csak visibility: "public" és status: "active" esetén van beállítva. A cím nem igényel bejelentkezést, és közvetlenül használható egy QR-kód cél-URL-jeként.

Fájlok listázása

GET /v1/files

Query paraméterek: code_id és visibility, mindkettő opcionális. A Workspace aktív fájljait adja vissza, a legújabbal kezdve.

Terminal window
curl "https://qr3.app/v1/files?code_id=qr_a1b2c3d4" \
-H "Authorization: Bearer qr3_sk_..."

Válasz (HTTP 200):

{
"data": [ { "id": "file_a1b2c3d4", "…": "" } ],
"meta": {
"request_id": "req_abc123",
"file_count": 3,
"total_size_bytes": 812004
}
}

Fájlinformációk lekérése

GET /v1/files/:id

Visszaadja a metaadatokat, beleértve a download_url-t (és nyilvános fájlok esetén a public_url-t). Minden szerepkör számára olvasható.

Fájl letöltése

GET /v1/files/:id/download

A tartalmat Content-Disposition: attachment fejléccel és Cache-Control: private, no-store beállítással streameli — a válasz tehát mindig az aktuális állapotot tükrözi, ellentétben a gyorsítótárazott nyilvános /f/:id URL-lel.

A 404 hiba kétféleképpen fordulhat elő: a fájl nem létezik a Workspace-ben (vagy törölve lett), vagy létezik ugyan, de a tárolt objektum hiányzik.

Fájl kicserélése

PUT /v1/files/:id

Kicseréli a tartalmat, de megtartja az id-t — és ezáltal a nyilvános /f/:id és a download_url címet is. A már kinyomtatott QR-kód érvényes marad.

Terminal window
curl -X PUT https://qr3.app/v1/files/file_a1b2c3d4 \
-H "Authorization: Bearer qr3_sk_..." \

A visibility, code_id és created_at megmaradnak; a filename, mime_type, size_bytes és hash_sha256 frissülnek. A fájlonkénti csomaglimit (Plan-Limit) ugyanúgy érvényes, mint a feltöltésnél, a Workspace tárhelylimitjét pedig a különbözet alapján ellenőrizzük. A „kódonkénti fájlok száma” korlát nem érvényes, hiszen nem adódik hozzá új fájl.

Fájl törlése

DELETE /v1/files/:id

Szoftveres törlés (Soft-Delete): A fájl azonnal eltűnik a listából, többé nem érhető el, és — ha nyilvános volt — nem kerül kiszolgálásra a /f/:id címen.

Válasz (HTTP 200):

{
"data": { "id": "file_a1b2c3d4", "deleted": true },
"meta": { "request_id": "req_abc123" }
}

Limitek

CsomagMax. fájlonként
Free5 MB
Pro25 MB
Business100 MB
Agency100 MB
Enterprise250 MB

Ezenkívül csomagonként érvényes egy maximális kódonkénti fájlszám és egy teljes Workspace-tárhelykorlát is. A feltöltési sebességkorlát (rate limit) Workspace-enként óránként 100 feltöltés.

Hibák

StátuszMikor
400Ismeretlen vagy nem egyező fájlaláírás, érvénytelen multipart törzs
401Hiányzó vagy érvénytelen API-kulcs
403A szerepkör nem jogosult írásra vagy törlésre
404A code_id vagy a fájl nem található a Workspace-ben; letöltésnél: az objektum hiányzik a tárolóból
413A fájl mérete meghaladja a csomaglimitet
422Hiányzó fájl, érvénytelen visibility, a „kódonkénti fájlok száma” korlát elérve, a Workspace tárhelylimitje túllépve
429Feltöltési sebességkorlát (100/óra/Workspace) vagy általános sebességkorlát

Kapcsolódó témakörök