Skip to content
NMC Docs

Limits and errors

Understand API rate limits, size limits, and how to handle HTTP error responses.

Authenticate every customer API request with Authorization: Bearer <key>, and send request bodies as application/json. Format all timestamps as RFC3339 strings (such as 2026-09-20T15:30:00Z). NMC rejects requests that include unknown, repeated, or empty query parameters.

Limit Value
Authenticated customer requests 120 per minute per business, shared across all of its API keys.
List page size Default 10; minimum 1, maximum 100.
Customer request body 64 KiB.
Webhook endpoints 3 per business by default, including stopped webhook endpoints and those created in the dashboard. Removed webhook endpoints no longer count. Contact support for a higher limit.
Dashboard webhook test and resend actions 10 per minute per business, shared across both actions.

Responses include rate-limit headers showing your limit, remaining requests, and window reset time. If you receive 429, wait for the duration in Retry-After before sending more requests. Creating extra API keys for the same business shares the same 120-per-minute allowance.

Failed requests return a JSON object with code and message, plus param or structured details when relevant. Branch your error-handling logic on the HTTP status and machine-readable code, and use message for display or logging context.

Status How to handle it
400 Fix the request body, query parameter (named in param), or pagination cursor before trying again.
401 Check or replace the business API key.
403 The account is on hold (account_on_hold; contact support), its plan isn’t running (plan_inactive; all requests are refused until the plan is started again in Billing), or the record is read-only.
404 Verify the resource ID and confirm it belongs to this business.
405 Switch to an HTTP method supported by the endpoint.
409 Check code. Common causes include paused tracking (tracking_paused), a reused form submission ID with different input (form_submission_conflict), an incompatible lead update (lead_status_conflict), a mismatched currency (currency_changed), a call recording still processing (recording_processing), a Google Ads conversion confirmation (google_ads_conversions_confirmation_required), or reaching the webhook endpoint limit (webhook_endpoint_limit).
413 Keep the request body within 64 KiB.
429 Wait for Retry-After before retrying.
500 / 503 Retry with exponential backoff and stop after a fixed number of attempts. Resend the identical request, keeping the same submission id on form submissions.

A write request may have succeeded on NMC’s side even if your HTTP client saw a timeout. Read Retrying requests before resending it.

Every API response includes X-Request-ID, Cache-Control: no-store, and X-Content-Type-Options: nosniff. Log X-Request-ID alongside any error code so you can share both with support when troubleshooting. Never log Authorization headers, and avoid storing request or response payloads containing contact details longer than necessary.