Getting started
The platform has three doors. Pick the one that matches what you want to do.
| You want to | Use | Host | Account |
|---|---|---|---|
| Check an approval, read the revocation list or the public ledger | Public verification API | https://verify.tanba-ooh.kz | none |
| Read your approvals, structures, statistics and billing, or create submissions from your own software | Integration API | https://app.tanba-ooh.kz | API key |
| Be told when something happens | Webhooks | your HTTPS address | webhook secret |
| Report the plays your own CMS counted | Play import | https://app.tanba-ooh.kz | API key with write:plays |
Your first call
Checking an approval needs no account. Send the number and ask for JSON:
curl -H 'Accept: application/json' 'https://verify.tanba-ooh.kz/v1/approval/TNB-2026-000123'
An unknown number, a malformed number and a rejected submission all get the same 404 answer, so the call does not reveal which numbers exist.
Conventions
- Dates are ISO 8601. A day is an Asia/Almaty calendar day, written
YYYY-MM-DD. - Money is in tenge. Amounts are strings so that no digit is lost.
- Lists come in pages:
limit(1 to 500) andoffset. - Errors are problem documents (
application/problem+json). Thecodefield is stable; thetitleanddetailtexts may change.
{
"type": "https://tanba-ooh.kz/problems/validation_failed",
"title": "Unprocessable Entity",
"status": 422,
"code": "validation_failed",
"errors": [{"field": "period_to", "code": "required"}]
}
- Public calls answer
429with aRetry-Afterheader when a client sends too many. Each API key is limited to 10 requests a second with a burst of 30.
The contract files
Every connection page has a link to its OpenAPI 3.1 file. The files are the source of this site, so a client generated from them always matches the pages.
- openapi.yaml: the public and integration calls
- webhooks.yaml: the events the platform sends