Marcus Whitfield
Broker · Arbor Homes Realty
“Every listing city has its own local number now. Open-house calls actually get answered — no more screened voicemails from unknown prefixes.”
Everything you need to integrate voice, SMS, webhooks, and AI agents into your product — in one clean REST API with official SDKs for five languages.
Install the SDK, grab your API key, and make your first call — no telephony knowledge required.
Add the Twiching Node.js SDK to your project.
Pass your API key from the Twiching dashboard.
Initiate an outbound call in two lines.
Outbound & inbound PSTN calling, SIP trunking, call control, and recording.
Send and receive messages globally. Long code, short code, and toll-free support.
Real-time event delivery with HMAC-signed payloads and automatic retry.
Plug in AI Receptionist, whisper coaching, and call summarisation via REST.
Search, provision, port, and release numbers in 191 countries from one API.
Per-call metrics, CDRs, and aggregated usage — streamed to your data warehouse.
Use a Bearer token for server-side scripts or OAuth 2.0 for user-facing integrations. All requests must go over HTTPS.
Bearer token
Authorization: Bearer tw_live_xxxxxxxxxxxxxxxxxxxxxxxx
OAuth 2.0
POST https://api.twiching.ai/oauth/token
Content-Type: application/json
{
"grant_type": "client_credentials",
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}Rate limits by plan
| Plan | Req/s | Daily calls | SMS |
|---|---|---|---|
| Free | 5 req/s | 500 calls | 100 SMS/day |
| Growth | 50 req/s | 10,000 calls | Unlimited |
| Enterprise | Custom | Unlimited | Unlimited |
HTTP error codes
Twiching signs every webhook payload with HMAC-SHA256 so you can verify authenticity before processing. Unacknowledged events are retried with exponential backoff for up to 24 hours.
import crypto from 'crypto'
export function verifyWebhook(
rawBody: string,
signature: string,
secret: string
): boolean {
const expected = crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex')
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature)
)
}npm install @twiching/sdkpip install twichinggo get github.com/twiching/twiching-gogem install twichingcomposer require twiching/twiching-phpThe Twiching API is versioned in the URL path. Breaking changes are announced 90 days in advance and always land in a new version — never the current one.
https://api.twiching.ai/v1/
Reliable communication built for modern teams. From clinics to real-estate offices, businesses stay reachable without missed calls, disconnected systems, or outdated phone setups.
Contact UsBroker · Arbor Homes Realty
“Every listing city has its own local number now. Open-house calls actually get answered — no more screened voicemails from unknown prefixes.”
Director · Northside Family Clinic
“Moved our appointment reminders and after-hours line in a weekend. Patients don't hit voicemail at 5:01 PM anymore, and the whole thing stayed HIPAA-aligned.”
Co-founder · Telemetry SaaS
“Our support number used to show as “unknown caller” in customers’ CRMs. Not anymore. One account, one bill, one team that picks up.”
Operations · Beacon Logistics
“Porting our business numbers was smoother than expected. The onboarding team handled everything while we stayed live.”
Marketing Lead · Elevate Media
“The analytics dashboard finally shows which campaigns drive actual phone calls. Our ad spend makes sense now.”
Broker · Arbor Homes Realty
“Every listing city has its own local number now. Open-house calls actually get answered — no more screened voicemails from unknown prefixes.”
Director · Northside Family Clinic
“Moved our appointment reminders and after-hours line in a weekend. Patients don't hit voicemail at 5:01 PM anymore, and the whole thing stayed HIPAA-aligned.”
Co-founder · Telemetry SaaS
“Our support number used to show as “unknown caller” in customers’ CRMs. Not anymore. One account, one bill, one team that picks up.”
Operations · Beacon Logistics
“Porting our business numbers was smoother than expected. The onboarding team handled everything while we stayed live.”
Marketing Lead · Elevate Media
“The analytics dashboard finally shows which campaigns drive actual phone calls. Our ad spend makes sense now.”
FAQ
All requests go to https://api.twiching.ai/v1/. Always use HTTPS — HTTP requests will be rejected.
Sign up at twiching.ai, verify your account, and navigate to Settings → API Keys. You can create multiple keys with different scopes.
Yes. Use https://sandbox.twiching.ai/v1/ for testing. Sandbox calls do not connect to real numbers and are free of charge.
call.initiated, call.ringing, call.answered, call.completed, call.failed, message.sent, message.delivered, message.failed, recording.ready.
Absolutely. Any HTTP client works. Pass your Bearer token in the Authorization header and send JSON bodies. See the REST reference for full endpoint docs.
On a 429 response, read the Retry-After header (value in seconds) and back off accordingly. Growth and Enterprise plans can request a limit increase from the dashboard.