sautikit
PricingDevelopersBlogAbout
Sign inStart building
Guides
  • Browser Calling with WebRTC
  • Build a Call Center with Conferences
  • Build a Voice IVR
  • Claim and Route a Number
  • Quickstart: Place a Call
  • Record and Stream to S3
  • Verify Webhook Signatures
Concepts
  • Browser Calling with WebRTC
  • Calls
  • Phone Numbers
  • Voice Actions DSL
  • Wallet and Billing
  • Webhooks
  • Workspaces
Voice Actions
  • Conference
  • Dial
  • GetDigits
  • Hangup
  • Play
  • Record
  • Redirect
  • Reject
  • Say
Webhooks
  • call.answered
  • call.completed
  • call.failed
  • call.recording.ready
  • call.started
  • number.provisioned
  • number.released
  • storage.tier_changed
  • wallet.low_balance
  • wallet.top_up
SDKs
  • Go SDK
  • Node.js SDK
  • PHP SDK
  • Python SDK
Errors
  • account.suspended
  • accounts.admin_required
  • accounts.last_owner
  • accounts.remove_denied
  • accounts.role_change_denied
  • accounts.write_denied
  • api_key.already_revoked
  • api_key.expired
  • api_key.invalid
  • api_key.name_required
  • api_key.not_found
  • api_key.revoked
  • api_key.scope_denied
  • api_key.scope_invalid
  • audit.invalid_action_kind
  • auth.admin_required
  • auth.cannot_unlink_only_auth
  • auth.email_taken
  • auth.google_exchange_failed
  • auth.google_not_configured
  • auth.google_state_mismatch
  • auth.invite_email_mismatch
  • auth.no_workspace
  • auth.session_invalid
  • auth.token_expired
  • auth.token_invalid
  • auth.token_used
  • auth.workspace_forbidden
  • calls.events_failed
  • calls.get_failed
  • calls.list_failed
  • calls.not_found
  • calls.recording_expired
  • calls.recording_failed
  • calls.recording_not_found
  • calls.stats_failed
  • currency.unsupported
  • idempotency.conflict
  • internal_error
  • invitations.not_found
  • invite_requires_login
  • method_not_allowed
  • mpesa.unavailable
  • not_found
  • numbers.already_claimed
  • numbers.invalid_routing_url
  • numbers.not_assigned
  • numbers.not_found
  • numbers.price_missing
  • numbers.retired
  • numbers.series_invalid
  • numbers.series_not_active
  • numbers.sip_config_unavailable
  • numbers.sip_credentials.already_revoked
  • numbers.sip_credentials.not_found
  • numbers.sip_token_unavailable
  • numbers.suffix_collision
  • numbers.wallet_unavailable
  • paystack.unavailable
  • pbx.body_read_failed
  • pbx.ingest_failed
  • pbx.payload_decode_failed
  • pbx.resolve_failed
  • pbx.unknown_workspace
  • provider.has_active_series
  • provider.invalid_credentials
  • storage.tier_invalid
  • storage.tier_switch_failed
  • topup.not_found
  • validation.bad_request
  • validation.invalid_cursor
  • wallet.adjustment_invalid_kind
  • wallet.alert_subscriber_exists
  • wallet.alert_subscriber_invalid_email
  • wallet.alert_subscriber_not_found
  • wallet.alert_subscribers_max
  • wallet.currency_mismatch
  • wallet.insufficient_funds
  • wallet.invalid_amount
  • wallet.not_found
  • wallet.topup_below_minimum
  • webhooks.create_failed
  • webhooks.delete_failed
  • webhooks.deliver.secret_unset
  • webhooks.delivery_not_retryable
  • webhooks.dispatcher_unavailable
  • webhooks.event_unsupported
  • webhooks.list_failed
  • webhooks.not_found
  • webhooks.patch_failed
  • webhooks.rotate_secret_failed
Changelog
  • 2026-06-15: Public Pricing Endpoint
  • 2026-06-20: WebRTC SIP Token (HS256 5-min TTL + Key Rotation)
  • 2026-06-27: sautikit.com Launch
  • Inbound voice is now free; outbound drops to KES 3/min

Node.js SDK

TypeScript SDK for Node.js. Install via npm, place calls with client.calls.create(). Preview; pin your version.

2026-06-28

Next Steps

  • Quickstart: Place a CallFive steps from zero to a live outbound call on Sautikit. Sign up, add KES credit, claim a Kenyan DID, POST to /v1/calls/originate, and verify the signed webhook payload.
sautikit

Programmable voice infrastructure for Africa. Buy numbers, place calls, and bill per second, all in KES, via API.

Product

NumbersCalls & routingRecordingsWallet & billingPricing

Developers

DocumentationAPI referenceQuickstartAI promptChangelog

Company

AboutBlogCareersConsole

© 2026 Sautikit. All rights reserved.

Sautikit provides voice API services for application developers. Numbers provisioned on this platform are not configured for emergency calling (e.g. 999 / 112). Do not use Sautikit numbers as a replacement for a primary phone line.

Summary

The Sautikit Node.js SDK is a TypeScript-first client for placing calls, checking call status, and managing phone numbers. It exports both ES modules and CommonJS, supports top-level await, and runs in Node.js 18+ and modern browsers.

Install

npm install @sautikit/node

Or with Yarn:

yarn add @sautikit/node

Or with pnpm:

pnpm add @sautikit/node

Hello, world

Place an outbound call and get the call ID back:

import { SautikitClient } from "@sautikit/node";
 
const client = new SautikitClient({
  apiKey: process.env.SAUTIKIT_API_KEY,
});
 
const call = await client.calls.create({
  from: "+254712345678",
  to: ["+254700000001"],
});
 
console.log(`Call placed. ID: ${call.call_id}, Status: ${call.status}`);

The response includes:

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

Auth

The SDK reads your API key from the SAUTIKIT_API_KEY environment variable by default:

export SAUTIKIT_API_KEY="eyJ..."

Or pass it directly to the constructor:

const client = new SautikitClient({
  apiKey: "eyJ...",
});

Where it works

  • Node.js 18+: LTS and current versions
  • TypeScript 4.5+: full type support
  • Browsers: any ES2020+ environment (modern Chrome, Firefox, Safari, Edge)
  • Runtimes: Deno, Bun, Cloudflare Workers (with polyfills for fetch/crypto)

Status

Preview: semver pinning recommended. The SDK's public API may change before v1.0. Pin your version in package.json:

{
  "dependencies": {
    "@sautikit/node": "0.x.y"
  }
}

Subscribe to releases on GitHub to stay informed of breaking changes.

Next steps

  • Quickstart: place a call
  • SDK GitHub repository
  • API reference
  • Call webhooks