Example request
curl -X POST https://a11yfy.com/v1/jobs \
-H "Authorization: Bearer $A11YFY_API_KEY" \
-F "file=@szabalyzat.pdf" \
-F "webhook_url=https://pelda.hu/hooks/a11yfy"
# {"job_id": "job_01HX…", "status": "queued"}
curl https://a11yfy.com/v1/jobs/job_01HX… \
-H "Authorization: Bearer $A11YFY_API_KEY"
curl -OJ https://a11yfy.com/v1/jobs/job_01HX…/result \
-H "Authorization: Bearer $A11YFY_API_KEY"from a11yfy import A11yfy
client = A11yfy(token="ak_live_...") # vagy az A11YFY_API_KEY változóból
result = client.remediate("szabalyzat.pdf") # feltöltés + várakozás + eredmény
print(result.output_url) # a javított PDF letöltési linkje
if result.certificate:
print(result.certificate.verify_url)import { A11yfyClient } from "@a11yfy/sdk";
const client = new A11yfyClient({ token: process.env.A11YFY_API_KEY! });
const result = await client.remediate("szabalyzat.pdf");
console.log(result.output_url);How it fits your stack
- At upload time — remediate documents the moment your users or systems publish them.
- In batch — work through a backlog folder by folder, with the same per-page pricing.
- In your product — return the same PDF/UA-1 output and issue-level report to your own users, under your own UI.
The flow
POST /v1/jobs— send a PDF as a multipart file, optionally with awebhook_url. You immediately get back ajob_id. The server then runs the full pipeline automatically — diagnosis, tagging or full reconstruction, then validation — and charges the credits the document calls for.- Track status — poll
GET /v1/jobs/{id}, or, if you supplied awebhook_url, receive a signed notification the moment the job reaches a terminal state. GET /v1/jobs/{id}/result— download the PDF/UA-1 tagged output and its issue-level validation report.
To wire in your own billing and monitoring, use the GET /v1/balance
(credit balance) and GET /v1/usage (usage) endpoints.
Official SDKs: Python and npm
If you'd rather not hand-write HTTP calls, use the official client libraries — both are thin, typed wrappers over the v1 API above:
- Python — the
a11yfypackage on PyPI:pip install a11yfy - JavaScript / TypeScript — the
@a11yfy/sdkpackage on npm:npm install @a11yfy/sdk
Both SDKs are open source at github.com/a11yfy/sdk.
Why build it into your own system
- Language-agnostic REST. No SDK required: one HTTP call from any language — send the
file as
multipart/form-data. - Async, with webhooks. No need to poll: your own workflow wakes on the terminal state, and the notification is cryptographically signed.
- Idempotent submission. Re-sending the same file by accident never double-charges.
- Shared ledger. API keys are team-scoped; usage shows up in the same workspace budget as web uploads.
- EU processing, automatic deletion. Inputs are deleted after 7 days, outputs after 30 — with no action from you.
Practical notes
- The v1 API responds in English; document-language handling (alt text, metadata) follows the document itself, not the API locale.
- Credits match the web pricing: technical repair and full reconstruction are priced per page, by the document's profile.