---
title: 'Programmable voice built for Kenya: introducing Sautikit'
description: >-
  Sautikit is a programmable voice API built for African fintech and SaaS teams.
  Here is what it is, who it is for, and how to place your first call.
summary: >-
  Sautikit is a programmable voice API live in Kenya. This post covers what it
  does, who it is for, and what placing a call looks like from a curl command.
date: 2026-06-27T00:00:00.000Z
type: blog
---


## Summary

Sautikit is a programmable voice API (phone numbers, outbound calling, inbound call handling, recordings) priced in KES and built to run reliably in Kenya. If you have found existing voice API options difficult to work with for African deployments (USD pricing, unreliable routing, or SMS-first products where voice is bolted on), Sautikit is the alternative we built because we needed it ourselves.

## Why this exists

Voice infrastructure in Africa has a problem. The dominant global providers price in USD, bill by the leg (caller-side and callee-side billed separately), and route calls through endpoints optimised for North America or Europe. Latency suffers. Billing surprises happen. Support is slow because your Kenya traffic is a rounding error to them.

Local providers have their own issues: SMS-first APIs where voice is bolted on, erratic uptime, and documentation that hasn't kept pace with what the product actually does.

We built Sautikit because we were shipping a fintech product in Kenya and neither option was acceptable. The result is a voice-only API (no SMS distraction) priced in KES, with a billing model that matches how prepaid telephony actually works.

## Who it is for

The primary audience is backend engineers building products in African fintech, logistics, BPO, and SaaS. Concretely:

- **Fintech products** that need outbound OTP calls, transaction alerts, or agent-facing call centres.
- **Logistics platforms** that need to connect drivers, dispatchers, and customers without exposing phone numbers.
- **BPO and contact centres** that run on a seat-based model and need per-minute costs they can project.
- **SaaS products** building voice features (IVR menus, appointment reminders, support queues) on top of a stable API.

If you are in Kenya and you have hit a wall with existing voice API options, whether on pricing, reliability, or documentation, this is for you.

## What Sautikit is not

It is not an SMS gateway. There is no WhatsApp Business API wrapper. There are no multi-channel messaging features. Voice calls only. That is intentional. If you need SMS, WhatsApp, USSD, or a human-agent desk alongside voice, our parent platform [Helloduty](https://helloduty.com) covers those channels.

## The API surface

Sautikit is a REST API at `api.sautikit.com`. Every workspace-scoped request accepts either a dashboard session cookie (`sk_session`) or a long-lived ES256 JWT API key via `Authorization: Bearer <jwt>`.

The main resources are:

| Resource | Endpoint prefix |
|---|---|
| Phone numbers | `GET /v1/numbers/available`, `POST /v1/numbers/{id}/claim` |
| Outbound calls | `POST /v1/calls` |
| Call records | `GET /v1/calls`, `GET /v1/calls/{id}` |
| Recordings | `GET /v1/calls/{id}/recording` |
| SIP credentials | `GET /v1/numbers/{id}/sip-credentials` |
| Wallet | `GET /v1/wallet`, `GET /v1/wallet/balance` |
| Webhooks | `POST /v1/webhooks` |

The full OpenAPI spec is at `GET /v1/openapi.yaml` on the API server.

## Placing your first call

Here is what it looks like to place a call from the command line. You need an API key (minted from the dashboard at `POST /v1/api-keys`) and a number claimed to your workspace.

```bash
curl -s -X POST https://api.sautikit.com/v1/calls \
  -H "Authorization: Bearer $SAUTIKIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "+254712345678",
    "to": ["+254700000001"]
  }'
```

The response comes back before the call is answered:

```json
{
  "call_id": "9d2b1f53-8c0e-4f1d-9a6b-5d3a8c47e9f0",
  "pbx_session_id": "HD_1a2b3c",
  "status": "ringing",
  "events_url": "/v1/calls/9d2b1f53-8c0e-4f1d-9a6b-5d3a8c47e9f0/events"
}
```

`from` must be a number owned by your workspace. `to` is an array: today the first element is dialled; the array is reserved for simultaneous-ring support on the roadmap.

To poll call status after the fact:

```bash
curl -s https://api.sautikit.com/v1/calls/9d2b1f53-8c0e-4f1d-9a6b-5d3a8c47e9f0 \
  -H "Authorization: Bearer $SAUTIKIT_API_KEY"
```

The `status` field moves through `ringing → answered → completed` (or `failed`, `no_answer`, `busy`, `canceled` on error paths). `duration_seconds` and `cost_minor` are populated at completion.

## What it costs

Numbers cost KES 100/mo ex. VAT (KES 116 incl. VAT). Outbound calls cost KES 3 per minute (KES 0.05/sec). Inbound calls are free (KES 0/min). Recording storage is free up to 1 GB. All amounts are in minor units (KES cents) in the API; the wallet stores and deducts in minor units.

There are no per-request fees, no platform fees on top of minutes, and no per-leg billing that charges you twice for one call.

## Getting started

The shortest path is:

1. Sign up at `sautikit.com` and complete onboarding; it takes under two minutes.
2. Top up your wallet via M-Pesa STK push.
3. Claim a number from `GET /v1/numbers/available`.
4. Mint an API key at `POST /v1/api-keys`.
5. POST to `/v1/calls`.

The [5-minute walkthrough](/blog/place-your-first-call) goes through each step with the exact curl commands.

## Get started

1. [Create a Sautikit workspace](/) and claim a phone number.
2. Top up over **M-Pesa**: KES billing, no card.
3. Mint an API key and POST to `/v1/calls` to place your first call.

**[Start with Sautikit →](/)** &nbsp;·&nbsp; **[See pricing →](/pricing)** &nbsp;·&nbsp; **[Need SMS, WhatsApp & an agent desk? Helloduty →](https://helloduty.com)**

## Next steps

- [Place your first call, step by step](/blog/place-your-first-call)
- [The call stack: how numbers, SIP, and actions compose](/blog/the-call-stack)
