Skip to main content

LazyApp’s API limit

Requests are limited per API key, at a ceiling set by the workspace’s plan. Capacity uses a fixed one-minute window. The ceiling follows the plan, not the key’s mode, so a test key on a Pro workspace gets 1,000 too. A platform customer’s workspace uses its platform’s plan. Live keys need Pro in the first place: below Pro, a live key gets 402 plan_limit_reached before the rate limit applies. An account that was given a custom ceiling keeps it. Every response tells you where you stand:
Exceeding it returns 429 with a Retry-After header (seconds to wait). Back off and retry — always with an Idempotency-Key, so a retry cannot double-send.
Separate keys do not share a bucket. Create extra keys for access control (scopes, per-number restriction), not for throughput — ask support if you need a higher ceiling on one key. Requests with a missing or invalid key are limited separately, per IP (30 failed auth attempts per minute by default), so failed authentication cannot consume a valid key’s budget. POST /v1/otp and POST /v1/otp/verify each have their own per-key limiter on top of the general /v1 limit: 60 sends and 120 verifications a minute by default. They are counted separately, so a busy sign-in page is not throttled by its own verifications. Abuse is held back per recipient instead (see Verify). Need a higher ceiling? Email support@lazyapp.in with your expected peak.

Send velocity (abuse guards)

Independent of HTTP rate limits, LazyApp refuses sends that look abusive before they reach Meta — protecting your number’s quality rating: A free-form reply inside an open customer service window counts against the message the contact just sent, not the hourly cap, so a shop or booking bot can keep answering for as long as the contact keeps writing. Each new message from the contact allows 10 more replies. Templates, and sends outside a window, always count toward the hourly cap. These return 422 with code, not 429. Slow down, fix bad recipients, or contact support to raise a ceiling. See Errors.

Meta’s messaging limit

Distinct, and usually the one that constrains you. Meta caps how many unique users a number may message in 24 hours, and raises the tier as you demonstrate good quality: 1K, 10K, 100K, then unlimited. LazyApp paces broadcasts to your current tier rather than firing everything and collecting failures. GET /v1/capabilities reports the tier and the number’s quality rating — that is LazyApp’s equivalent of an “account health” check.
Quality is what moves the tier. Recipients marking you as spam or blocking you drives the rating to RED, which can cut your limit. Sending fewer, more wanted messages raises the ceiling faster than sending more.

Writing a client that behaves

Add jitter on 5xx. Without it, a fleet of workers that hit an outage together will retry together and hit it again.

Tips

  • Prefer webhooks over polling for delivery status.
  • Use cursor pagination instead of refetching large lists.
  • Cache GET /v1/capabilities for a few minutes.
  • One well-scoped key is enough for throughput; extra keys are for isolation.