API kampanii i mediów.
Adres bazowy https://marceltrzcinski.pl/api.php?route=. Używaj HTTPS.
Token utworzysz w panelu administratora w sekcji „Dostępy API”. Token wygasa po 90 dniach i może zostać wcześniej unieważniony.
Autoryzacja
Authorization: Bearer TWÓJ_TOKEN
Tokeny mają zakresy media:read, media:write, campaign:read i campaign:write.
Uwierzytelnione aplikacje zewnętrzne używają nagłówka Bearer. Panel korzysta z sesji oraz nagłówka X-CSRF-Token przy każdej zmianie danych.
Duże pliki i wznawianie
POST uploadsz JSON{"name":"film.mp4","size":123456789}. Odpowiedź zawieraid,offsetichunk_bytes.PATCH uploads/IDz binarnym fragmentem pliku, nagłówkamiContent-Type: application/octet-streamiUpload-Offset: 0. Rozmiar fragmentu wynosi maksymalnie 8 MiB. Odpowiedź zwraca nowy offset.- Po przerwaniu połączenia wywołaj
GET uploads/IDi kontynuuj od offsetu zwróconego przez serwer. Przy409pobierz ponownie stan przesyłania. - Po wysłaniu wszystkich fragmentów wywołaj
POST uploads/ID/completez pustym obiektem JSON. Operację można powtórzyć. Otrzymasz rekord medium. Nowy plik jest prywatny. - Niedokończone przesyłanie anulujesz przez
DELETE uploads/ID.
Limit pojedynczego pliku wynosi 50 GiB. Obsługiwane są JPEG, PNG, GIF, WebP, AVIF, MP4, MOV, WebM, MP3, WAV i OGG. Typ jest rozpoznawany z zawartości pliku.
Biblioteka i pobieranie
| Metoda i zasób | Działanie |
|---|---|
GET media | Lista do 100 mediów. Kolejną stronę pobierzesz przez parametr &offset=100. Odpowiedź zawiera next_offset. |
PATCH media/ID | JSON {"title":"Tytuł","is_public":false}. Zmienia tytuł i widoczność. |
GET storage | Liczba plików i zajęte miejsce kampanii, wolne miejsce na dysku oraz limity przesyłania. |
GET /media.php?id=ID | Odczyt pliku. Prywatny wymaga sesji lub tokenu media:read. Publiczny jest dostępny bez logowania. Obsługiwane są HEAD i pojedyncze zakresy Range: bytes=0-1023. |
Parametr &download=1 wymusza pobieranie. Pliki są wskazywane identyfikatorem nadanym przez API. API operuje w wydzielonym magazynie kampanii.
Plan dni, sponsorzy i postęp
| Metoda i zasób | Dane |
|---|---|
GET overview | Ustawienia, dzień kampanii, historia kwot, statystyka mediów i najbliższe działania. |
POST days | {"day_date":"2026-11-11","raised_cents":10000,"note":"Notatka prywatna"}. Jeden wpis na datę, ponowne wywołanie aktualizuje wpis. Kwoty są podawane w groszach. |
GET/POST eventsPATCH/DELETE events/ID | Pola event_date, title, description, channel, status, is_public, opcjonalne media_id. |
GET/POST sponsorsPATCH/DELETE sponsors/ID | Pola name, description, website, is_main, opcjonalne logo_media_id. Logo musi być publicznym obrazem z biblioteki. |
POST settings | Pola campaign_start, goal_cents, facebook_url, instagram_url. Wysłanie całego formularza jest wymagane. |
GET public | Dane publicznej strony. Publikowane media i zaplanowane publiczne wydarzenia. Kwota z ostatnią datą aktualizacji. Prywatne notatki dzienne są dostępne w panelu. |
Kanały to strona, facebook, instagram, wydarzenie i inne.
Statusy to draft, planned i published. Szkic jest prywatny. Plan publikacji jest prowadzony ręcznie, a linki profili można wykorzystać przy dalszej integracji z Meta.
Odpowiedzi
Błędy mają postać {"error":"Komunikat"}. Kody obejmują 401 — brak logowania, 403 — brak uprawnień lub CSRF, 409 — konflikt offsetu lub niekompletny plik, 413 — przekroczenie rozmiaru, 415 — niedozwolony typ, 422 — błędne dane, 428 — wymagane nowe hasło, 429 — ograniczenie prób logowania, 507 — brak miejsca.