TAŇBA-OOH Developers

State of one per-spot export job

GET /api/v1/delivery/exports/{id}

https://app.tanba-ooh.kz/api/v1/delivery/exports/{id}

Scope read:delivery. A job is queued, running, done or failed. A job over one million rows fails with error too_many_rows: ask for a shorter period.

Authentication

API key in the Authorization header, or a console session.

Scope: read:delivery

Parameters

NameInTypeRequiredDescriptionExample
idpathstring (uuid)yesId of the job.1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f

Responses

200 The job.

application/json

DeliveryExport

NameTypeRequiredDescriptionExample
idstring (uuid)yesId of the job."1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f"
statusstringyesState of the job. queued, running, done, failed
approval_numberstring | nullyesThe approval exported; null for a campaign."TNB-2026-000123"
campaign_idstring | nullyesThe campaign exported; null for one approval.null
period_fromstring (date)yesFirst day exported."2026-10-01"
period_tostring (date)yesLast day exported."2026-10-14"
row_countinteger | nullyesRows written; null until the job is done.10000
file_sha256string | nullyesHex SHA-256 of the file; null until the job is done."7c8d9e0f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5"
errorstring | nullyesWhy a job failed: too_many_rows or internal.null
created_atstringyesWhen the job was requested, Almaty time."2026-10-14T17:00:00+05:00"
finished_atstring | nullyesWhen the job ended, Almaty time."2026-10-14T17:00:09+05:00"

Example

{
  "id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
  "status": "done",
  "approval_number": "TNB-2026-000123",
  "campaign_id": null,
  "period_from": "2026-10-01",
  "period_to": "2026-10-14",
  "row_count": 10000,
  "file_sha256": "7c8d9e0f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5",
  "error": null,
  "created_at": "2026-10-14T17:00:00+05:00",
  "finished_at": "2026-10-14T17:00:09+05:00"
}

Errors

Errors are problem documents (application/problem+json) with a stable code.

StatusMeaning
401No valid session or API key (unauthenticated, session_expired, invalid_api_key).
403The role or the key's scope does not allow this (forbidden, key_scope_denied, key_route_denied).
404Nothing there, or not visible to the caller.
defaultAn error as a problem document.

Code samples

curl

curl 'https://app.tanba-ooh.kz/api/v1/delivery/exports/1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Python
import requests

response = requests.get(
    "https://app.tanba-ooh.kz/api/v1/delivery/exports/1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
    },
)
print(response.status_code, response.text)
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, err := http.NewRequest("GET", "https://app.tanba-ooh.kz/api/v1/delivery/exports/1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	data, _ := io.ReadAll(resp.Body)
	fmt.Println(resp.Status, string(data))
}