Skip to main content

Rate limits

How many requests a workspace's API keys may send, what the API answers when you go over, and the other limits to plan for.

A workspace's API keys share 120 requests a minute. The count is for the workspace, so two keys in one workspace draw on the same 120, whoever made them.

The limit is the same on every plan.

When you go over

The API answers 429 with a Retry-After header and this body:

{ "errors": [{ "code": "rate_limited", "detail": "Too many requests; try again later" }] }

Retry-After is the length of the limit you reached, in seconds. For the limit on requests that is 60. It is the longest you have to wait: the API does not say when the minute began.

Wait that long, then send the request again with the same Idempotency-Key. A refused request changed nothing.

There are no headers that count down what you have left. Pace your own requests instead of waiting to be refused.

Staying under it

  • Ask for 100 records a page with per_page=100 when you read a whole list.
  • Use the filters a list offers, such as query or a date range, before you page through everything.
  • Space out a bulk job. One request a second uses half the allowance and leaves room for another script.
  • Keep what you read. Customers and services change less often than visits.

People using the web, iPhone and Android apps are counted apart from keys, so a busy script does not lock your team out of TradeSender.

Other limits

WhatLimitOver it
Emails to customers with sendQuote, sendInvoice and sendVisitOnMyWay100 a day for the workspace, shared with the emails your team sends by hand in the apps. Every try counts, including one that is then refused429 with Retry-After: 86400
sendVisitOnMyWay for one visitOne in any 5 minutes, whoever sends it409 on_my_way_already_sent. Nothing is sent
Jobs in one createMonthEndInvoices run300. Its emails are not counted towards the 100 a day422 round_too_large, and nothing is invoiced. Send the jobs in parts with job_ids
Rows in one importCustomers request100422 too_many_rows. Send the rows in parts
Visits in one getDayRoute250422 route_too_large. Ask for one person with membership_id
Visits in one moveCalendarDay300422 day_too_large, and nothing moves. Move one person at a time with membership_id
Emails moveCalendarDay sends with notify_customers300 in any 24 hours for the workspace. They are not counted towards the 100 a day422 email_limit_reached, and nothing moves. Send it again without notify_customers
One Direct Debit collection with collectInvoiceBetween £0.50 and £10,000, in pounds409 invoice_not_collectable
Enquiries through the website formSee The enquiry form's address429
An AI assistant's connection at /mcp300 requests a minute for each connection429 with Retry-After: 60
API keys a member can hold10

The emails a workspace sends by itself (overdue reminders, quote follow-ups and visit reminders) have a ceiling of their own: 200 in any 24 hours. No request is refused for it. An email over the ceiling is held back and goes later.

Plan limits are a separate matter. A request the plan does not allow answers 402 with the code plan_limit_reached. collectInvoice answers it on a plan without Direct Debit collection. See Plans and limits.

Checked against the app on 29 October 2026. Still stuck? Ask usAsk us.