Promoting from test to live
Checklist for safely promoting an integration from test mode to live production traffic.
Promoting from test to live
This checklist covers every step to take before sending real production traffic through the ISA API. Work through it top-to-bottom. Every item that doesn't apply to your integration is a deliberate skip — note why, not just that you skipped it.
1. Credentials
- You have your live bearer token (
isa_live_*) stored in your production secrets manager, not in source code or a.envfile. - The token has the minimum scopes your service needs. A prequalification-only service should carry only the
prequalifyscope, notcases,usage, orwebhooks. - You have a credential rotation plan documented and tested (see Rotating tokens).
- Test tokens (
isa_test_*) are absent from production environment configuration.
2. Endpoints and base URL
- Your integration targets
https://zyins.isaapi.com. There is no separate hostname for live mode. -
ISA_BASE_URLis unset or explicitly set to production. Staging overrides must not survive in production config. - Your integration does not have any hardcoded URLs pointing to non-production hosts.
3. Idempotency keys
- Every mutating request (
POST,PUT,PATCH,DELETE) sends a UUID v4Idempotency-Keyheader. - Retry logic reuses the same key — it does not mint a new key per retry attempt.
- Your persistence layer stores
idempotency_keyalongsiderequest_idandlivemodeon every business record.
4. Error handling
- Your integration matches on
err.code(stable enum), not on HTTP status codes or message text. -
5xxerrors trigger a retry with the same idempotency key and exponential backoff. The SDK handles this automatically; verify you have not disabled retries. -
4xxerrors (other than429) do not retry — they are deterministic failures your code must fix. -
429 rate_limit_exceededrespects theRetry-Afterheader. The SDK does this automatically. - Your integration does not swallow errors silently. Every API error surfaces to your logging system with
request_id.
5. Webhooks
- Webhook subscriptions are re-registered in live mode. Test-mode subscriptions do not carry over.
- Your webhook endpoint verifies the
X-ZyINS-Signatureheader usingHMAC-SHA256and a constant-time comparator. - Your endpoint returns
200 OKbefore doing any slow processing (queue the work, ack immediately). - Your endpoint is idempotent on
event.id— at-least-once delivery means you may receive the same event twice. - The webhook signing secret is stored in your production secrets manager and not committed to source control.
6. Livemode guard
- Your application reads
result.livemodefrom the response envelope and asserts it matches the expected mode before persisting the result. - Your monitoring alerts on unexpected
livemode: falseresponses in production.
7. Quota and rate limits
- You know your live quota (requests per day, requests per month). Check the dashboard if unsure.
- High-volume batch jobs use a concurrency limit that keeps peak RPS under your rate limit.
- You have a
quota_exceededalert wired to notify your team before the cycle resets, not after.
8. Observability
- Every API call logs
request_idat INFO or DEBUG level. This is your fastest path to support resolution. -
5xxand429rates are in your alerting system with a page-worthy threshold. - You are subscribed to incident notifications via the email on your account. (See support-and-status; a public status page launches at GA.)
9. Service continuity
- You have tested the unhappy path: what happens when the ISA API returns
503 service_unavailable? Your application should degrade gracefully, not crash. - Downstream consumers of prequalify/quote results are tolerant of temporary gaps (queue-based, not synchronous).
10. Security
- No token or signing secret appears in application logs, error reports, or crash dumps.
- TLS verification is enabled on your HTTP client (it is by default on all ISA SDKs — do not disable it).
- Your server's outbound firewall allows connections to
zyins.isaapi.comon port 443.
You're ready
When every applicable item is checked, swap ISA_TOKEN to your live token (isa_live_*), deploy, and verify the first live request's livemode: true in your logs.
If anything looks unexpected after going live, check support-and-status for active incident emails first, then contact [email protected] with the request_id from the failing call.
See also
- Test mode — what is and isn't simulated
- Rotating tokens — keeping credentials fresh
- Authentication guide — bearer tokens, test vs. live, rotation
- Webhooks guide — signature verification
- Support — escalation and SLAs
Updated 1 day ago