> ## Documentation Index
> Fetch the complete documentation index at: https://docs.clipstake.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Plans and limits

> What a plan buys, how quota is enforced, and what the API returns when you run out.

Plans are prepaid and monthly. You buy them in the
[Console](https://console.clipstake.com/billing), and the API enforces them.

## What a plan buys

| Dimension         | What it means                                                                                                                                               |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Submissions       | How many tracked media the workspace may hold in a billing period.                                                                                          |
| Accounts          | How many distinct Instagram accounts analytics covers in a billing period. On a paid plan this limit applies only when the plan includes account analytics. |
| Read cadence      | How often each tracked media is read.                                                                                                                       |
| Account analytics | Whether you can read audience and insights data.                                                                                                            |

Cadence is part of the plan, from every hour to every 12 hours. There is no
cadence field on any endpoint, and no per-media override. A faster cadence is a
purchase, not a request parameter.

Account sweeps run on a fixed 24 hour cadence on every plan.

## Trial

A new workspace starts on a free trial. The trial allows:

| Limit                      | Value         |
| -------------------------- | ------------- |
| Tracked media              | 10            |
| Connected accounts tracked | 2             |
| Read cadence               | Every 4 hours |

Analytics is included within those limits.

Trial limits count everything the workspace has tracked since it was created,
not only what is active now. Pausing a media or stopping an account does not
free a place. A request past either limit returns `402 quota_exceeded`. Buy a
plan to go further.

## How account capacity is counted

This section applies to paid plans with account analytics.

An account is counted when its first eligible media is accepted. It then holds
its slot for the rest of the billing period, even if every media for it is
paused later. Reactivating uses the same slot.

Projects do not multiply the count. Two projects tracking the same account
share one slot.

A new period resets the count. Accounts still being tracked need capacity in
the new period too.

## Running out

Creating or resuming past your limit returns `402` with the code
`quota_exceeded`.

```json theme={null}
{
  "error": {
    "code": "quota_exceeded",
    "message": "This workspace has reached its submission limit. Upgrade on the Billing page to keep adding.",
    "request_id": "req_01K5A7P8VM2T6R4W9C3H"
  }
}
```

Retrying does not help. Raise the plan, or wait for the next period. Reads
already under way continue, and nothing you already track is lost.

<Note>
  `402` is only ever returned by writes. Every read endpoint keeps working, so
  a workspace at its limit can still export everything it has.
</Note>

## Failed payments

A failed renewal opens a grace period of 72 hours from the first failure.
Retries do not extend it. During grace, collection and analytics carry on as
normal.

When grace ends, collection pauses and creates and resumes answer `402` with
the code `payment_required`. History stays readable throughout.

Paying restores access and resumes collection automatically. Media you paused
yourself stay paused, and archived projects stay archived. Recovery never
undoes a decision you made.

## Changing your plan

An increase takes effect once the difference is paid, and the new capacity is
available immediately after that payment.

A decrease takes effect at renewal. While a decrease is scheduled, creates and
resumes that would push you above the future limit are refused, so the
workspace fits its new plan when the period turns over.

## Rate limits on a connected account

Instagram limits how often each connected account can be read. That limit is
shared by everything that reads the account, including URL lookups and
scheduled reads.

Two consequences to design around:

* Submitting unknown URLs is not free. Each lookup searches the account's
  recent media, so send URLs in batches rather than one request per URL.
* A very fast cadence across many media on a single account is bounded by that
  limit. When an account is close to its limit, ClipStake waits and reads
  later. A delayed read is never counted as a failure against the media.

If Instagram rate limits an account while ClipStake resolves your URLs,
`POST /submissions` returns `429 rate_limited`.
