Pięć punktów końcowych
Bezpłatny skan jednej strony
POST https://inkluso.eu/api/scan/free
Bezpłatnie · limit 5 wywołań na godzinę z jednego IP · tylko strona główna
Sprawdza podany adres wobec WCAG 2.1 AA i mapuje ustalenia na prawo wybrane polem lang. Najpoważniejsze naruszenie wraca w całości, wraz z odwołaniem prawnym; pozostałe pojawiają się w locked_violations wyłącznie jako waga i liczba wystąpień.
- Wywołanie trwa około 30 sekund: serwer uruchamia prawdziwą przeglądarkę i renderuje stronę. Ustaw limit czasu klienta na co najmniej 60 sekund.
- Adres musi wskazywać publiczny host. Brakujący schemat zostanie uzupełniony do https://, a adresy wewnętrzne i lokalne są odrzucane kodem 422.
- Pole scan_status to autodiagnoza skanu. Wartość "bot_challenge" oznacza, że WAF badanej witryny zablokował skaner, to nie jest dobra ocena, tylko brak oceny.
- Błędy: 422 (nieprawidłowy adres albo nie było czego skanować), 429 (limit), 503 (skaner zajęty), 504 (skan przekroczył próg 300 sekund).
curl -sS -X POST https://inkluso.eu/api/scan/free \
-H 'Content-Type: application/json' \
--max-time 90 \
-d '{"url": "https://example.cz", "lang": "pl"}'
Projekt deklaracji dostępności
POST https://inkluso.eu/api/statement/draft
Bezpłatnie · limit 20 wywołań na minutę z jednego IP · nic nie jest zapisywane
Składa projekt deklaracji dostępności z przesłanych danych. Nie uruchamia skanu, niczego nie zapisuje, nie wysyła e-maila i nie zakłada konta. Odpowiedź ma dwa pola: statement (obiekt strukturalny) i text (ten sam dokument jako zwykły tekst do wklejenia w CMS).
- conformance_status przyjmuje tylko "partial", "none" albo "not_assessed". Wartość "full" jest celowo niedozwolona: pełnej zgodności nie da się zadeklarować o sobie, można ją tylko zmierzyć.
- known_issues przyjmuje najwyżej 20 pozycji, każdą do 300 znaków; dłuższe dane są przycinane, a nie odrzucane.
- Deklaracja jest oświadczeniem własnym podmiotu. Inkluso nie weryfikuje żadnej z podanych informacji i tekst mówi to wprost.
- Błędy: 422 (nieprawidłowy adres, pusta nazwa podmiotu, niedozwolony conformance_status, błędny e-mail), 429 (limit).
curl -sS -X POST https://inkluso.eu/api/statement/draft \
-H 'Content-Type: application/json' \
-d '{"organisation": "Vzor s.r.o.",
"url": "https://example.cz",
"lang": "pl",
"conformance_status": "partial",
"known_issues": ["Two PDFs published before 2024 are not tagged."]}'
Status zamówienia
GET https://inkluso.eu/api/orders/{ref}
Bezpłatnie · limit 30 wywołań na godzinę z jednego IP · każda odpowiedź niesie X-Robots-Tag: noindex
Zamienia referencję zamówienia na stan realizacji, a po jej zakończeniu na adres raportu. Referencja powstaje przy tworzeniu zamówienia i nie jest tokenem raportu, ten nie istnieje aż do końca realizacji.
- 404 {"detail": "Order not found"}: taka referencja nie istnieje; przestań pytać.
- 202 {"status": "pending"}: zamówienie istnieje, realizacja jeszcze trwa.
- 200 {"status": "fulfilled", "report_url": "/api/reports/{token}"}: gotowe.
- Realizacja obejmuje skan całej witryny i wygenerowanie PDF, licz w minutach. Przy 30 wywołaniach na godzinę praktyczny pułap to jedno zapytanie co dwie minuty; jedno co pięć minut jest wzorcem bezpiecznym.
curl -sS -i https://inkluso.eu/api/orders/9f2c1d7a8b6e4f0c
HTTP/2 202
x-robots-tag: noindex
{"status": "pending"}
Kup audyt albo uruchom monitoring
POST https://inkluso.eu/api/billing/checkout
Płatne · limit 10 wywołań na minutę z jednego IP
Tworzy sesję Stripe Checkout i zwraca jej adres. Sama płatność odbywa się w Stripe, nie tutaj: dane karty nigdy nie trafiają do tego endpointu. Pole tier wybiera produkt: scan_report to jednorazowy audyt (od 149 EUR lub równowartości w innej walucie); monitor / monitor_annual to cykliczna subskrypcja monitoringu, miesięczna lub roczna; agency jest prowadzone sprzedażowo (cena za tą wartością to tylko punkt odniesienia, nie cena oferowana, agencje powinny skorzystać ze ścieżki sprzedażowej); shoptet_audit to jednorazowy audyt sklepu na Shoptet (99 EUR / 2 490 Kč / 449 zł; waluta rozliczenia zależy od lang).
- consent musi mieć wartość true. To wymóg prawny, a nie formalność: zakupiony poziom to treść cyfrowa/usługa dostarczana natychmiast, więc kupujący musi wyraźnie zgodzić się na natychmiastowe wykonanie i tym samym zrzec się 14-dniowego prawa odstąpienia obowiązującego w UE. Wartość false lub brak pola zwraca 422 i zamówienie nie powstaje. Nie wysyłaj true w imieniu człowieka bez jego faktycznej zgody.
- Waluta wynika z pola lang: cs rozlicza się w CZK, pl w PLN, a pozostałe języki (de, en) w EUR. To nie jest przeliczenie jednej kwoty, każda waluta ma własny cennik. Jedynym źródłem prawdy jest price_for_tier() w backend.billing.stripe.
- Opcjonalny nagłówek Idempotency-Key: wygeneruj samodzielnie świeżą, unikalną wartość dla KAŻDEGO zamiaru zakupu (np. UUID v4). Klucz jest powiązany z Twoim dokładnym żądaniem (e-mail, url, taryfa, język): powtórzenie z TAKIM SAMYM żądaniem w ciągu 24 godzin zwraca TAKI SAM order_ref, checkout_url, amount i currency; ten sam klucz z INNYMI danymi zwraca 422. Klucz użyty ponownie w trakcie przetwarzania zwraca 503, spróbuj ponownie za chwilę. Nigdy nie kopiuj klucza z dokumentacji ani z innego żądania.
- Błędy: 422 (consent nie jest true, nieprawidłowy adres albo brakujące/błędne pole), 429 (limit), 503 (Idempotency-Key jest właśnie przetwarzany albo dostawca płatności jest chwilowo źle skonfigurowany), 500 (system płatności niedostępny).
curl -sS -X POST https://inkluso.eu/api/billing/checkout \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: ' \
-d '{"email": "buyer@example.cz", "tier": "scan_report",
"url": "https://example.cz", "lang": "pl", "consent": true}'
Następnie odpytuj GET /api/orders/{order_ref} powyżej, aż stan zmieni się na "fulfilled".