Skip to content

Rate limits

Scope Limit Applies to
Per API key 300 requests per minute Every /v1 call with an mls_live_ key, including MCP
Per IP address 60 requests per minute Unauthenticated endpoints: the hosted connect page and the OAuth callback
Per embed session Enough for interactive use The widget’s /v1/embed/* calls

Limits are counted in a sliding one-minute window. Partner keys and workspace keys each have their own budget, so handing workspace keys to customers also isolates their traffic from yours.

HTTP/1.1 429 Too Many Requests
Retry-After: 60
Content-Type: application/json
{ "error": { "code": "rate_limited", "message": "Rate limit exceeded (300 requests/minute per key)" } }

Retry-After is in seconds. Sleep that long before the next call. Retrying sooner counts against the same window.

Meta enforces limits of its own on top. They arrive as network_error with Meta’s code in details, or on a failed target of a post.

Cap Value Note
Instagram publishing 100 posts per account per rolling 24 hours Carousels count as one. Refused publishes fail the target; nothing is queued
Messaging Per-Page rate limits scaled by audience Only matters for bulk sending, which this API is not for
Reads Generous per-app and per-user windows Follower stats and inbox reads are well within them at normal use

The Instagram cap is the one products hit. A scheduler that dumps a month of posts for one account on the same day will run into it; spread them out or warn the user.

  • Cache reads. Account lists, stats and workspace lookups change rarely. Cache them for minutes, invalidate on webhook events.
  • Use webhooks, not polling, for outcomes. One post.published event replaces a poll loop. If you must poll GET /v1/events, do it once a minute per partner.
  • Batch by workspace. GET /v1/posts?workspace= in one call rather than GET /v1/posts/:id per post.
  • Back off on 429. Respect Retry-After; add jitter if many workers share a key.
  • One key per service. Give your scheduler, your inbox sync and your admin tooling separate workspace or partner keys so one runaway loop does not starve the others.

Limits are set per partner. If your integration legitimately needs more than 300 requests per minute, contact MissLess with the numbers.