https://<env>.kardinal.ai host, its own credentials, and its own data — nothing you create in one is visible from the other. Moving to production is mostly a matter of pointing your integration at the new host with new credentials and re-validating what you already tested, rather than a code change.
Differences between sandbox and production
Checklist before switching to production
- Confirm account-specific quotas (rate limit, max payload size, simultaneous-running-plans threshold) with support@kardinal.ai — these aren’t published and can differ from what sandbox happened to tolerate.
- Re-run your integration against production with real data volumes. If your production order/resource counts are meaningfully larger than what you tested in sandbox, re-check your
maxOptimizationDurationsizing — see Handling large volumes rather than assuming sandbox-derived durations still apply. - Re-verify geocoding. Kardinal does not geocode addresses (see Data model); confirm the same geocoding provider and pipeline used in sandbox testing is wired up for production data before go-live.
- Point any webhooks at the production environment’s URLs, if your integration uses them — a sandbox-configured webhook won’t fire for production plans.
- Rotate to production credentials everywhere, including any long-lived config or secrets manager entries — see the next section.
Managing API keys per environment
Kardinal doesn’t issue a separate long-lived “API key” — each environment has its own username/password pair, exchanged for short-lived tokens as described in Authentication and API keys. For production:- Store sandbox and production credentials as separate secrets, scoped to their respective deployment environments, so a staging deploy can never accidentally authenticate against production (or vice versa).
- Confirm which environment a given
access_tokenwas issued against before debugging a request that behaves unexpectedly — a token from the wrong environment fails authentication rather than silently hitting the wrong data. - If you’re automating token refresh (see Token lifetime and refresh), point the refresh logic at the same
<env>.kardinal.aihost the original login used.
See also
- Authentication and API keys — obtaining, refreshing, and storing credentials.
- Limits and quotas — rate limits, payload size, and SLA, and how to confirm the values for your account.
- Handling large volumes — sizing
maxOptimizationDurationand paginating for production-scale data.

