<!-- Markdown copy of https://docs.creatorain.com/partner-api/reference/operations/getpartnersummary/ -->
# Your whole estate, in one call

GET

/summary

Select code sampleFetchcURL

```js
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);
}
```

```sh
curl --request GET \
  --url https://data.creatorain.com/partner/v1/summary \
  --header 'Authorization: Bearer <token>'
```

-   Production (live stores; a live key is issued per partner)
-   Sandbox, for integration testing (test keys, test stores)

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

-   **[partnerApiKey](/partner-api/reference/#partnerapikey)**

## Responses

### 200

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

```json
{
  "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"
}
```

### 401

`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

```json
{
  "error": {
    "code": "unauthorized"
  }
}
```

### 429

`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

```json
{
  "error": {
    "code": "unauthorized"
  }
}
```
