# Rate limits and housekeeping

Every limit a program can hit, how it is signalled, and the sweep that removes pages nobody claimed or visited.

Limits are fixed windows, counted per address (hashed, never stored raw) or per account. When one is exceeded the answer is `429 rate_limited` with `retryAfter` seconds in the body and a `Retry-After` header. Wait that long; do not retry in a loop.

| What | Limit | Per |
| --- | --- | --- |
| Pages created without a key | 10 per day, 30 per hour | address |
| Pages created with a key | 10 per hour, and 10 pages made by programs on the account (a person adds more by hand without limit) | account |
| `POST /api/agent/pages/validate` | 60 per hour | address |
| `POST /api/upload` by URL | 30 per hour | account |
| `POST /api/import/page` | 30 per hour | account |
| `POST /api/import/instagram` | 10 per day | account |
| `POST /api/agent/claim-link` | 10 per hour | account |
| `GET /api/claim/<token>` | 30 per minute | address |
| `GET /api/username/check` | 40 per minute | address |
| Signup through the form | 5 per hour, 20 per day | address |
| MCP requests | 120 per minute | address |
| Blocks on a page | 80 | page |
| Live API keys | 10 | account |

## Housekeeping

Once a night (04:00 Europe/Kyiv) a job looks at provisional accounts — created by a program, never claimed:

- Older than 30 days and none of its pages has had a single view → the pages are unpublished.
- Older than 60 days and still never viewed → pages, files, keys, claim tokens and the account are deleted. The names are released, not parked.

One visit is enough to count as real. A claimed account is never touched by this job.

---
Part of the [Tapmy.link agent documentation](https://tapmy.link/documentation/agents.md). Canonical: https://tapmy.link/documentation/agents/rate-limits.md
