Feedjoltdocs
DevelopersAPI

Rate limits

How Feedjolt rate-limits the REST API and MCP server, which headers we send, and how to handle 429s.

REST rate limits use the client IP, including when an API key is present. Sending a different key does not create a new IP budget. Limits are per route (magic-link, contact form, and public feedback writes are tighter than reads). The numbers can change; trust the headers on the response, not a hardcoded quota.

We do not expose GraphQL. Ignore any GraphQL introspection checks — the public surface is REST + MCP.

REST headers

Limited routes send SlowAPI's X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset on success.

On 429:

HeaderMeaning
Retry-AfterSeconds to wait before retrying
RateLimitIETF draft: "default";r=<remaining>;t=<reset>
RateLimit-PolicyIETF draft: "default";q=<limit>
X-RateLimit-*Same facts in the older header names

Example:

HTTP/1.1 429 Too Many Requests
Retry-After: 42
RateLimit: "default";r=0;t=42
RateLimit-Policy: "default";q=60
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42

Wait Retry-After seconds, then retry. Do not busy-loop.

MCP

The MCP server uses a separate per-principal cap (currently 600 requests / minute per OAuth client or API key). It is not the REST SlowAPI limiter.

On 429 MCP also sends Retry-After and RateLimit. The JSON-RPC error body includes error.data.retry_after_seconds.

What to do

  1. Read Retry-After (or retry_after_seconds on MCP).
  2. Back off at least that long.
  3. If you keep hitting 429s, mint fewer parallel calls — list endpoints are paginated on purpose.

Public feedback and comments

Feedback submissions require a fresh CAPTCHA token, verified by the server. After a failed submission, complete the challenge again before retrying.

ActionPer IPPer person within a workspacePer workspace
Submit feedback5/minute20/hour200/hour
Submit a comment10/minute60/hour1,000/hour

Anonymous feedback uses the IP as its identity. Signed-in feedback and comments use the verified portal identity. These limits apply together across boards and posts in the workspace.

Public drafts count toward the public monthly submission allowance. Staff-created drafts do not. A workspace can hold at most 1,000 pending public drafts; review or remove drafts before accepting more when this limit is reached.

Marking a public draft as spam frees pending capacity. Retained spam still counts toward that month’s public submission allowance.

IP budgets are shared across public boards and workspaces. The hourly identity budget is separate for each workspace.

On this page