API catalog

Sendeni uses bearer API keys for `/v1` APIs. Identity includes the working consent simulator. Pay, Talk, Locate, and AI return deterministic sandbox responses through adapter boundaries.

Health and signup

GET /healthPOST /v1/auth/signupGET /v1/dashboardPOST /v1/auth/keys
{"email":"developer@example.com","company_name":"Acme Corp"}

Identity verification

working prototype
POST /v1/identity/verify
curl -X POST https://api-staging.sendeni.io/v1/identity/verify \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{"phone_number":"+27820000001","verification_type":"age_over_18"}'

Identity age gate

working prototype
POST /v1/identity/age-gate
curl -X POST https://api-staging.sendeni.io/v1/identity/age-gate \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{"phone_number":"+27820000001","minimum_age":18}'

Identity match

working prototype
POST /v1/identity/match
curl -X POST https://api-staging.sendeni.io/v1/identity/match \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{"phone_number":"+27820000016","first_name":"Aisha","last_name":"Patel","id_number":"9204070200089"}'

Pay charge

sandbox simulation
POST /v1/pay/charges
curl -X POST https://api-staging.sendeni.io/v1/pay/charges \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{"phone_number":"+27820000001","amount":"49.99","currency":"ZAR","merchant_reference":"sandbox-order-1001"}'

Talk message

sandbox simulation
POST /v1/talk/messages
curl -X POST https://api-staging.sendeni.io/v1/talk/messages \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{"to":"+27820000001","channel":"sms","body":"Your Sendeni sandbox code is 123456"}'

Locate presence

sandbox simulation
POST /v1/locate/verify-presence
curl -X POST https://api-staging.sendeni.io/v1/locate/verify-presence \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{"phone_number":"+27820000001","latitude":-26.2041,"longitude":28.0473,"radius_meters":250}'

AI risk score

sandbox simulation
POST /v1/ai/risk-score
curl -X POST https://api-staging.sendeni.io/v1/ai/risk-score \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{"phone_number":"+27820000001","transaction_amount":"499.00","merchant_category":"wallet_topup","signals":{"device_trust":"medium","velocity":"normal"}}'

Identity KYC lite

privacy-preserving sandbox
curl "https://api-staging.sendeni.io/v1/identity/kyc-lite?phone_number=%2B27820000001" \
  -H "Authorization: Bearer sk_test_..."

Useful sandbox numbers

+27820000001 - adult age check and positive presence+27820000002 - under-18 age check and negative presence+27820000016 - KYC match sample+27829999999 - not found sample

Billing and metering skeleton

The dashboard counts requests by product and compares usage against the sandbox monthly limit. This is the foundation for future plan limits, invoices, and product-specific pricing.