Types of Limits
Notify enforces two types of limits:Per-minute rate limit
Maximum requests per minute per API key type
Daily message limits
Maximum notifications per day by channel (SMS, email, letter)
Per-Minute Rate Limits
How It Works
The per-minute rate limit uses a token bucket algorithm that:- Refills tokens at a constant rate (based on your service’s rate limit)
- Consumes one token per API request
- Rejects requests when bucket is empty
- Allows short bursts above the average rate
Rate Limit by Key Type
Rate limits vary by API key type:| Key Type | Default Rate Limit | Burst Capacity |
|---|---|---|
| Live (Normal) | 3,000/min | 1,001 tokens |
| Team | 3,000/min | 1,001 tokens |
| Test (Trial) | 3,000/min | 1,001 tokens |
Rate limits are configurable per service. Contact support to request a higher rate limit if needed.
Burst Capacity
The token bucket allows bursts above the average rate:- Bucket max:
min(ceil(rate_limit / 3) + 1, 1001) - Bucket min: 1 token
- Replenish rate:
rate_limit / 60tokens per second
- Replenishes at 50 tokens/second
- Max bucket size: 1,001 tokens
- Can burst to ~1,000 requests before throttling
Rate Limit Response
When you exceed the per-minute limit, you’ll receive a429 Too Many Requests response:
Daily Message Limits
Limit Types
Daily limits are enforced separately for each notification channel:- SMS messages (UK)
- International SMS messages
- Email messages
- Letters
Default Limits
Trial Services (Restricted)
| Channel | Test Key Limit | Team/Live Key Limit |
|---|---|---|
| SMS | 50/day | 50/day |
| 50/day | 50/day | |
| Letter | 50/day | 50/day |
Live Services
| Channel | Default Limit |
|---|---|
| SMS | 250,000/day |
| International SMS | 10,000/day |
| 250,000/day | |
| Letter | 20,000/day |
Daily limits reset at midnight UTC. Limits are configurable per service through the admin interface.
Daily Limit Response
When you exceed a daily limit, you’ll receive a429 Too Many Requests response:
Checking Current Usage
Daily usage is tracked in Redis with a 24-hour expiry:- Cache key:
service-{service_id}-{notification_type}-{key_type}-count - Expiry: 86,400 seconds (24 hours)
- Reset: Automatic at midnight UTC
Handling Rate Limits
Retry Strategy
When you receive a 429 response, implement exponential backoff:Python retry example
Node.js retry example
Rate Limit Best Practices
Distribute requests
Spread API calls evenly over time instead of bursting all at once. Use queuing for batch operations.
Implement backoff
Use exponential backoff when you receive 429 responses. Don’t retry immediately.
Monitor usage
Track your API usage to avoid hitting limits. Set up alerts before reaching thresholds.
Request limit increases
Contact support if you consistently need higher limits. Provide usage justification.
Bulk Sending
For sending notifications in bulk, use the CSV job upload feature instead of the API:Advantages of CSV Jobs
- Not subject to per-minute rate limits
- Processes in background
- Better for large batches (1,000+ notifications)
- Automatic retry handling
- Progress tracking
When to Use API vs CSV Jobs
- Use API
- Use CSV Jobs
Real-time notifications
- Immediate delivery required
- Single or small batches
- Triggered by user actions
- Need instant confirmation
- < 100 notifications at once
Rate Limit Configuration
Service-Level Settings
Rate limits are configured per service in the admin interface:- Per-minute rate limit - Configurable, default 3,000/min
- SMS daily limit - Configurable, default 250,000/day
- Email daily limit - Configurable, default 250,000/day
- Letter daily limit - Configurable, default 20,000/day
- International SMS limit - Configurable, default 10,000/day
Requesting Limit Increases
To request higher limits:- Contact GOV.UK Notify support
- Provide:
- Service details and use case
- Expected volume
- Traffic patterns (spikes vs. steady)
- Justification for higher limits
- Limits can be increased for specific services
Monitoring Rate Limits
Metrics Available
Notify exposes Prometheus metrics for rate limiting:Logging
Rate limit events are logged:FAQ
What happens if I hit a rate limit?
What happens if I hit a rate limit?
Your request will be rejected with a 429 status code. You should implement retry logic with exponential backoff to handle this gracefully.
Do rate limits apply to all API key types?
Do rate limits apply to all API key types?
Yes, but the limits may differ. Test keys on trial services have lower daily limits (50/day) compared to live services.
Can I get a higher rate limit?
Can I get a higher rate limit?
Yes, contact GOV.UK Notify support with your use case and required volume. Limits can be increased for justified use cases.
Do CSV job uploads count toward rate limits?
Do CSV job uploads count toward rate limits?
No, CSV jobs are not subject to per-minute API rate limits. They are only subject to daily message limits.
When do daily limits reset?
When do daily limits reset?
Daily limits reset at midnight UTC (00:00 UTC).
Next Steps
Authentication
Learn about API authentication
Send notifications
Start sending notifications
Notifications
Understand notification lifecycle
Error handling
Handle API errors