Skip to content

Files API

Pregled

Files API hosta datoteke na qr3 i pruža stabilan URL za njih. QR kod usmjerava na taj URL — datoteku iza njega možete zamijeniti u bilo kojem trenutku bez ponovnog tiskanja koda.

Bazni URL: https://qr3.app/v1/files

Opcionalno možete povezati datoteku s kodom putem parametra code_id. To je osnova za landing stranicu po kodu koja prikazuje sve javne datoteke nekog koda.

Podržani tipovi provjeravaju se putem magic byte-a, a ne prema nazivu datoteke: PDF, PNG, JPEG, WebP, MP4, glTF/GLB, JSON. Datoteka .pdf koja zapravo nije PDF bit će odbijena.

Uloge

OperacijaPotrebnoDobiva 403
Svi GETbilo koja uloga
POST /upload, PUT /:iduloga s pravom pisanjaviewer
DELETE /:iduloga s pravom brisanjaviewer, contributor

Posebno pravilo vrijedi za ulogu contributor: ova uloga može stvarati i mijenjati, ali ne može ništa uklanjati.

Učitavanje datoteke

POST /v1/files/upload

Očekuje multipart/form-data.

PoljeObveznoOpis
fileDaDatoteka
code_idNePovezivanje s kodom (mora pripadati radnom prostoru)
visibilityNeprivate (zadano) ili 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"

Odgovor (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" }
}

public_url je postavljen samo uz visibility: "public" i status: "active". Adresa ne zahtijeva prijavu i prikladna je izravno kao ciljni URL za QR kod.

Popis datoteka

GET /v1/files

Upit (Query): code_id i visibility, oba opcionalna. Vraća aktivne datoteke radnog prostora, najnovije prve.

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

Odgovor (HTTP 200):

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

Dohvaćanje informacija o datoteci

GET /v1/files/:id

Vraća metapodatke uključujući download_url (i public_url za javne datoteke). Čitljivo za sve uloge.

Preuzimanje datoteke

GET /v1/files/:id/download

Preuzima sadržaj kao strujanje (stream) s Content-Disposition: attachment i Cache-Control: private, no-store — odgovor je stoga uvijek trenutačno stanje, za razliku od predmemoriranog javnog /f/:id URL-a.

404 se može dogoditi u dva slučaja: datoteka ne postoji u radnom prostoru (ili je obrisana) ili postoji, ali nedostaje pohranjeni objekt.

Zamjena datoteke

PUT /v1/files/:id

Mijenja sadržaj i zadržava id — a time i javnu /f/:id te download_url adresu. Već otisnuti QR kod ostaje važeći.

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

visibility, code_id i created_at ostaju nepromijenjeni; filename, mime_type, size_bytes i hash_sha256 se ažuriraju. Ograničenje paketa po datoteci vrijedi isto kao i kod učitavanja, a ograničenje pohrane radnog prostora provjerava se u odnosu na razliku. Ograničenje “broj datoteka po kodu” ne vrijedi jer se ne dodaje nova datoteka.

Brisanje datoteke

DELETE /v1/files/:id

Meko brisanje (Soft-Delete): datoteka odmah nestaje s popisa, više se ne može dohvatiti i — ako je javna — više se ne isporučuje na /f/:id.

Odgovor (HTTP 200):

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

Ograničenja

PaketMaks. po datoteci
Free5 MB
Pro25 MB
Business100 MB
Agency100 MB
Enterprise250 MB

Dodatno, ovisno o paketu, vrijedi maksimalan broj datoteka po kodu i ukupna pohrana po radnom prostoru. Ograničenje učitavanja (Upload-Ratelimit) iznosi 100 učitavanja po satu po radnom prostoru.

Pogreške

StatusKada
400Nepoznat ili neodgovarajući potpis datoteke, nevažeće multipart tijelo
401Nema API ključa ili je nevažeći
403Uloga nema pravo pisanja odnosno brisanja
404code_id ili datoteka nije u radnom prostoru; kod preuzimanja također: objekt nedostaje u pohrani
413Datoteka je veća od ograničenja paketa
422Datoteka nedostaje, nevažeća visibility, dosegnuto ograničenje “broj datoteka po kodu”, prekoračeno ograničenje pohrane radnog prostora
429Ograničenje učitavanja (100/sat/radni prostor) ili općenito ograničenje brzine (Rate-Limit)

Povezano