Pagination
Lists use a cursor. Send ?limit= (1 to 100, default 50); the response includes:
{ "data": [ ... ], "has_more": true, "next_cursor": "MjAyNi0xMC0xNlQxMjowMDowMFp8..." }
For the next page, repeat the call with ?cursor=<next_cursor>. Order is newest first.
Rate limits
Per key, per minute: Vendas 60, Completo 120, Enterprise 300 (or as contracted), free trial 20. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds). Over the limit: 429 with Retry-After.
WhatsApp sends also follow Meta's limits (number tier, 24-hour window, approved templates, opt-out) and your plan limits.
Idempotency
On create calls (e.g. send a message, create a campaign), send Idempotency-Key: <uuid>. Repeating the same key with the same body within 24 h returns the same response (Idempotent-Replayed: true header) without sending again. The same key with a different body returns 409 idempotency_conflict.
Versioning
The version is in the path (/v1). Within v1 we only add fields and endpoints; breaking changes go to /v2, with notice and a deadline. Ignore fields you don't know.