> ## Documentation Index
> Fetch the complete documentation index at: https://docs.surge.app/llms.txt
> Use this file to discover all available pages before exploring further.

# What is Surge

> An introduction to Surge, the SMS and voice API for developers.

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. Other providers 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>
  ```python Python theme={null}
  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 theme={null}
  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 theme={null}
  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 theme={null}
  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 theme={null}
  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 organized" icon="sitemap" href="./how-surge-is-organized">
    The Project, 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>
