Tupshar is a free research preview. Default limits are generous for experimentation; they may change as the product evolves.
Rate Limit
Tupshar uses a token-bucket rate limiter per API key.
| Parameter | Value |
|---|---|
| Sustained rate | 60 requests / minute |
| Burst capacity | 120 requests |
Exceeding the limit returns 429 rate_limited. The response includes a Retry-After header (in seconds) — wait that long before retrying. There are no X-RateLimit-* headers.
Per-Key Quotas
Every key starts with these defaults:
| Resource | Default limit |
|---|---|
| Documents | 100,000 |
| Total storage | 10 GiB |
| Keys per user | 25 |
| Key lifetime | 180 days after creation |
Exceeding document count or storage returns 403 quota_exceeded. Your data is safe — nothing is deleted automatically.
There is no /v1/quota endpoint. Check your usage by listing documents or contacting support.
Request and Document Size Limits
| Item | Limit |
|---|---|
| Request body | 8 MiB |
Document contents | 4 MiB |
| Filename length | 512 characters |
Requests over these sizes return 413 payload_too_large.
Metadata Limits
| Item | Limit |
|---|---|
| Tags per document | 64 |
| Tag length | 64 characters |
| Links per document | 256 |
| Properties per document | 64 |
| Property key length | 128 characters |
| Property value length | 2,048 characters |
Search Limits
| Item | Limit |
|---|---|
| Terms in a token query | 32 |
| Results per page (query endpoints) | 25 default, 100 max |
| Results per page (list endpoint) | 50 default, 500 max |
Handling Quota Errors
Rate limited (429):
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded",
"request_id": null
}
}
Read the Retry-After header and wait before retrying. Use exponential backoff for automated clients.
Quota exceeded (403):
{
"error": {
"code": "quota_exceeded",
"message": "Storage quota exceeded",
"request_id": null
}
}
Delete documents you no longer need to free storage, or contact paul@upside-down-research.com to request a higher quota.
Notes
- Limits apply per API key, not per IP address.
- Key lifetime begins at creation; keys do not auto-renew.
- These are research preview defaults and may change without notice.
For the full error code reference see @/docs/reference/errors.md.