Skip to content

Files API

Общ преглед

API за файлове (Files API) хоства файлове в qr3 и предоставя стабилен URL адрес за тях. QR кодът сочи към този URL адрес — можете да замените файла зад него по всяко време, без да пренапечатвате кода.

Базов URL адрес: https://qr3.app/v1/files

Опционално можете да свържете файл с даден код чрез code_id. Това е основата за лендинг страница за всеки код, която изброява всички публични файлове на даден код.

Поддържаните типове се проверяват чрез магически байт (magic byte), а не по разширението на файла: PDF, PNG, JPEG, WebP, MP4, glTF/GLB, JSON. Файл с разширение .pdf, който не е действителен PDF, ще бъде отхвърлен.

Роли

ОперацияИзисква сеПолучава 403
Всички GETвсяка роля
POST /upload, PUT /:idРоля за писанеviewer
DELETE /:idРоля за изтриванеviewer, contributor

Специалното правило е за contributor: тази роля може да създава и променя, но не и да изтрива.

Качване на файл

POST /v1/files/upload

Очаква multipart/form-data.

ПолеЗадължителноОписание
fileДаФайлът
code_idНеСвързване с код (трябва да принадлежи към същото работно пространство (Workspace))
visibilityНеprivate (по подразбиране) или 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"

Отговор (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 се задава само при visibility: "public" и status: "active". Адресът не изисква влизане в профила и е подходящ директно за целеви URL адрес на QR код.

Списък с файлове

GET /v1/files

Параметри на заявката (Query): code_id и visibility, и двата са опционални. Връща активните файлове на работното пространство (Workspace), като най-новите са първи.

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

Отговор (HTTP 200):

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

Получаване на информация за файл

GET /v1/files/:id

Връща метаданните, включително download_urlpublic_url за публични файлове). Достъпно за четене от всички роли.

Изтегляне на файл

GET /v1/files/:id/download

Предава съдържанието като поток (stream) с Content-Disposition: attachment и Cache-Control: private, no-store — следователно отговорът винаги е в текущото си състояние, за разлика от кеширания публичен URL адрес /f/:id.

404 се връща в два случая: файлът не съществува в работното пространство (или е изтрит) или той съществува, но записаният обект липсва.

Замяна на файл

PUT /v1/files/:id

Заменя съдържанието и запазва id — а с това и публичния адрес /f/:id и адреса download_url. Вече отпечатаният QR код остава валиден.

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

visibility, code_id и created_at се запазват; filename, mime_type, size_bytes и hash_sha256 се актуализират. Лимитът на плана за файл важи по същия начин, както при качване, а лимитът за съхранение на работното пространство се проверява спрямо разликата в размера. Ограничението „Файлове за код“ не се прилага, тъй като не се добавя нов файл.

Изтриване на файл

DELETE /v1/files/:id

Меко изтриване (Soft-Delete): Файлът изчезва незабавно от списъка, вече не е достъпен и — ако е публичен — вече не се предоставя на адрес /f/:id.

Отговор (HTTP 200):

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

Лимити

ПланМакс. за файл
Free5 MB
Pro25 MB
Business100 MB
Agency100 MB
Enterprise250 MB

Освен това за всеки план важат максимален брой файлове за код и общо пространство за съхранение за всяко работно пространство (Workspace). Ограничението за честота на качване (Upload-Ratelimit) е 100 качвания на час за всяко работно пространство.

Грешки

СтатусКога
400Неизвестен или несъответстващ файлов подпис, невалидно multipart тяло
401Липсващ или невалиден API ключ
403Ролята няма права за писане или изтриване
404code_id или файлът не е в работното пространство; при изтегляне също: обектът липсва в хранилището
413Файлът е по-голям от лимита на плана
422Липсващ файл, невалидна стойност за visibility, достигнато ограничение „Файлове за код“, превишен лимит за съхранение на работното пространство
429Ограничение за честота на качване (100/час/работно пространство) или общо ограничение на честотата (Rate-Limit)

Свързани теми