Skip to main content
The sandbox lets you build and test against real-shape responses without burning fetcher credits. Every paid tier and the Free trial includes test keys; you can hold as many as you want.

Activating sandbox mode

Use a key prefixed ki_test_. There’s no separate base URL or stage — the same endpoints handle both modes, and the active mode is determined by the key prefix.
Every sandbox response carries a top-level mode: "sandbox" field so your code can detect canned data unambiguously. Live responses do not carry this field; its absence means “this is real data.”
(Exception: GET /v1/signals returns identical content in both modes — the schema manifest is deterministic — and is not tagged.)

The four canned domains

What the sandbox covers

Every endpoint accepts ki_test_ keys. Coverage parity is verified by an automated test suite — if the live API supports it, the sandbox returns shape-equivalent canned data for it.

Rejection rules

  • Test domain on a live key400 { "error": "test domains require a ki_test_ key" }
  • Real domain on a test key400 { "error": "sandbox: only ['acme.test', 'cohort.test', 'struggling.test', 'unicorn.test'] supported" }

When to graduate

When your integration is rendering canned data correctly across every shape you care about, swap your key prefix to ki_live_ and run the same call against a real domain. The shapes are identical (minus the mode field). The first real call typically costs us 30–60 seconds of cold-scoring time and real fetcher spend on our side — be intentional about which company you score first.