Keepable
Sender API

Sandbox & test keys

Get a test API key in about a minute, with no contract and no KYB. The sandbox exposes the same public operations against synthetic data.

The sandbox lets an engineer try the public Sender API before any contract or know-your-business check. You verify an email, sign in to the portal, mint a kpk_test_ key, and call the same endpoints you would in production, only against a separate, synthetic data plane where nothing is billed and no real person is ever contacted.

A key's prefix selects the data plane. kpk_test_ keys are sandbox; kpk_live_ keys are live. The two never share data. See Environments for how the switch works.

Get a test key

Signup is self-serve, and it happens in the portal. It is not an API call: starting an organisation is an act of a person, and there is no credential to sign one with until it exists.

Sign up at workspace.keepable.co with your organisation's name and your work email. The name becomes your sandbox tenant's, and it is worth getting right; personal email domains are refused, because a sender account belongs to a business.

Open the link we email you. It is single-use and lapses 30 minutes after signup; if it does, sign up again and a fresh one is sent.

Set up a passkey, which is how you get back in afterwards. See Authentication for the sign-in paths.

Mint a kpk_test_ key from the dashboard, and send it as Authorization: Bearer on every call.

You are signed in the moment the link is opened, before any contract and before any KYB. A session and a key are not interchangeable: a session signs a person in, a key signs a server in, and only the second one is what your integration holds.

Manage, rotate, and revoke the key in Workspace. Credential administration is not exposed to the credential itself.

What's different in the sandbox

The sandbox runs the same code as production, with every costly or irreversible side-effect mocked:

ConcernLiveSandbox
Identity / KYB verificationReal vendor lookupDeterministic from the test document number (see below)
Email + deliveryReal recipient inboxSynthetic recipients; nothing is sent to a real person
SealsProduction KMS keyNon-production key, tagged sandbox- and reported as not legally valid
Per-send chargesDebits your walletFree and unlimited
DataYour real tenant dataA separate schema-set; sandbox can never read live data

You do not need an approved tenant, an accepted agreement, or a funded wallet to use the sandbox. Those are only required to go live.

Magic test data

Verification outcomes are driven by the last digit of the document number you submit (a NIN for a person, a CAC registration number for a business), so you can exercise every branch on demand without a real identity:

Last digitOutcome
0Rejected (verification fails)
9Provider unavailable (use this to test your retry/pending handling)
anything elseApproved, with a synthetic Sandbox Tester identity

An empty document number also approves, so a happy-path test that omits it still succeeds. For example, a NIN of 12345678901 approves; 12345678900 is rejected; 12345678909 returns provider-unavailable.

Next steps

On this page