Operelio
Docs4 min read

Rate limits

What counts toward the monthly API calls (writes, runs and Bridgeant messages, never reads), the 60 requests a minute per key, and what triggers a 429.

By Operelio team · Updated October 30, 2026

On this page7
  1. 1.Current limit
  2. 2.What counts toward the monthly calls
  3. 3.How the window works
  4. 4.Concurrent job limit
  5. 5.What happens when you hit the limit
  6. 6.Best practices
  7. 7.Frequently asked questions

Current limit

Two limits apply on the Pro and Agency plans. A monthly cap on calls that change or run something (Pro 1,000 calls per month, Agency 5,000), and a burst limit of 60 requests per minute per API key. Each key has its own per-minute window. Separate keys don't share or compete on the burst limit, but all of a workspace's calls count toward the one monthly cap.

The monthly cap resets on your billing cycle anniversary. Hitting it returns 429 with the machine-readable code "api_monthly_limit_reached" plus limit, used, and resetAt fields in the body. This 429 also carries a Retry-After header, but it counts down to your cycle reset, so it can be days. Treat it as a stop signal, not a sleep timer.

Bridgeant has one more limit. The person who made the key can send it 30 messages a minute, counting what they send in the app. Past that, POST /bridgeant/ask returns 429 with code slow_down and a Retry-After of up to 60 seconds, and nothing is charged.

What counts toward the monthly calls

Only writes and runs count, one call per request. Reads don't. However many you make, reads are limited only by the per-minute window. A write counts when it arrives, so one refused for its plan, an admin's key or an id that isn't in the workspace still counts.

RequestCounts toward the monthly calls
Every GET: jobs, files, batches, trails, runs, leads, routing, Do Not Contact entries, workflows, CRM connections and owners, mappings, analytics and activityNo
POST /dnc/check, which only looksNo
POST /uploads, POST /jobs and POST /jobs/batchYes, one each
POST /trails/:id/pause and /resume, and PUT a routing team's membersYes, one each
POST and DELETE /dnc/entriesYes, one each, however many entries
POST /workflows/run and POST /jobs/:id/pushYes, one each
POST /bridgeant/askYes, one each, when it used a Bridgeant message. A question about how Operelio works doesn't count.
POST /bridgeant/actions/:id/confirmYes, one each, once what it runs has started or the trail is saved. One that didn't run doesn't count.

Webhook deliveries and the MCP server used with a sign-in don't count toward the monthly API calls either. Jobs still count toward your plan's monthly jobs, wherever they start.

How the window works

Your first request opens a 60-second window. You can make up to 60 requests inside that window, reads and writes alike. Request 61 returns 429 with a Retry-After header.

When the window expires, the next request opens a fresh one. Stay under 60 calls per minute and you won't see a 429.

Concurrent job limit

Separate from the rate limit, your plan also caps how many jobs can be running at once: 1 on Free, 2 on Starter, 3 on Pro, 5 on Agency. POST /jobs and POST /workflows/run return 429 (with no Retry-After) if you'd exceed it, with the error mentioning "jobs running".

POST /jobs/batch is not gated by the concurrent limit at submission time. A 50-file batch creates 50 jobs all at once; the worker pulls them off the queue serially in upload order. A batch is not refused by the concurrent cap, but its queued jobs use your running slots, so single POST /jobs calls return 429 until the batch drains.

What happens when you hit the limit

Requests over 60 in a single window return HTTP 429 (Too Many Requests) with a Retry-After header. POST /uploads, /jobs and /jobs/batch, GET /jobs/:id, GET /jobs/batch/:batchId, the batch and file downloads, and the MCP server say "Rate limit exceeded". The newer endpoints add code "rate_limited" and say "Too many requests from this key. Wait a moment and try again." The Retry-After value is the number of seconds until the current window closes and a new one can open.

Example 429 response
HTTP/1.1 429 Too Many Requests
Retry-After: 23
Content-Type: application/json

{ "error": "Rate limit exceeded" }

Two other 429s exist. POST /uploads, /jobs, /jobs/batch and /workflows/run return 429 with code "job_monthly_limit_reached" when your monthly jobs are used up, with limit, used, and resetAt in the body and no Retry-After header. An apply_fixes job doesn't count toward that limit, so it still runs. Any request that counts toward the monthly calls returns 429 with code "api_monthly_limit_reached" once the cap is spent, and reads never do; that one has a Retry-After, but it counts down to your cycle reset. Switch on the code field to tell the cases apart, not on Retry-After alone.

Best practices

Poll every 5 to 10 seconds. A status check doesn't count toward the monthly cap, but every key shares its 60 requests a minute between polls and everything else.

Use POST /jobs/batch when you have multiple files for the same tool. One batch request counts as one API call regardless of file count, so a 50-file batch is far more efficient than 50 individual /jobs calls.

Honor Retry-After when you do hit a 429. Sleep for that many seconds before retrying, rather than retrying in a tight loop and burning the next window too.

If you need higher throughput, contact support to discuss enterprise options.

Frequently asked questions

Does the rate limit apply per key or per account?

The burst limit is per key. If you have separate keys for production and testing, each gets its own 60-per-minute window. They don't share or compete. The monthly call cap is per workspace, so every key's calls draw from the same monthly pool.

What counts as one call?

Each write or run counts as one call toward the monthly cap. POST /jobs/batch counts as one even when it processes 50 files, and adding 500 Do Not Contact entries in one request counts as one. Reads, including polling GET /jobs/:id, don't count toward the monthly cap, but every request counts toward the 60 a minute.

Do reads count toward the API limit?

No. Operelio counts only writes and runs toward your monthly calls. Reads are limited only to 60 requests a minute per key.

Can I burst above 60 right at the boundary of a window?

Yes, briefly. Because each window starts on your first request, you could send 60 requests near the end of one window and another 60 just after the next opens. Don't design around it. Keep your cadence under 60 calls per minute and you won't see 429s.

Connect Operelio to your code or your assistant

Start free and add Operelio to Claude or ChatGPT today. The API and webhooks come with Pro.