# One API for every text you send.

Send one message or a hundred through the same SMS API. The SDK counts segments before send, picks GSM-7 or Unicode for you, and every send is idempotent with a webhook on each delivery state.

## Send your first SMS in five minutes.

## From the language you already use.

Sending is the core of the Bird SMS API. The first send goes to a sanctioned test recipient (+15005550006), so you can ship a CI check and wire up webhooks before you provision a number.

## Five things you don't build yourself.

The same contract on every Bird channel.

## Know the cost before the carrier does.

A GSM-7 message fits 160 characters per segment; a single emoji or non-Latin character flips the whole message to UCS-2 and drops that to 70. The SDK reports the encoding and segment count on every send, so billing is never a surprise and a concatenated message is always a deliberate choice.

## One message or a hundred, one call.

Batch independent messages in one request, each with its own recipient and text. The batch validates as a unit: one bad number rejects the call with a 422, so you never half-send. A single idempotency key makes the whole request safe to retry.

## Go deeper in the docs.

Wire up webhooks, make every send safe to retry with idempotency keys, and read the error reference so you handle each failure the right way.

## About 40% of the world's commercial SMS already runs on Bird.

Sending is one capability of the Bird SMS API: numbers, two-way inbound, compliance, routing, and analytics ship with it, on infrastructure we've run for a decade.