Sandbox and test data
Sandbox keys return deterministic test data for every product, including not-found, timeout and provider-failure outcomes.
Requests made with an sk_test_ key never leave Speedmap. They run through the same validation, entitlement, consent and idempotency checks as live requests, then a simulator answers with fixed test identities. Sandbox calls are free and billing.amount_kobo is always 0.
Use the values below as request bodies. Each one is copyable and produces the outcome in its title.
Test identities
The simulator knows six people. Their NIN, BVN and phone number are linked, so the same person can be found through any product.
| Name | NIN | BVN | Phone | Date of birth | Notes |
|---|---|---|---|---|---|
| Clarke Eliza Griffin | 98765432109 | 22222222221 | 08031234567 | 1992-04-18 | Share code SPM001 |
| Bellamy Augustus Blake | 09876543210 | 22222222222 | 08029876543 | 1988-11-02 | SIM swapped 210 days ago |
| Octavia Aurora Blake | 45612378903 | 22222222223 | 08051112233 | 1999-07-25 | |
| Monty Green | 11111111111 | 22222222224 | 08061234500 | 1985-01-30 | SIM swapped 400 days ago |
| John Paxton Murphy | 22222222222 | 22222222225 | 08099990000 | 1990-03-12 | Watchlisted, SIM swapped 2 days ago |
| Raven Marie Reyes | 33333333333 | 22222222226 | 08187654321 | 1995-12-05 | SIM swapped 20 days ago |
Outcome triggers
These identifiers work on any product that takes an NIN, BVN or other identifier:
| Identifier | Outcome |
|---|---|
All zeros, e.g. 00000000000 | 200 with status: "not_found" and match: false |
All nines, e.g. 99999999999 | 202 with status: "pending" (provider timeout). The next GET /v1/verifications/{reference_id} resolves it. |
51515151515 | The provider fails. The request returns 503 verification_unavailable. Retrying is safe. |
For face checks, the image value controls the outcome: a value containing SPOOF fails liveness, and a value containing MISMATCH with a bvn fails the face comparison. Any other value of at least 20 characters passes.
Raw NIN access
Test values with method: "nin" need the raw-NIN entitlement, which NIMC restricts to financial institutions and government agencies. Without it they return 403 not_entitled. The same NINs work with method: "in_person" and any selfie_image of at least 100 characters.
Consent in the sandbox
Consent requests behave like live ones, but you can play the data subject:
- On the hosted consent page (
authorization_url), the one-time code is always123456. Five wrong codes lock the request. - Or skip the page and decide through the API with your sandbox key:
curl -X POST "http://localhost:4000/v1/sandbox/consents/cns_.../approve" \
-H "Authorization: Bearer sk_test_..."Use /deny instead of /approve to simulate a refusal. Both return the updated consent and fire consent.updated to your webhook endpoints. With a live key these endpoints return 403 sandbox_only.
A full BVN record check in the sandbox: create a consent for BVN 22222222221, approve it, then call POST /v1/verify/bvn with method: "core" and the consent_id.
Test values by product
Generated from the live product catalog.
POST /v1/verify/nin · Product reference
{
"method": "nin",
"nin": "98765432109",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}{
"method": "nin",
"nin": "09876543210",
"reason": "employmentRecruitment",
"consent": {
"obtained": true
}
}{
"method": "share_code",
"share_code": "SPM001",
"reason": "financialProducts"
}{
"method": "nin",
"nin": "00000000000",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}{
"method": "nin",
"nin": "99999999999",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}POST /v1/verify/bvn · Product reference
{
"method": "boolean",
"bvn": "22222222221",
"reason": "financialProducts",
"consent": {
"obtained": true
},
"match": {
"first_name": "Clarke",
"last_name": "Griffin"
}
}{
"method": "boolean",
"bvn": "22222222222",
"reason": "financialProducts",
"consent": {
"obtained": true
},
"match": {
"last_name": "Smith"
}
}{
"method": "boolean",
"bvn": "22222222225",
"reason": "creditBackgroundCheck",
"consent": {
"obtained": true
},
"match": {
"last_name": "Murphy"
}
}POST /v1/verify/face · Product reference
{
"image": "data-LIVE-selfie-0001",
"bvn": "22222222221",
"reason": "financialProducts"
}{
"image": "data-SPOOF-photo-of-photo",
"reason": "financialProducts"
}{
"image": "data-MISMATCH-selfie",
"bvn": "22222222221",
"reason": "financialProducts"
}POST /v1/verify/phone · Product reference
{
"phone": "08031234567",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}{
"phone": "08000000000",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}POST /v1/verify/business · Product reference
{
"rc_number": "RC1234567"
}{
"rc_number": "RC1111111",
"include": [
"directors",
"winding_up"
]
}{
"rc_number": "BN2345678"
}{
"tin": "23456789-0001"
}POST /v1/verify/account · Product reference
{
"account_number": "0123456789",
"bank_code": "058",
"match": {
"name": "Clarke Griffin"
}
}{
"account_number": "1234567890",
"bank_code": "044",
"match": {
"name": "John Doe"
}
}{
"account_number": "4567890123",
"bank_code": "011"
}POST /v1/signals · Product reference
{
"phone": "08099990000",
"bvn": "22222222225",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}{
"phone": "08187654321",
"bvn": "22222222226",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}{
"phone": "08031234567",
"bvn": "22222222221",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}POST /v1/verify/passport · Preview: sandbox only · Product reference
{
"passport_number": "A12345678",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}{
"passport_number": "A00000000",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}POST /v1/verify/drivers-license · Preview: sandbox only · Product reference
{
"license_number": "LAG12345AA01",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}{
"license_number": "LAG00000AA00",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}POST /v1/verify/voters-card · Preview: sandbox only · Product reference
{
"vin": "90F5B1A2C3D4E5F6071",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}{
"vin": "00F0B0A0C0D0E0F0000",
"reason": "financialProducts",
"consent": {
"obtained": true
}
}Questions? Email developers@speedmap.ng. This page is also available as Markdown.