Your whole estate, in one call
const url = 'https://data.creatorain.com/partner/v1/summary';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://data.creatorain.com/partner/v1/summary \ --header 'Authorization: Bearer <token>'The morning screen for your operations desk: how many stores are running, how many are paused, what has been published this month, what is arriving over the next fortnight, how many bookings a human at a restaurant confirmed seeing, and how many visits arrive within 24 hours that NOBODY has acknowledged.
That last number is what this endpoint exists for. Every one of those bookings is a creator
who may walk into a restaurant that is not expecting them, and the list behind the number is
GET /reservations?status=confirmed&from=<today>&to=<tomorrow>&acknowledged=false.
NO PARAMETERS, deliberately. Every window here is fixed (this month, the next 14 days, the next 24 hours) so that today’s screen can be compared with yesterday’s. When you need a window of your own, the lists take one.
Which clock each number is on
Your stores span time zones, so there is no single clock this body could be stated on and it
does not pretend otherwise. published_this_month and
reminders_acknowledged_this_month are bucketed in EACH STORE’S OWN local month, exactly as
GET /billing/monthly buckets them, so a tile and an invoice can never disagree.
visits_next_14_days and unacknowledged_upcoming are measured on each store’s own wall
clock, which matters most for the 24 hour window: measured in UTC, a third of a US west
coast day would fall in or out of it.
generated_at is the only TIME on this body. It is an instant about our run rather than a
time at any restaurant, and timezone is its zone, which is always UTC.
PARTNER KEY ONLY. A store token cannot read this: the state of the whole chain is your business, not one merchant’s.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”The estate as it stands.
Your estate as it stands. Counts only: there is no personal data anywhere in this body.
object
Stores with a live contract that are being offered to creators.
Stores with a live contract that are paused: no NEW scheduling, confirmed bookings untouched. Terminated stores are in NEITHER number, so these two do not necessarily add up to every store you have ever sent us.
Videos live on a platform, published inside each store’s OWN local month. The same
definition GET /billing/monthly uses, so this tile and that invoice cannot differ.
Confirmed creator visits arriving in the next 14 days, on each store’s own wall clock. Counted across EVERY store of the key including terminated ones, because ending a contract does not cancel a visit a creator has already been promised.
Bookings a human at a restaurant confirmed seeing this month, counted ONCE each. A booking that was both forwarded to the manager and acknowledged is one booking somebody dealt with, not two.
THE NUMBER TO ACT ON: confirmed visits arriving within 24 hours that nobody at the
restaurant has acknowledged. The rows behind it are
GET /reservations?status=confirmed&from=<today>&to=<tomorrow>&acknowledged=false.
When this was computed, RFC 3339 in UTC. A fact about our run, not a time at any store.
The zone of generated_at, which is the only time on this body. Always UTC. The
COUNTS are on each store’s own clock; see the endpoint description.
Example
{ "active_stores": 42, "paused_stores": 3, "published_this_month": 17, "visits_next_14_days": 9, "reminders_acknowledged_this_month": 12, "unacknowledged_upcoming": 2, "generated_at": "2026-09-11T09:00:00Z", "timezone": "UTC"}unauthorized. A missing, malformed, unknown or revoked key; or an invalid, expired or
wrong-store dashboard token. One answer for every case on purpose: the holder of a bad
credential learns nothing from the difference.
object
object
The stable value to branch on.
A human sentence. Copy, not contract; it may be reworded.
The request field at fault, dotted for a nested one (plan.term_months).
Example
{ "error": { "code": "unauthorized" }}rate_limited. Over this key’s requests-per-minute ceiling.
object
object
The stable value to branch on.
A human sentence. Copy, not contract; it may be reworded.
The request field at fault, dotted for a nested one (plan.term_months).
Example
{ "error": { "code": "unauthorized" }}