Upload mediów (zrzuty ekranu, obrazy) odbywa się w 3 krokach z wykorzystaniem presigned URL. Pliki są przechowywane w Backblaze B2.
Wymagany scope: media:write
Proces uploadu
Krok 1: Uzyskaj presigned URL
curl -s -X POST https://my.clarife.app/api/v1/media/presign \
-H "Authorization: Bearer clrf_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"document_id": "d1234567-...",
"media_id": "m1234567-...",
"filename": "screenshot.png",
"mime_type": "image/png",
"file_size_bytes": 245760
}' | jq
Parametry body:
| Pole | Typ | Wymagane | Opis |
|---|
document_id | uuid | tak | Dokument, do którego dodajesz media |
media_id | uuid | tak | ID wygenerowane po stronie klienta |
filename | string | tak | Oryginalna nazwa pliku (max 255 znaków) |
mime_type | string | tak | Typ MIME (patrz tabela poniżej) |
file_size_bytes | integer | tak | Rozmiar pliku w bajtach |
Obsługiwane typy MIME (tylko obrazy):
| Typ | Rozszerzenie |
|---|
image/png | .png |
image/jpeg | .jpg |
image/gif | .gif |
image/webp | .webp |
image/svg+xml | .svg |
image/bmp | .bmp |
image/tiff | .tiff |
Odpowiedź 200 OK:
{
"upload_url": "https://s3.us-west-004.backblazeb2.com/...",
"b2_key": "media/user-id/doc-id/media-id.png",
"media_id": "m1234567-..."
}
Maksymalny rozmiar pliku to 30 MB. Presigned URL jest ważny przez 15 minut.
Krok 2: Upload pliku
Wyślij plik binarny na upload_url zwrócony w kroku 1 za pomocą PUT:
curl -X PUT "UPLOAD_URL_Z_KROKU_1" \
-H "Content-Type: image/png" \
--data-binary @screenshot.png
Krok 3: Potwierdź upload
Po pomyślnym uploadzie potwierdź, że plik jest gotowy:
curl -s -X POST https://my.clarife.app/api/v1/media/confirm \
-H "Authorization: Bearer clrf_xxxxx" \
-H "Content-Type: application/json" \
-d '{ "media_id": "m1234567-..." }' | jq
Odpowiedź 200 OK:
{
"id": "m1234567-...",
"status": "active"
}
Media ze statusem pending (niepotwierdzony upload) są automatycznie czyszczone po 24 godzinach.
Limity storage
| Plan | Limit storage |
|---|
| Free | 100 MB |
| Pro | 10 GB |
| Business | 100 GB |
Przekroczenie limitu zwraca błąd 403 z kodem PLAN_LIMIT_REACHED.