# Limits

One daily row budget across every download surface, a separate request allowance for the API, and what spends a research unit.

Three separate things get counted: rows taken out of Prospex, requests made to the API, and research performed inside a project.

## Rows: 5,000 per account per day

These surfaces spend it:

| Surface | Path | A row is |
| --- | --- | --- |
| The market feed, JSON | /app/markets/feed/\<token>.json | One company. |
| The market feed, CSV | /app/markets/feed/\<token>.csv | One company. |
| The Watch feed, JSON | /app/watch/feed/\<token>.json | One signal. |
| The Watch feed, CSV | /app/watch/feed/\<token>.csv | One signal. |
| The project feed | /app/prospect/feed/\<token>.json | One prospect. |
| A watch export | /app/watch/\<id>/export/csv/ | One signal, after the filters on the page. |
| A project export | /app/prospect/\<id>/export.csv | One prospect. |
| Company search | /api/v1/companies | One company. |
| Signals on one company | /api/v1/companies/\<id>/signals | One signal. |
| Companies in a market | /api/v1/markets/\<id>/companies | One company. |
| Signals on a watch | /api/v1/watches/\<id>/signals | One signal. |
| Prospects in a project | /api/v1/prospect/projects/\<id>/prospects | One prospect. |

Every JSON page carries a `usage` block with `rows_today` and the limit, so a workflow can stop on its own terms. Once the budget is spent the feeds answer **429 `daily_row_limit`** with `Retry-After` pointing at midnight, when it resets.

A CSV response streams up to 10,000 rows in one go, so a single export of a large market can take a visible share of the day. The budget is per account — all users and automations share it.

## Requests: 10,000 per account per day

- Counted on the API only, and reported in `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` on every response. Past it, **429 `rate_limited`**.
- A request body is capped at 1 MiB. Larger is refused before it is parsed.
- One `POST .../prospects` carries at most 100 companies.
- A market page is at most 500 rows and a project page at most 200. Ask for more and you get the ceiling.
- Events stay replayable for 30 days. Past that a webhook cannot be replayed, and the state it described is still readable through the feed.

## Research units

The expensive thing in the product is research: fetching public pages about a company and reading them. It is metered per company entering research.

- Adding companies and resolving identity consume no research unit. A whole CRM segment can be posted just to find out which rows Prospex can place.
- External qualification jobs consume none either. Their dispatch is bounded by the project's outstanding-job allowance, and resumes with later cycles when that is full.
- A company entering research occupies one place in the cycle budget whether Prospex or your own worker performs it. A corrected submission and an explicit retry of the same input do not occupy another.
- Prospex-executed and externally executed research are counted separately on every cycle.
- One project has at most one queued or running cycle, and the project budget is a ceiling per cycle rather than per month.

## Objects

- 3 active markets per account.
- Watches, projects and API credentials have no per-account cap.
- A webhook endpoint that fails 20 times in a row is switched off, and its own page says why.
