Messaging
Send and receive text messages from a phone number your Wok owns — verification codes, order and booking confirmations, support threads. Incoming texts run your own code.
Get a number (shipped)
Rent a number for your org and it's wired for SMS in both directions: a sending identity for outbound, and an inbound webhook pointed back at your Wok. Pick a country (and optionally an area code); the rental is billed against your prepaid balance.
curl -X POST https://api.tellwang.com/v1/orgs/$SLUG/phone-numbers \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"country":"US","area_code":"415"}'
# → 200 { "phone_number": "+14155550123", "status": "active",
# "inbound_url": "https://…/v1/sms/inbound/…" }Send SMS (shipped)
Send from a number you own to any recipient in E.164 format. Each message debits a few prepaid cents. A from that isn't one of your numbers is rejected — you can't send as someone else's number.
await tw.sms.send({
from: "+14155550123",
to: user.phone,
body: `Your Acme code is ${code}`,
});Receive SMS → your edge function (shipped)
Point a number's inbound texts at one of your Wok's Edge Functions. When someone texts the number, TellWang invokes the function with the message, and your code decides what to do — reply, look something up, kick off a workflow.
# route texts on this number to the `sms-reply` function
curl -X PUT https://api.tellwang.com/v1/orgs/$SLUG/phone-numbers/+14155550123/inbound \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"wok_id":"acme","function":"sms-reply"}'The function receives a small JSON payload for each inbound message:
Deno.serve(async (req) => {
const { from, to, body, message_sid } = await req.json();
// …look up the sender, write a row, send a reply…
return new Response("ok");
});Voice (coming soon)
Voice calls — placing a call that plays a message, and answering inbound calls with your own logic — are on the way. The number you rent today is reserved for it; nothing to re-provision when it lands.
Roadmap
- Voice — outbound calls + inbound call handling on the same number.
- Bring your own provider — use your own Twilio account instead of the platform's, billed by them directly.
- Delivery receipts — per-message status callbacks (sent → delivered → failed).