Learn // Go to production
Production checklist
UpdatedLast verified
Hardening checklist for auth, retries, quotas, webhook handling, and support readiness, to go through before your integration goes to production.
Go through this checklist before your integration goes to production.
Before go-live
- Store API keys server-side or in a secure secrets manager. See Authentication.
- Log
metadata.requestIdfor every request so support can trace issues quickly. - Monitor
quotas.workspace.credits.leftandquotas.workspace.minuteRateLimit.leftfrom the Usage endpoint. - Route async workflows through a durable webhook receiver, not a manual test endpoint.
- Make webhook processing idempotent by deduplicating on
webhookId. See Webhooks.
Request safety
- Use timeouts on every outbound request. On a long poll (
GET /v2/webhooks/:webhookId?wait=20), keep the timeout above thewaitvalue, for example 30 seconds. See Polling. - Retry only
429and5xxwith exponential backoff. See Error handling. - Send an
Idempotency-Keyheader on Find Email and Find Phone, and send the same key when you retry, so a lost response never starts and bills a second lookup. - On a
429, wait the number of seconds inerror.details.retryAfterbefore retrying. - Treat
4xxvalidation or auth failures as permanent until you change the input or credentials.
Webhook safety
- Use HTTPS for every production webhook URL.
- Return
200quickly, then process heavy work asynchronously. - Validate that each callback contains
webhookId+dataorwebhookId+errorCode. See Webhook payload. - Deduplicate on
webhookIdto handle rare duplicate deliveries.
Monitoring & alerts
- Alert on repeated
401,402,429, and5xxresponses. - Surface credit exhaustion before it blocks critical workflows. See Credits.
- Keep one smoke test for a sync endpoint and one for an async endpoint (see below).
- Document which team owns API key rotation, webhook incidents, and quota alerts.
Recommended smoke tests
GET /v2/usagereturns200and a validquotasobject.POST /v2/fetch/persons/checkreturns200withcreditsConsumed: 0.- One async endpoint returns an immediate response and the result is delivered to your webhook URL.
- Your application logs both the outbound request and the webhook completion using the same
requestIdorwebhookId.
You're ready to go live
When every item above is in place, the integration is ready for production traffic.
FAQ
Which Reverse Contact API errors should I retry?
Retry only 429 and 5xx responses from the Reverse Contact API, with exponential backoff, and on a 429 wait the number of seconds in error.details.retryAfter before retrying. Treat 4xx validation or auth failures as permanent until you change the input or credentials. See Error handling.
How do I monitor credits and rate limits in production?
Monitor quotas.workspace.credits.left and quotas.workspace.minuteRateLimit.left from the Reverse Contact Usage endpoint, and alert on repeated 401, 402, 429 and 5xx responses. Surface credit exhaustion before it blocks critical workflows. See Usage endpoint.
Can Reverse Contact send the same webhook twice?
Rare duplicate deliveries are possible, so make Reverse Contact webhook processing idempotent by deduplicating on webhookId. Return 200 quickly, then process heavy work asynchronously. See Webhooks.
What smoke tests should I run before going live with the Reverse Contact API?
The recommended smoke tests are: GET /v2/usage returns 200 and a valid quotas object, POST /v2/fetch/persons/check returns 200 with creditsConsumed: 0, and one async endpoint returns an immediate response and delivers the result to your webhook URL. Your application should also log both the outbound request and the webhook completion using the same requestId or webhookId.
What should I log so support can trace an API issue?
Log metadata.requestId for every Reverse Contact API request so support can trace issues quickly. For async workflows, also log the webhook completion with the same requestId or webhookId as the outbound request.