# What is Surge
URL: /docs/overview/what-is-surge
LLM index: /llms.txt
Description: An introduction to Surge, the SMS and voice API for developers.
Related: /docs/overview/how-surge-is-organised, /docs/overview/send-your-first-message, /docs/registration/one-account-per-customer, /docs/registration/api-walkthrough

# What is Surge

Surge is an SMS and voice API that handles carrier registration for you. If you've used Twilio, Sinch, or Vonage, you know the pain: weeks of waiting for carrier approval, XML-based voice configuration, and support tickets that go nowhere. Surge gives you a demo number to test with immediately, and production registration takes hours instead of weeks.

## Why Surge?

- **24-to-48-hour carrier registration** with a guaranteed 72-hour response. Twilio and Sinch typically take two to four weeks.
- **JSON everywhere.** REST API, voice call configuration, webhooks. No XML, no TwiML, no legacy protocols.
- **One-click voice agent integrations** with ElevenLabs, Retell, and Vapi.
- **Embeddable UI components** you drop into your app: inbox, conversation, dialpad, unread count.
- **SDKs for Python, TypeScript, Ruby, and Elixir** with full API parity.
- **Responsive support** when registrations get flagged or carriers block messages.

## Who Surge is for

**Developers adding messaging to a product.** Appointment reminders, order notifications, 2FA, conversational SMS agents. Surge handles TCR paperwork and carrier registration so you don't build compliance infrastructure.

**Vertical SaaS platforms.** Create one Account per customer, register each brand separately, and keep compliance, billing, and message history isolated. See [One Account per Customer](../registration/one-account-per-customer) for the full pattern.

## What you can build

<CardGroup cols={2}>
  <Card title="SMS and MMS messaging" icon="message">
    Send one-to-one messages, schedule sends, or blast to large lists. Track ongoing threads with the Contacts and Conversations APIs.
  </Card>
  <Card title="Phone number verification" icon="shield-check">
    Deliver six-digit OTP codes for login flows and onboarding. Call `POST /verifications` to send a code and `POST /verifications/{verification_id}/checks` to verify it.
  </Card>
  <Card title="Voice calls" icon="phone-volume">
    Make outbound calls with recording and voicemail. Integrate with AI voice agents from ElevenLabs, Retell, or Vapi for agent-driven workflows.
  </Card>
  <Card title="Embeddable UI" icon="browser">
    Add an inbox, conversation view, phone dialpad, or unread count badge to any web application. Your users send and receive messages without you building a messaging UI.
  </Card>
</CardGroup>

## Try it now

Send a test message with a single API call. No registration or phone number purchase required:

<CodeGroup items={["Python","TypeScript","Ruby","Elixir","cURL"]}>

```python Python
from surge import Surge

surge = Surge()  # reads SURGE_API_KEY from environment

message = surge.messages.create(
    account_id="{account_id}",
    to="+18015551234",
    body="Hello from Surge!",
)

print(message.id)
```

```typescript TypeScript
import Surge from "@surgeapi/node";

const surge = new Surge(); // reads SURGE_API_KEY from environment

const message = await surge.messages.create("{account_id}", {
  to: "+18015551234",
  body: "Hello from Surge!",
});

console.log(message.id);
```

```ruby Ruby
require "surge_api"

surge = SurgeAPI::Client.new # reads SURGE_API_KEY from environment

message = surge.messages.create(
  "{account_id}",
  to: "+18015551234",
  body: "Hello from Surge!"
)

puts message.id
```

```elixir Elixir
client = Surge.Client.new(System.get_env("SURGE_API_KEY"))

{:ok, message} =
  Surge.Messages.create(
    client,
    "{account_id}",
    %{to: "+18015551234", body: "Hello from Surge!"}
  )

IO.puts(message.id)
```

```bash cURL
curl -X POST https://api.surge.app/accounts/{account_id}/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "+18015551234", "body": "Hello from Surge!"}'
```

</CodeGroup>

The [quickstart](../quickstart) walks through this step by step, including how to get your API key and account ID.

## Next steps

<CardGroup cols={2}>
  <Card title="Send your first message" icon="paper-plane" href="../quickstart">
    See Surge working end to end with a demo number. Nothing to register or purchase yet.
  </Card>
  <Card title="How Surge is organised" icon="sitemap" href="./how-surge-is-organised">
    The Platform, Account, and User hierarchy and the API conventions that flow from it.
  </Card>
  <Card title="Register your business" icon="id-card" href="../registration/index">
    What carriers require and how to submit it through Surge when you're ready for production.
  </Card>
  <Card title="Pick an SDK" icon="cubes" href="../sdks/index">
    Python, TypeScript, Ruby, and Elixir, each with pagination, retries, and webhook verification.
  </Card>
</CardGroup>
