TAŇBA-OOH Developers

Latest daily seals of the received play statistics

GET /v1/stats-seals

https://verify.tanba-ooh.kz/v1/stats-seals

The newest 30 seals, newest first. Every Almaty day, shortly after midnight, the platform seals the statistics batches it received the day before in one Merkle root, signs the root with its status key, and records the seal in the public ledger on the day it was made. Only counts and the root are public. Served on the verify and app hosts, cached for 60 seconds.

Authentication

None. This call is public.

Responses

200 The seals.

application/json

NameTypeRequiredDescriptionExample
itemsarray of StatsSealItemyesSeals, newest day first.
items[].daystring (date)yesThe sealed Asia/Almaty receive day."2026-10-13"
items[].batch_countintegeryesNumber of accepted statistics batches received on the day.4812
items[].record_countintegeryesNumber of play records in those batches.96240
items[].rootstringyesHex Merkle root over the batches; SHA-256 of the empty string when the day has none."0f59838f53129a98e19ac704aa86cde6d83fc6cce9c56106370a60cbd6341fa3"
items[].urlstringyesWhere the full seal is."/v1/stats-seals/2026-10-13"

Example

{
  "items": [
    {
      "day": "2026-10-13",
      "batch_count": 4812,
      "record_count": 96240,
      "root": "0f59838f53129a98e19ac704aa86cde6d83fc6cce9c56106370a60cbd6341fa3",
      "url": "/v1/stats-seals/2026-10-13"
    }
  ]
}

Errors

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

StatusMeaning
429Rate limit; see Retry-After.

Code samples

curl

curl 'https://verify.tanba-ooh.kz/v1/stats-seals'
Python
import requests

response = requests.get(
    "https://verify.tanba-ooh.kz/v1/stats-seals",
)
print(response.status_code, response.text)
Go
package main

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

func main() {
	req, err := http.NewRequest("GET", "https://verify.tanba-ooh.kz/v1/stats-seals", nil)
	if err != nil {
		panic(err)
	}
	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))
}