Перейти до вмісту
Pandus

API перевірки доступності: перевірки WCAG з ваших інструментів

Оновлено 14 жовтня 2026 · 6 хв читання

API Pandus дає ті самі автоматичні перевірки доступності, що й кабінет, але з ваших власних інструментів: скрипта розгортання, дашборда агенції, системи тікетів. Воно перевіряє WCAG 2.2 рівнів A і AA рушієм axe-core у справжньому браузері на сторінках сайту й повертає результати з поясненнями простою мовою сімома мовами звіту.

Усе на цій сторінці взято з нашої опублікованої специфікації OpenAPI. Результати — це автоматична перевірка, а не повний аудит і не юридична консультація.

Кожен ендпоінт із параметрами, прикладами відповідей, помилками та прикладами коду на curl, JavaScript, PHP і Python описано в документації API.

Що робить API

Метод і шлях Що робить Право
GET /account Тариф, ліміти й використання команди read
GET /sites Список сайтів команди read
POST /sites Додає сайт; запускає його першу перевірку, якщо scan не дорівнює false write
GET /sites/{site} Один сайт read
DELETE /sites/{site} Видаляє сайт разом із перевірками, звітами та скриншотами write
GET /sites/{site}/scans Перевірки сайту в межах історії тарифу, найновіші першими read
POST /sites/{site}/scans Запускає перевірку зараз (діють правила тарифу) write
GET /scans/{scan} Статус і підсумки перевірки read
GET /scans/{scan}/report Звіт для власника завершеної перевірки у форматі JSON read
GET /scans/{scan}/pdf PDF-звіт завершеної перевірки read
GET /scans/{scan}/evidence/{kind}/{id} Скриншот зі звіту (kind — page або issue) read
GET /scans/{scan}/export Проблеми у CSV, JSON, як задачі GitHub або імпорт у Jira (платні тарифи) read
GET /scans/{scan}/compare/{other} Виправлені, нові й досі відкриті проблеми між двома перевірками сайту read

Базова адреса — https://pandus.online/api/v1. Звіт і PDF приймають необов'язковий параметр lang: en, uk, de, pl, cs, ro або ru. Без нього використовується мова звіту сайту.

JSON-звіт містить групи проблем із картками правил, прикладами, зачепленими сторінками, підсумками за серйозністю, порівнянням «було/стало» з попередньою перевіркою та трендом. Перевірка має статус queued, running, completed або failed, а кінцеві точки звіту відповідають 409, доки її не завершено.

Автентифікація та ліміти

Створіть токен у кабінеті в розділі API та вебхуки і передавайте його як bearer-токен:

curl -H "Authorization: Bearer $PANDUS_TOKEN" \
     https://pandus.online/api/v1/sites
  • Токен належить команді, а не людині, тому він продовжує працювати, коли хтось іде з команди.
  • Права: read охоплює всі запити GET, write — додавання й видалення сайтів та запуск перевірок. Для дашборда досить токена лише для читання.
  • Ліміт запитів: 60 запитів на хвилину на токен. Понад це ви отримаєте HTTP 429 із заголовком Retry-After.
  • Ліміти тарифу діють так само, як у кабінеті: кількість сайтів, сторінок у перевірці, історія та частота ручного запуску перевірки. Запит понад ліміт повертає HTTP 422 з повідомленням.
  • API входить у тарифи Pro та Agency — див. ціни.

Додайте сайт і запустіть перевірку

curl -X POST https://pandus.online/api/v1/sites \
     -H "Authorization: Bearer $PANDUS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"url": "shop.example", "report_locale": "de", "platform": "shopify", "tags": ["client-a"]}'

url і report_locale обов'язкові. platform (shopify, woocommerce, prestashop, shoptet або other) дає змогу показати у звіті інструкції з виправлення для цієї платформи; tags допомагають агенціям сортувати сайти за клієнтами. Відповідь — 201 з новим сайтом, а його першу перевірку поставлено в чергу.

Щоб перевірити знову пізніше, наприклад після релізу:

curl -X POST https://pandus.online/api/v1/sites/$SITE_ID/scans \
     -H "Authorization: Bearer $PANDUS_TOKEN"

Відповідь — 202 із поставленою в чергу перевіркою. Далі або опитуйте GET /scans/{scan}, або, що краще, чекайте на вебхук.

Вебхуки

Надсилаються дві події: scan.completed і issues.new. Кожна — це JSON POST вигляду {id, type, created_at, data: {scan, site, new_issues}} з такими заголовками:

  • Pandus-Event — тип події;
  • Pandus-Delivery — ідентифікатор доставки;
  • Pandus-Signature: t=<unix>,v1=<hex> — v1 є HMAC-SHA256 від "<t>.<raw body>" із секретом вашої кінцевої точки.

Відповідайте статусом 2xx протягом 10 секунд. Невдалі доставки повторюються приблизно добу; у кабінеті можна надіслати тестову подію й повторити доставку вручну. Мінімальна перевірка в Node.js:

import crypto from 'node:crypto';

function verify(rawBody, header, secret) {
    const parts = Object.fromEntries(
        header.split(',').map((p) => p.split('=')),
    );
    const expected = crypto
        .createHmac('sha256', secret)
        .update(`${parts.t}.${rawBody}`)
        .digest('hex');
    const given = Buffer.from(parts.v1 ?? '');
    return (
        given.length === expected.length &&
        crypto.timingSafeEqual(Buffer.from(expected), given)
    );
}

Використовуйте необроблене тіло запиту, а не повторно серіалізований об'єкт JSON, і відхиляйте старі позначки часу, щоб зупинити повторне відтворення запитів.

API у CI

API перевіряє публічний сайт, тому воно доречне після розгортання в продакшн або на доступному з інтернету прев'ю:

  1. Ваш конвеєр розгортає версію.
  2. Завдання викликає POST /sites/{site}/scans.
  3. Ваша кінцева точка отримує scan.completed або issues.new, читає GET /scans/{scan}/report і створює тікет чи пише в чат.

Не змушуйте злиття чекати на перевірку всього сайту: ціла перевірка може тривати довго. Для швидкого відгуку на кожен pull request запускайте axe-core у власних тестах — див. тестування доступності з Playwright — а Pandus нехай стежить за продакшн-сайтом щотижня й після релізів.

Localhost, тестові сервери та сторінки за логіном

Наш сканер відкриває лише публічні адреси. Він блокує приватні та локальні мережі, зокрема localhost, до кожного редиректу й після нього — це захід безпеки, а не прогалина, яку ми збираємося усувати. Для всього, що не є публічним:

  • Розширення для браузера для Chrome, Edge і Firefox перевіряє сторінку такою, якою її показує ваш браузер: локальний сервер розробки, тестовий сайт під паролем, кошик, оформлення замовлення, обліковий запис покупця. Перевірку можна зберегти для сайту в Pandus.
  • Власні тести Playwright із @axe-core/playwright дістануться до всього, до чого має доступ ваш CI.
  • Перш ніж створювати обліковий запис, спробуйте безкоштовний WCAG-чекер на будь-якій публічній сторінці.

Чого API не робить

Воно не проводить ручний аудит, не «виправляє» сайт скриптом і не вирішує, чи поширюється на вас закон. Воно повертає автоматичні знахідки з посиланнями на WCAG та EN 301 549 (в Україні — ДСТУ EN 301 549:2022) з нашої бібліотеки правил і звіт, який можуть прочитати власник магазину чи клієнт агенції. Для сайту на WordPress є також плагін для WordPress, що використовує окремий токен, прив'язаний до сайту.

Часті запитання

Чи є в Pandus API перевірки доступності?

Так. REST API v1 дає змогу переглядати й додавати сайти, запускати перевірки, читати їхній статус, отримувати звіт у форматі JSON або PDF і завантажувати скриншоти. Вебхуки повідомляють, коли перевірку завершено і коли з'явилися нові проблеми.

Які тарифи містять API?

Тариф Pro і тарифи Agency. У Free та з експрес-звітом API не входить; токени команди, яка переходить на такий тариф, перестають працювати, доки тариф знову не міститиме API.

Чи може API перевірити localhost або тестовий сервер?

Ні. Наш сканер відкриває лише публічні адреси і з міркувань безпеки блокує приватні та локальні мережі. Для localhost, тестових серверів і сторінок за логіном використовуйте розширення для браузера або запускайте axe-core у власних тестах Playwright.

Як захищено вебхуки?

Кожна доставка містить заголовок Pandus-Signature з позначкою часу та HMAC-SHA256 від позначки часу й необробленого тіла запиту, створений із секретом вашої кінцевої точки. Звіряйте його, перш ніж довіряти даним.

Чи є результат API аудитом WCAG?

Ні. API повертає результати автоматичної перевірки, а не повного аудиту, і не є юридичною консультацією. Багато критеріїв WCAG усе одно потребують ручної перевірки.