Skip to content

Your whole estate, in one call

GET
/summary
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.

The estate as it stands.

Media typeapplication/json

Your estate as it stands. Counts only: there is no personal data anywhere in this body.

object
active_stores
required

Stores with a live contract that are being offered to creators.

integer
paused_stores
required

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.

integer
published_this_month
required

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.

integer
visits_next_14_days
required

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.

integer
reminders_acknowledged_this_month
required

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.

integer
unacknowledged_upcoming
required

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.

integer
generated_at
required

When this was computed, RFC 3339 in UTC. A fact about our run, not a time at any store.

string format: date-time
timezone
required

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.

string
Allowed values: UTC

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.

Media typeapplication/json
object
error
required
object
code
required

The stable value to branch on.

string
Allowed values: unauthorized forbidden_ip rate_limited validation_error location_already_exists location_not_found location_terminated reservation_not_found conflict internal_error
message
required

A human sentence. Copy, not contract; it may be reworded.

string
field

The request field at fault, dotted for a nested one (plan.term_months).

string

Example

{
"error": {
"code": "unauthorized"
}
}

rate_limited. Over this key’s requests-per-minute ceiling.

Media typeapplication/json
object
error
required
object
code
required

The stable value to branch on.

string
Allowed values: unauthorized forbidden_ip rate_limited validation_error location_already_exists location_not_found location_terminated reservation_not_found conflict internal_error
message
required

A human sentence. Copy, not contract; it may be reworded.

string
field

The request field at fault, dotted for a nested one (plan.term_months).

string

Example

{
"error": {
"code": "unauthorized"
}
}