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
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
items | array of StatsSealItem | yes | Seals, newest day first. | |
items[].day | string (date) | yes | The sealed Asia/Almaty receive day. | "2026-10-13" |
items[].batch_count | integer | yes | Number of accepted statistics batches received on the day. | 4812 |
items[].record_count | integer | yes | Number of play records in those batches. | 96240 |
items[].root | string | yes | Hex Merkle root over the batches; SHA-256 of the empty string when the day has none. | "0f59838f53129a98e19ac704aa86cde6d83fc6cce9c56106370a60cbd6341fa3" |
items[].url | string | yes | Where 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.
| Status | Meaning |
|---|---|
| 429 | Rate 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))
}