Rate limits are different for different products/endpoints:
| Endpoint | Rate Limit | Window |
|---|
| POST campaign | 10 requests | 1 minute |
| PUT campaign | 10 requests | 1 minute |
| DELETE campaign | 10 requests | 1 minute |
| GET lineItem | 50 requests | 1 minute |
| PUT lineItem | 10 requests | 1 minute |
| GET tactic | 50 requests | 1 minute |
| PATCH tactic | 10 requests | 1 minute |
| POST Creative | 10 requests | 1 minute |
| PUT Creative | 10 requests | 1 minute |
| GET Creative | 50 requests | 1 minute |
| Endpoint | Rate Limit | Window |
|---|
| GET /v2/campaignImport/ | 50 requests | 1 minute |
| POST /v2/campaignImport/ | 10 requests | 1 minute |
| GET /v2/campaignImport/advertiser/advertiserId/account/accountId | 50 requests | 1 minute |
| GET /v2/account/accountId/advertisers | 50 requests | 1 minute |
| GET /v2/campaignImport/lineItem/id | 50 requests | 1 minute |
| GET /v2/campaignImport/account/accountId/advertisers | 50 requests | 1 minute |
| Endpoint | Rate Limit | Window |
|---|
| POST NPI | 10 requests | 1 minute |
| PATCH NPI | 10 requests | 1 minute |
| PUT NPI | 10 requests | 1 minute |
| GET NPI | 50 requests | 1 minute |
| Endpoint | Rate Limit | Window |
|---|
| GET Behavioral Segments | 50 requests | 1 minute |
| GET Practictioners | 50 requests | 1 minute |
| GET Health Specialties | 50 requests | 1 minute |
| GET Geo Targeting Options | 50 requests | 1 minute |
When a rate limit has been reached, you will receive this response:
{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded",
"details": {
"limit": 10,
"window": "1 minute",
"reset_at": "2025-10-07T15:00:00Z",
"retry_after": 3600
}
}
}