Discovering Anytime tilesets
The tile discovery endpoint returns the customer-facing catalog of Popcast Anytime tilesets you can build grants against.
Endpoint
GET /v2/popcast/tiles/anytime/tilesets
- Auth: none required (
security: []in the spec). - Cost: 0 credits.
- Cache:
Cache-Control: private, no-store.
Example request:
curl "https://api2.mworks.com/v2/popcast/tiles/anytime/tilesets"
What a row tells you
Each row in data.tilesets describes one published tileset: the slug you pass when minting a grant, the segment it renders, the coverage window, and the map-setup metadata (zoom range, bounds, layer schema).
| Field | Meaning |
|---|---|
slug |
Full tileset slug, e.g. tiles_anytime_v2_3_21d529097c81af04_202501_202512_bg_v1. This is the value you pass in a grant's tilesets[] and the {layer} segment of the tile URL. Take slugs from the catalog rather than constructing them. |
title / display_name |
Segment name, suitable for a picker |
audkey |
The 16-hex audience key (motionworks_segment_id) from the slug; joins to the segment definitions reference |
yyyymm_start / yyyymm_end |
Coverage window the tileset covers (YYYYMM; 2025-01 through 2025-12 for the current family) |
minzoom / maxzoom |
Zoom range the tileset serves (0-13 today) |
bounds |
TileJSON bounds [west, south, east, north], WGS84 |
layers |
The MVT layers inside the tiles with their field schemas. Every Anytime tileset publishes a single source layer named default carrying geography_id, geography_type, the 24 hourly occupancy fields occ_h00 … occ_h23, area fields, and is_water. |
grant_create_url |
The endpoint to POST to for a grant that covers this tileset (POST /v2/popcast/tiles/anytime/grants). Minting a grant and reading its TileJSON is the only path from the catalog to tiles. |
licensed |
Whether your organization is licensed for this tileset. This public endpoint has no caller context, so the flag is currently always false; licensing is checked when you mint a grant. |
Each tileset encodes four zoom-banded geography grains: state, county, census tract, and block group for the block-group (bg) family, with ZIP Code Tabulation Areas replacing tract and block group in the ZIP Code (zcta) family. Each hourly field carries four day-type slots (1 Mon-Thu, 2 Fri, 3 Sat, 4 Sun).
data.metadata_stale is always present (see below); the meta block carries the standard request meta (request_id, credits_used: 0, product: "popcast").
Catalog size and metadata_stale
The catalog lists every Popcast Anytime tileset currently published. Today that is one tileset per audience segment per geography family: 186 segments (All Persons plus the syndicated audience segments) in both the block-group and ZIP Code families, for 372 rows. The count grows as segments are published, so do not hard-code an expectation of any particular number of rows.
The data.metadata_stale flag tells you whether the catalog is current:
data.metadata_stale |
Row count | Meaning |
|---|---|---|
false |
every published tileset | Healthy path. Build grants against what you see. |
true |
0 | The catalog could not be refreshed. The list is empty rather than out of date; retry a few minutes later. |
Rule for consumers: read the rows you get, and treat metadata_stale: true as a transient condition (retry) rather than as an empty product.
Example response (abbreviated)
{
"data": {
"tilesets": [
{
"slug": "tiles_anytime_v2_3_21d529097c81af04_202501_202512_bg_v1",
"title": "All Persons",
"minzoom": 0,
"maxzoom": 13,
"bounds": [-124.848974, 24.396308, -66.885444, 49.384479],
"layers": [
{
"id": "default",
"minzoom": 0,
"maxzoom": 13,
"fields": {
"geography_id": "String",
"geography_type": "String",
"occ_h00": "String",
"occ_h23": "String",
"area_sqkm": "Number",
"land_sqkm": "Number",
"total_sqkm": "Number",
"is_water": "Boolean"
}
}
],
"audkey": "21d529097c81af04",
"display_name": "All Persons",
"yyyymm_start": "202501",
"yyyymm_end": "202512",
"grant_create_url": "https://api2.mworks.com/v2/popcast/tiles/anytime/grants",
"licensed": false
}
],
"metadata_stale": false
},
"meta": {
"request_id": "req_e8281bd0f5a1",
"credits_used": 0,
"product": "popcast"
}
}
Example response while the catalog is being refreshed:
{
"data": {
"tilesets": [],
"metadata_stale": true
},
"meta": {
"request_id": "req_f0c1d2a3b455",
"credits_used": 0,
"product": "popcast"
}
}
Naming convention
Slugs follow tiles_anytime_<format>_<16hex-audkey>_<yyyymm_start>_<yyyymm_end>_<family>_v1, where <format> is the tile field-layout version (currently v2_3) and <family> is bg (Census block groups) or zcta (ZIP Code Tabulation Areas). Draft and unpublished variants never appear in the catalog.
Discovery versus admission
The catalog is the admission surface: a tileset appears here once it has been published and its renderer metadata has been verified. If you expect a segment that is not listed, it has not been published yet; the metadata_stale flag tells you whether the catalog itself is temporarily unavailable.