Skip to main content

Rate limits

The limits the server enforces today, read from the same constants it uses.

How limits work

Limits are counted in our database, so they hold across every Cloudflare location. A refused request gets HTTP 429. /api/auth answers carry an X-Retry-After header with the seconds to wait; /v1 answers use the code RATE_LIMITED. A window starts at the last allowed request.

Limits per account are keyed on a keyed hash of the email address, never the address itself.

Sign-in and new accounts

Limits on /api/auth
WhatLimitCounted per
/api/auth/sign-in/email10 per 1 minuteEach client IP address
/api/auth/sign-up/email10 per 5 minutesEach client IP address
/api/auth/sign-in/magic-link30 per 5 minutesEach client IP address
/api/auth/verify-email10 per 5 minutesEach client IP address
/api/auth/two-factor/*10 per 5 minutesEach client IP address
/api/auth/passkey/*20 per 1 minuteEach client IP address
Any other /api/auth path100 per 1 minuteEach client IP address
Failed password sign-ins5 per 15 minutesAccount and client IP address
Failed password sign-ins20 per 15 minutesAccount
Emails sent (sign-in link, password reset, verification)3 per 15 minutesAccount and client IP address
Emails sent (sign-in link, password reset, verification)10 per 1 hourAccount
Emails sent (all kinds together)200 per 1 hourEach client IP address
Wrong authenticator codes in a row10, then locked for 15 minutesAccount

A correct password does not use up the failed-sign-in allowance.

Inside /v1

Limits inside /v1
WhatLimitCounted per
New referrals (POST /v1/cases/referrals)3 per 1 hourReferring person
New referrals (POST /v1/cases/referrals)20 per 1 hourAgency
Emailed step-up codes5 per 1 hour; each works for 10 minutes and 5 triesPerson
Wrong step-up authenticator codes in a row5, then locked for 15 minutesPerson
Wrong medicine-signing PINs in a row5, then locked for 15 minutesCarer
Secure document sends3 per dayDocument
Secure document sends25 per dayAgency
Mobile number codes (POST /v1/notifications/sms/phone)5 per 1 hourPerson
Mobile number codes (POST /v1/notifications/sms/phone)3 per 1 hourMobile number
Mobile number code checks (POST /v1/notifications/sms/phone/check)10 per 15 minutesPerson
Marking messages, announcements and notifications read (POST .../read, POST /v1/notifications/read-all)60 per 1 minutePerson
File links (POST /v1/files/:kind/:id/link)120 per 1 minutePerson
Opening files (GET /v1/files/open/:token)240 per 1 minutePerson

API keys and webhooks

Limits on API keys and webhooks
WhatLimitCounted per
Requests with an API key120 per 1 minuteKey
API keys25 at onceAgency
Webhook endpoints10 at onceAgency

Over the key or endpoint count, creating another answers 409 CONFLICT.

Limits on a secure document link
WhatLimitCounted per
Link lifetime7 daysLink
One-time codes5 per 1 hour; each works for 10 minutes and 5 triesLink
Code requests10 per 1 hourLink
Document opens30 per 1 hourLink