Graph API rate-limit codes 4, 17, 32, 613: stop, reuse the Sume job

Meta documents error codes 4, 17, 32 and 613 for rate limits. Map each to a pause and publish the stored Sume result later instead of re-rendering.

5 min readSume
All posts

Meta documents four rate-limit error codes for the Graph API: 4 (app limit), 17 (user limit), 32 (Pages API limit) and 613 (custom limit). Treat all four as a signal to stop calling, hold the publish task, and retry later with the video you already rendered.

Meta's advice on reaching a limit is to stop making API calls; it adds that continuing to call increases your call count and extends recovery time.

What does each code mean?

Meta's page lists them as follows.

Graph API rate-limit error codes (read 2026-10-05)
CodeMeaning per Meta
4The app whose token is used has reached its rate limit
17The user whose token is used has reached their rate limit
32The user or app whose token is used in the Pages API request has reached its rate limit
613A custom rate limit has been reached

What should the publisher do?

Map the code to an action in one place. The sample parks the task and keeps the Sume job id, so the retry publishes the same video.

LIMIT_CODES = {4: "app", 17: "user", 32: "pages", 613: "custom"}


def next_step(error_code: int, job_id: str) -> dict:
    if error_code in LIMIT_CODES:
        return {"action": "park", "scope": LIMIT_CODES[error_code], "job_id": job_id, "reuse_render": True}
    return {"action": "fail", "job_id": job_id, "reuse_render": True}


if __name__ == "__main__":
    print(next_step(4, "job_123"))
    print(next_step(100, "job_123"))

How is this different from Sume's limits?

On Sume, 429 rate_limited and 429 queue_full are different: rate_limited is request volume, queue_full means accepted work is at capacity. Use retry-after when present, and never retry a paid submit without an Idempotency-Key (Errors and rate limits).

Sources

Related posts

More in Developers

All Developers posts

Written by Sume