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 перевіряє публічний сайт, тому воно доречне після розгортання в продакшн або на доступному з інтернету прев'ю:
- Ваш конвеєр розгортає версію.
- Завдання викликає
POST /sites/{site}/scans. - Ваша кінцева точка отримує
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 усе одно потребують ручної перевірки.