Hoppa till innehåll

Files API

Översikt

Files-API:n hostar filer hos qr3 och levererar en stabil URL för detta. QR-koden pekar på denna URL — filen bakom kan du när som helst byta ut utan att behöva trycka om koden.

Bas-URL: https://qr3.app/v1/files

Om du vill kan du koppla en fil till en kod via code_id. Detta är grunden för landningssida per kod, som listar alla offentliga filer för en kod.

Typer som stöds kontrolleras via magic bytes, inte på filnamnet: PDF, PNG, JPEG, WebP, MP4, glTF/GLB, JSON. En .pdf som inte är en PDF nekas.

Roller

OperationKrävsFår 403
Alla GETalla roller
POST /upload, PUT /:idskrivrollviewer
DELETE /:idraderingsrollviewer, contributor

Specialregeln är contributor: rollen får skapa och ändra, men inte ta bort något.

Ladda upp fil

POST /v1/files/upload

Förväntar sig multipart/form-data.

FältObligatorisktBeskrivning
fileJaFilen
code_idNejKoppla till en kod (måste tillhöra workspacet)
visibilityNejprivate (standard) eller 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"

Svar (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 är endast satt vid visibility: "public" och status: "active". Adressen kräver ingen inloggning och lämpar sig direkt som mål-URL för en QR-kod.

Lista filer

GET /v1/files

Query: code_id och visibility, båda valfria. Returnerar de aktiva filerna i workspacet, med de senaste först.

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

Svar (HTTP 200):

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

Hämta filinformation

GET /v1/files/:id

Returnerar metadata inklusive download_url (och public_url för offentliga filer). Läsbar för alla roller.

Ladda ner fil

GET /v1/files/:id/download

Strömmar innehållet som Content-Disposition: attachment med Cache-Control: private, no-store — svaret är alltså alltid den aktuella versionen, till skillnad från den cachade offentliga /f/:id-URL:en.

404 kan uppstå på två sätt: filen finns inte i workspacet (eller är raderad), eller så finns den men det lagrade objektet saknas.

Ersätt fil

PUT /v1/files/:id

Ersätter innehållet och behåller id — och därmed den offentliga /f/:id- och download_url-adressen. En redan tryckt QR-kod förblir giltig.

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

visibility, code_id och created_at behålls; filename, mime_type, size_bytes och hash_sha256 uppdateras. Abonnemangsgränsen per fil gäller på samma sätt som vid uppladdning, och workspacets lagringsgräns kontrolleras mot differensen. Gränsen “filer per kod” gäller inte, eftersom ingen ny fil läggs till.

Radera fil

DELETE /v1/files/:id

Mjuk radering (soft-delete): Filen försvinner omedelbart från listan, kan inte längre hämtas och levereras — om den är offentlig — inte längre under /f/:id.

Svar (HTTP 200):

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

Gränser

PlanMax per fil
Free5 MB
Pro25 MB
Business100 MB
Agency100 MB
Enterprise250 MB

Dessutom gäller för varje plan ett maximalt antal filer per kod och ett totalt lagringsutrymme per workspace. Gränsen för uppladdningshastighet (rate limit) är 100 uppladdningar per timme och workspace.

Fel

StatusNär
400Okänd eller icke-matchande filsignatur, ogiltig multipart-body
401Saknad eller ogiltig API-nyckel
403Rollen får inte skriva respektive inte radera
404code_id eller filen finns inte i workspacet; vid nedladdning även: objektet saknas i lagringen
413Filen är större än planens gräns
422Filen saknas, ogiltig visibility, gränsen “filer per kod” har nåtts, workspacets lagringsgräns har överskridits
429Gräns för uppladdningshastighet (100/timme/workspace) eller allmän hastighetsbegränsning

Relaterat