<!-- AI agents: this is the Markdown version of an AppNorth documentation page. Index: https://www.appnorth.app/llms.txt -->

# Limits

These are current validation and transport limits, not a promise of workspace quota. The server remains authoritative even when a native control accepts a value.

## Input and payload limits {#inputs}

| Input                             | Server limit                                                                       |
| --------------------------------- | ---------------------------------------------------------------------------------- |
| Public App ID                     | 3–100 characters                                                                   |
| Idea title                        | 4–140 characters                                                                   |
| Idea description                  | Up to 4,000 characters                                                             |
| Comment                           | 2–2,000 characters                                                                 |
| Author name                       | 1–80 characters when supplied                                                      |
| Community search                  | Up to 120 characters                                                               |
| Idea/comment page size            | Default 20; 1–50                                                                   |
| Chat message                      | 1–2,000 characters                                                                 |
| Private feedback message          | 3–5,000 characters                                                                 |
| Feedback page URL / title / email | Up to 2,048 / 300 / 320 characters                                                 |
| Diagnostics                       | Up to 100 entries; 1,000 characters per message                                    |
| Diagnostic metadata               | Up to 20 keys and 8,000 JavaScript string units after JSON serialization per entry |
| Screenshot                        | PNG, JPEG or WebP base64 data URL; up to 2,800,000 characters                      |
| Entire feedback request           | 3,500,000 bytes                                                                    |
| Community JSON body               | 32,000 bytes                                                                       |
| Idempotency key                   | 8–128 characters from letters, digits, `.`, `_`, `:` and `-`                       |
| Signed identity credential        | Maximum lifetime of 24 hours                                                       |

Screenshots count toward the complete request size. Native screenshot validation checks the data URL's UTF-8 length. Diagnostic sanitization is additional protection, not a substitute for collecting only what you need.

## Native input constants {#swift}

`AppNorthInputLimits` currently exposes `ideaTitle = 100`, `ideaDescription = 5_000` and `comment = 2_000`. These do **not** exactly match server idea validation: a 5,000-character native description can be rejected by the server's 4,000-character maximum. For custom UI, validate against the server limits above and handle field errors. Do not infer server limits solely from these constants.

## Rate limits {#requests}

Private-feedback creation allows 20 requests per minute per project/IP bucket. Private thread reads allow 60. Chat message creation allows 20, while chat status and message reads allow 60 per action bucket. Public community routes also share an IP-level budget of 1,200 requests per minute before project resolution.

The identity handoff additionally has an IP limit of 30 requests per minute and a project/action limit of 20. These budgets can overlap: remaining capacity in one does not bypass another.

On HTTP 429, honor `Retry-After` when returned. Avoid polling from multiple views at once and retain a mutation's idempotency key across retries.

## Workspace allowances {#workspace}

App counts, tracked keywords, AI drafts, market access and watchlists are governed by workspace entitlements. Check the current billing and usage screens rather than treating the transport limits as commercial allowances. Provider APIs may impose additional limits.
