developers
docs
Free to start·Pay as you go·No platform fees

Sautikit API documentation

One REST API for programmable voice in Kenya. Buy a voice number, place and answer calls, and reconcile spend against a prepaid wallet. Sign up free and you only pay for the numbers you hold and the seconds you talk.

Base URLhttps://api.sautikit.com
Versionv1
CurrencyKES

Quickstart

From zero to a live call in three steps. You'll need a workspace (free) and a little wallet credit for the number and minutes.

Get an API key

Create a key in the console under Settings → API keys. Live keys start with tsk_live_.

Buy a voice number

Purchase a local Kenyan number via the API or console, then point it at your callback URL.

Place your first call

POST to /v1/calls and listen for webhook events as it rings, answers and ends.

first-call.sh
# place an outbound call
curl -X POST https://api.sautikit.com/v1/calls \
  -H "Authorization: Bearer $SAUTIKIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "+254200000001",
    "to": "+254712345678",
    "webhook_url": "https://your-app.example.com/webhook"
  }'

Authentication

Every request needs a bearer token. Mint one in the console under Settings → API keys. Live keys start with tsk_live_; restricted keys can scope to specific products.

auth.sh
# Set your live API key
export SAUTIKIT_API_KEY="tsk_live_..."

# Every request needs Authorization: Bearer
curl https://api.sautikit.com/v1/numbers/available \
  -H "Authorization: Bearer $SAUTIKIT_API_KEY"

Numbers

Provision and manage Kenyan voice numbers. Sautikit numbers are local Nairobi DIDs billed monthly in KES.

GET/v1/numbers/available

Browse claimable Kenyan numbers, with optional filters.

POST/v1/numbers/claim

Claim a number to your workspace and set its callback URL.

DELETE/v1/numbers/{number_id}

Release a number; billing stops, prorated to the day.

Calls

Place outbound calls, list history, and download recordings. All requests are signed with your live key.

POST/v1/calls

Place an outbound call from a claimed number.

GET/v1/calls/{call_id}

Read a call's status, duration, and cost.

GET/v1/calls/{call_id}/recording

Stream a presigned recording URL (if recording was enabled).

Wallet

Your prepaid KES balance. Top up via M-Pesa STK push. Configure email alert recipients for low-balance notifications.

GET/v1/wallet/balance

Current balance, in minor units.

POST/v1/topups

Initiate an M-Pesa STK push top-up (pushes a payment prompt to the specified phone).

GET/v1/wallet/statements

Paginated transaction history.

GET/v1/wallet/alert/subscribers

List email recipients for low-balance alerts.

POST/v1/wallet/alert/subscribers

Add an email recipient for low-balance alerts (triggers opt-in confirmation).

DELETE/v1/wallet/alert/subscribers/{id}

Remove a low-balance alert subscriber.

Webhooks

Subscribe to call, number, and wallet events. Every webhook is HMAC-SHA256 signed; verify with the secret from your endpoint config.

call.startedcall.answeredcall.completedcall.failedrecording.readynumber.provisionednumber.releasedwallet.top_upwallet.low_balance
signature-header.txt
X-Sautikit-Signature: t=1719500000,v1=<hex>

HMAC-SHA256 over body + '.' + ts. See Verify webhook signatures.

Build with AI

Let your AI write the integration.

Paste this prompt into Claude, ChatGPT, or Cursor. It includes Sautikit's machine-readable references. Your AI gets everything it needs to write working code in one paste.

Open the builder
ai-prompt.md
You are helping a developer build on Sautikit: programmable voice API, live in Kenya.

Reference (fetch this first, it is the canonical source):
  https://sautikit.com/developers.md
  https://sautikit.com/llms-full.txt
  https://sautikit.com/openapi.public.yaml

Authentication: API keys via Authorization: Bearer header.
Base URL: https://api.sautikit.com
Currency: KES (prepaid wallet).

Their task: <describe your goal>

Constraints:
  - Use the language/framework they mention or ask before choosing.
  - All code samples must be self-contained and runnable end-to-end.
  - Treat the page above as authoritative; do not invent endpoint names.

SDKs

Official SDKs for the languages our customers use most. Install, set your key, you're shipping.

Node.js
npm i @sautikit/node
View SDK
Python
pip install sautikit
View SDK
PHP
composer require sautikit/sautikit
View SDK
Go
go get github.com/sautikit/go
View SDK