The partner API has no sandbox mode. Your API key is a single production
credential (krnl_...) and every partner API call — including
external-checkout complete and provider-initiated provisioning — acts on your
live account and can run a real provisioning job. There is no krnl_sb_
key and no separate sandbox host.
Two different “sandboxes”
- The in-dashboard sandbox (this is what “sandbox” means in kurnl) — an
operator-facing safe mode you enter from the dashboard. It shows mirrored
sample data and simulated network/billing, and never touches real subscribers
or switch ports. Use it to learn the product and rehearse changes. See the
operator guide: Use the dashboard sandbox. It is driven by
a dashboard login, not by a partner API key.
- The partner API — production only (above). Test your integration
deliberately, against a test location/unit you control.
Testing your integration safely
Until a partner test environment exists, the pragmatic approach:
- Point
webhook_url at a throwaway receiver (e.g. webhook.site)
while wiring up your webhook handler — this exercises the full event flow
without needing a finished endpoint.
- Use a test location/unit you control for end-to-end runs, and clean up the
resulting test subscriber afterward from Dashboard → Subscribers.
- Rely on idempotency: the same email + plan returns the existing job with
"Provisioning already in progress", so retries on network errors are safe.
Webhook delivery behaviour
kurnl delivers each event with up to 3 retry attempts (exponential back-off:
2s, then up to 30s). Your endpoint must return any 2xx status to acknowledge;
anything else is treated as a failure and retried. Events are signed —
verify the X-Webhook-Signature: sha256=<hmac> header (see Webhooks).
Going live on the production domain
If you integrated against the demo host and are moving to the kurnl.ca
production domain, swap the host in your endpoint URLs
(middleware.bso-projects.com → middleware.kurnl.ca) and use the API key +
webhook secret + service_provider_document_id for that environment.
Production location_hash values come from real Marketplace redirects — read
location_hash dynamically from the redirect URL rather than hardcoding it.