Quickstart

Send your first SMS or verify a user in under five minutes.

Getting started

TextCall is the enterprise communications platform of Intergo Telecom, combining messaging, verification, phone numbers, and voice in one platform.

Multiple API keys, one per application. Product-specific webhooks, built on a common structure. No vendor sprawl, no fragmented integrations just a unified platform that scales with your communication stack.

What you can build

ProductWhat it doesInterfaceStatus
MessagingOutbound SMS to one or many recipients, with delivery trackingHTTP APIAvailable
VerifySend and validate one-time passcodes with automatic channel fallbackHTTP APIAvailable
2-way MessagesReceive inbound SMS and WhatsApp messages and reply by your own numbersHTTP APIETA Q3 - 2026
Numbers (DID)Rent local, mobile and toll-free numbers in 100+ countriesPortal, APIETA Q3 - 2026
Click to CallBridge two parties in a call from a single API requestHTTP APIETA Q3 - 2026
SIP TrunksTerminate and originate voice traffic over SIPPortal, SIPETA Q3 - 2026

Verify currently supports SMS, WhatsApp, Viber, Telegram, and Voice. Messaging is SMS today, with more channels to follow.

📘

Looking for endpoint details?

This page gets you to a first successful API call and explains the platform model. For every parameter, schema and response, see the API Reference.

How the platform fits together

Four concepts. Get these straight and everything else follows.

ConceptScopeWhat it is
AccountOne per customerYour commercial relationship: balance, pricing, invoices, registered sender IDs, and number rentals.
ApplicationMany per accountA logical workspace. Each has its own API key, webhook endpoints, users, product configuration, and reporting.
NumberAssigned to one appA DID you rent from us. Carries capabilities (voice, SMS, or both) and routing rules. Inbound traffic arrives at its application's webhook.
API keyOne per applicationThe credential on every request. It identifies which application the traffic belongs to.

An application is the unit that matters day to day. It's where a key, a set of numbers, and a webhook endpoint come together — so a message sent with a given key, and an inbound reply to a number in that same application, land in the same place with the same configuration.

When your account is created, a default application comes with it. You can start sending immediately.

Create additional applications when you want to separate traffic:

  • One per product or brand, so reporting and delivery statistics stay clean
  • One per environment, so staging traffic never mixes with production
  • One per internal team, so each team gets its own key, its own numbers, and its own webhook endpoint

Because every API key belongs to exactly one application, the key you use determines which settings apply and where usage is reported. Rotating or revoking one application's key doesn't affect the others.

Two interfaces, one account

Most of TextCall is an HTTP API. Voice trunking is not. A SIP trunk is configured in the portal and used over SIP signalling, with its own credentials and IP allowlist.

The two surfaces share the same account, the same numbers, and the same billing. A DID you rent can send and receive SMS through the HTTP API while routing its inbound calls to your SIP trunk. You don't manage numbers twice.

Before you start

1. Get an account

TextCall accounts are provisioned by our team — there's no self-service signup. Email [email protected] with:

  • Your company details
  • The countries you plan to send to or receive traffic from
  • Your expected monthly volumes
  • Which products you're interested in

We'll set up your account and send you portal credentials, typically within one business day.

2. Get an API key

In the portal, go to Applications → Manage → API keys and copy the key for the application you want to use.

🔐

Treat your API key like a password. Never embed it in mobile apps, browser JavaScript, or public repositories — anyone holding it can send traffic and place calls on your account. Keep it server-side, and rotate it from the portal if it's ever exposed.

3. Note the base URL and authentication

All HTTP requests go to:

https://api.textcall.com

Authenticate by sending your key in the X-API-KEY header on every request. All request and response bodies are JSON, so send Content-Type: application/json on any request with a body.

curl https://api.textcall.com/messages \
  -H "X-API-KEY: $TEXTCALL_API_KEY"

Send your first message

This sends a single SMS and returns immediately with a message ID. Delivery happens asynchronously.

curl -X POST https://api.textcall.com/messages \
  -H "X-API-KEY: $TEXTCALL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "recipients": ["+35799000000"],
    "channels": [
      {
        "channel": "SMS",
        "sender": "TextCall",
        "content": { "text": "Your TextCall integration is live."}
      }
    ]
  }'
{
  "request_id": "01J8Z3K9QW4T7VXR2MB6C0YHN5",
  "status": "SUCCESS",
  "messages": [
    {
      "message_id": "bbfe03d8-04be-4360-9092-b409873bd1f4",
      "recipient": "+35799000000",
      "status": "QUEUED" 
    }
  ]
}

A 200 Accepted means TextCall has accepted your message, not that the handset received it. Two identifiers are returned, and the difference matters:

request_id: one per API call. Use it to look up everything that call produced, and quote it when you contact support.
message_id: one per recipient per channel attempt. This is the identifier that appears in delivery webhooks.

📱

Choosing a sender value. You have two options, and the choice determines whether you can receive replies.

An alphanumeric sender ID (TextCall) is one-way only: recipients can't reply to it. It must be registered on your account first, and some countries prohibit them or require pre-registration with the local regulator.

A number you rent from us is two-way capable. Use one if you want replies, and see Sender IDs for country rules.

Sending from an unregistered sender is the most common reason a first message fails.

Send your first verification

Verify is a two-call flow: start a verification, then check the code your user entered. You don't generate, store, or expire the code — TextCall does.

Step 1: Create the verification

curl -X POST https://api.textcall.com/verifications \
  -H "X-API-KEY: $TEXTCALL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "+35799000000",
    "template": {
      "name": "withdrawal_otp_en",
      "variables": { "amount": "$18.22" }
    },
    "channels": [
      { "channel_name": "WHATSAPP", "priority": 1 },
      { "channel_name": "SMS",      "priority": 2 }
    ]
  }'

TextCall tries priority 1 first. If delivery fails or times out, it automatically cascades to priority 2, then 3, and so on. You write no fallback logic.

{
  "request_id": "8f14e45f-ceea-467a-9f5a-3d2b1c8e7a91",
  "error_code": "",
  "error_message": ""
}

Step 2: Confirm the code the user typed

curl -X POST https://api.textcall.com/verifications/confirmation/{verification_id} \
  -H "X-API-KEY: $TEXTCALL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "otp_code": "482913" }'
{ 
  "success": false, 
  "message": "Verification code is not valid."
}

A wrong or expired code returns 400 with an error code you can branch on — verify.invalid_code, verify.expired, or verify.max_attempts_reached. See Errors & status codes.

Bringing your own code

If you already generate OTPs, pass yours in custom_otp on creation. TextCall delivers it exactly as supplied, and you validate it yourself — the Confirm endpoint is not used in this flow.

Where to go next

If you want to…Go to
See every endpoint, parameter, and schemaAPI Reference
Setup webhooksWebhooks
Understand a failure or delivery statusErrors & status codes

Did this page help you?