Skip to content

Files API

Yleiskatsaus

Files-API isännöi tiedostoja qr3-palvelussa ja tarjoaa niille pysyvän URL-osoitteen. QR-koodi osoittaa tähän URL-osoitteeseen – voit vaihtaa sen takana olevan tiedoston milloin tahansa ilman, että koodia tarvitsee tulostaa uudelleen.

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

Voit valinnaisesti linkittää tiedoston koodiin käyttämällä code_id-tunnusta. Tämä on perusta koodikohtaiselle laskeutumissivulle, joka listaa kaikki koodin julkiset tiedostot.

Tuetut tyypit tarkistetaan magic byte -tunnisteen, ei tiedostopäätteen perusteella: PDF, PNG, JPEG, WebP, MP4, glTF/GLB, JSON. Tiedosto .pdf, joka ei ole oikeasti PDF-tiedosto, hylätään.

Roolit

ToimintoVaadittu rooliSaa virheen 403
Kaikki GET-pyynnötmikä tahansa rooli
POST /upload, PUT /:idkirjoitusrooliviewer
DELETE /:idpoistorooliviewer, contributor

Erikoissääntö koskee roolia contributor: tämä rooli saa luoda ja muokata, mutta ei poistaa mitään.

Tiedoston lataaminen palveluun (Upload)

POST /v1/files/upload

Odottaa muotoa multipart/form-data.

KenttäPakollinenKuvaus
fileKylläTiedosto
code_idEiLinkitys koodiin (täytyy kuulua työtilaan / Workspaceen)
visibilityEiprivate (oletus) tai 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"

Vastaus (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 on asetettu vain, kun visibility: "public" ja status: "active". Osoite ei vaadi kirjautumista ja se soveltuu suoraan QR-koodin kohde-URL-osoitteeksi.

Tiedostojen listaaminen

GET /v1/files

Kyselyparametrit (query): code_id ja visibility, molemmat valinnaisia. Palauttaa työtilan (Workspace) aktiiviset tiedostot, uusimmat ensin.

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

Vastaus (HTTP 200):

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

Tiedoston tietojen haku

GET /v1/files/:id

Palauttaa metatiedot mukaan lukien download_url (ja public_url julkisille tiedostoille). Luettavissa kaikilla rooleilla.

Tiedoston lataaminen laitteelle (Download)

GET /v1/files/:id/download

Striimaa sisällön muodossa Content-Disposition: attachment otsikolla Cache-Control: private, no-store – vastaus on siis aina ajantasainen versio, toisin kuin välimuistiin tallennettu julkinen /f/:id-URL.

Virhekoodi 404 voi johtua kahdesta syystä: tiedostoa ei ole työtilassa (tai se on poistettu) tai se on olemassa, mutta tallennettu objekti puuttuu.

Tiedoston korvaaminen

PUT /v1/files/:id

Korvaa sisällön ja säilyttää tunnuksen id – ja siten myös julkisen /f/:id- ja download_url-osoitteen. Jo tulostettu QR-koodi pysyy voimassa.

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

visibility, code_id ja created_at säilyvät ennallaan; filename, mime_type, size_bytes ja hash_sha256 päivitetään. Tiedostokohtainen tilausraja (Plan-limit) pätee kuten latauksessa, ja työtilan tallennustilarajaa vasten tarkistetaan erotus. Rajoitus ”tiedostoja per koodi” ei päde, koska uusia tiedostoja ei lisätä.

Tiedoston poistaminen

DELETE /v1/files/:id

Pehmeä poisto (Soft-Delete): Tiedosto katoaa välittömästi listalta, sitä ei voi enää hakea, eikä sitä – jos se on julkinen – enää tarjota osoitteessa /f/:id.

Vastaus (HTTP 200):

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

Rajoitukset

Tilaus (Plan)Enintään per tiedosto
Free5 MB
Pro25 MB
Business100 MB
Agency100 MB
Enterprise250 MB

Lisäksi kussakin tilauksessa (Plan) on koodikohtainen tiedostojen enimmäismäärä ja työtilakohtainen (Workspace) kokonaistallennustila. Latausten (Upload) siirtonopeusrajoitus on 100 latausta tunnissa työtilaa kohden.

Virheet

TilaMilloin
400Tuntematon tai virheellinen tiedoston allekirjoitus (signature), virheellinen multipart-runko
401API-avain puuttuu tai on virheellinen
403Roolilla ei ole kirjoitus- tai poisto-oikeutta
404code_id tai tiedosto ei ole työtilassa; latauksen yhteydessä myös: objekti puuttuu tallennustilasta
413Tiedosto on suurempi kuin tilauksen (Plan) raja
422Tiedosto puuttuu, virheellinen visibility, ”tiedostoja per koodi” -raja saavutettu, työtilan tallennustilaraja ylittynyt
429Latausrajoitus (100/tunti/työtila) tai yleinen pyyntörajoitus (Rate-Limit)

Aiheeseen liittyvää