Rate limits

Defaults from production Partner code (synced 2026-07-21). Enterprise tiers may negotiate higher caps — ask Tips Marketing. Always handle 429 with retry_after_seconds when present.

Limits may vary by tier. Sandbox partners (pk_test_*) never spend live credits but still hit the daily send cap below.

Partner API /api/v1/partner/*

SurfaceLimitNotes
REST requests (org key or seat) 100 req/min per partner (default) Configurable per partner as requests_per_min. Error: rate_limit_exceeded.
Single send → same recipient 10 msgs/day per recipient (default) recipient_msgs_per_day on the partner record. Anti-harassment.
Batch create 10 req/min · ≤500 recipients/request Org API key + HMAC only. Shared bucket with campaigns.
Campaigns Same as batch Org key only. One debit path (wraps batch worker).
Sandbox pk_test_* 100 sends/UTC-day · 0 credits Cap shared across single + batch + campaign. Error: sandbox_daily_cap_exceeded. Bodies prefixed [SANDBOX].
Webhook deliveries log Last 100 attempts retained GET /webhook/deliveries — org key only.

Outbound webhooks (us → you)

BehaviorValue
Immediate attempt timeout5 seconds
Retry sweepHourly background worker
Max attempts5 (then drop)
BackoffQuadratic minutes, capped at 6 hours

Not an inbound RPS limit on your servers — plan capacity for bursty fan-out after large batches.

Client API /api/ping/*

Native apps and the Chrome extension use the Client lane (session / device auth). Attach upload, inbox long-poll (/events/wait), and push registration live here — not under /api/v1/partner. See Client API and CLIENT_API_FOR_NATIVE_APPS.md in the repo for governance details.

← API Reference · Examples · OpenAPI · API Terms