CrowPhone API · Developer preview

Phone numbers & SMS for your app.
No carrier paperwork.

Getting a number that can text now means brand registration, campaign vetting and weeks of forms. Skip all of it: rent real numbers in 24 countries with one REST call, pay per message from credits that never expire, and get inbound texts on signed webhooks.

curl -X POST https://www.crowphone.com/api/v1/numbers \
  -H "Authorization: Bearer cp_live_..." \
  -d '{"country": "SE", "months": 1}'
# → a real Swedish mobile number, live in ~5 seconds

A number in one call

POST /v1/numbers and a real phone number is yours in seconds — 24 countries, from $1/month. Release it just as fast; you never pay for numbers you're not using.

Send & receive SMS

Per-segment pricing at the destination country's rate, charged from prepaid credits. Anything the carrier reports as undelivered is refunded automatically.

Signed webhooks

Inbound texts POST to your endpoint within seconds, HMAC-signed so you can verify every payload. No webhook? Poll GET /v1/messages instead.

Zero carrier paperwork

No brand registration, no campaign vetting, no compliance questionnaires. The trade-off is honest: mobile-class PH/SE numbers, strongest for same-region traffic.

The whole integration

Three requests. That's it.

1 · Buy a number

curl -X POST https://www.crowphone.com/api/v1/numbers \
  -H "Authorization: Bearer cp_live_..." \
  -H "Content-Type: application/json" \
  -d '{"must_send_sms": true, "months": 1}'

{ "number": "+46700900123", "country": "SE",
  "price": 3.22, "capabilities": { "send_sms": true } }

2 · Send a message

curl -X POST https://www.crowphone.com/api/v1/messages \
  -H "Authorization: Bearer cp_live_..." \
  -H "Content-Type: application/json" \
  -d '{"from": "+46700900123", "to": "+46701234567",
       "body": "Your order shipped 📦"}'

{ "sid": "SM...", "segments": 1, "price": 0.04, "status": "queued" }

3 · Receive replies on your webhook

POST https://yourapp.com/webhooks/crowphone
X-Crowphone-Signature: sha256=...

{ "type": "message.received",
  "data": { "number": "+46700900123",
            "from": "+46701234567",
            "body": "Thanks!" } }

Pricing

Pay for usage.
Nothing else.

  • Numbers from $1/month · SMS from $0.03/segment
  • No platform fee, no subscription, no minimum monthly spend
  • Failed and undelivered messages refunded automatically
  • Credits never expire · top-ups of $50+ earn +12% bonus

API access unlocks at $50 in lifetime top-ups — all of it spendable credit, not a fee. That's ~12 number-months or ~700 texts, and it's what keeps this API spam-free.

The honest fine print

We tell you what other providers bury: US & Canada numbers are receive-only for SMS (carrier registration rules), and strict apps like WhatsApp sometimes refuse virtual numbers for verification codes.

Mobile-class PH and SE numbers send freely and have the best verification acceptance — pass "must_send_sms": true and the API picks one for you.

Same-region traffic delivers most reliably. The API says so in its responses, not just here.

Ship the number, skip the forms.

Create an app, top up, and your first number is one curl away.