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

# Introduction

> Send SMS, WhatsApp, Telegram, Email, and Voice messages with one unified API

# Welcome to Zavu

Zavu is a unified messaging API that lets you send SMS, WhatsApp, Telegram, Email, and Voice messages with a single integration. No need to manage multiple providers or complex channel-specific logic.

## Why Zavu?

<CardGroup cols={2}>
  <Card title="One Single API. Every Message." icon="messages">
    Single integration for SMS, WhatsApp, Telegram, Email, and Voice. Same payload, automatic channel handling.
  </Card>

  <Card title="Smart Routing" icon="route">
    ML-powered channel selection reduces messaging costs up to 80%.
  </Card>

  <Card title="Automatic Fallback" icon="arrows-rotate">
    Message fails on WhatsApp? We automatically retry via SMS.
  </Card>

  <Card title="Real-time Webhooks" icon="webhook">
    Delivery status updates, inbound messages, and more.
  </Card>
</CardGroup>

## Send a Message

<CodeGroup>
  ```typescript TypeScript theme={null}
  import Zavudev from '@zavudev/sdk';

  const zavu = new Zavudev({
    apiKey: process.env['ZAVUDEV_API_KEY'], // This is the default and can be omitted
  });

  await zavu.messages.send({
    to: "+14155551234",
    text: "Your order #1234 has shipped!"
  });
  ```

  ```python Python theme={null}
  import os
  from zavudev import Zavudev

  zavu = Zavudev(
      api_key=os.environ.get("ZAVUDEV_API_KEY"),  # This is the default and can be omitted
  )

  result = zavu.messages.send(
      to="+14155551234",
      text="Your order #1234 has shipped!"
  )
  print(f"Message ID: {result.message.id}")
  ```

  ```ruby Ruby theme={null}
  require "zavudev"

  client = Zavudev::Client.new(api_key: ENV["ZAVUDEV_API_KEY"])

  result = client.messages.send(
    to: "+14155551234",
    text: "Your order #1234 has shipped!"
  )
  puts result.message.id
  ```

  ```go Go theme={null}
  package main

  import (
  	"context"
  	"fmt"
  	"os"

  	"github.com/zavudev/sdk-go"
  	"github.com/zavudev/sdk-go/option"
  )

  func main() {
  	client := zavudev.NewClient(option.WithAPIKey(os.Getenv("ZAVUDEV_API_KEY")))

  	result, _ := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
  		To:   zavudev.String("+14155551234"),
  		Text: zavudev.String("Your order #1234 has shipped!"),
  	})
  	fmt.Println("Message ID:", result.Message.ID)
  }
  ```

  ```php PHP theme={null}
  <?php
  $client = new Zavudev\Client(apiKey: getenv('ZAVUDEV_API_KEY'));

  $result = $client->messages->send([
      'to' => '+14155551234',
      'text' => 'Your order #1234 has shipped!',
  ]);
  echo $result->message->id;
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.zavu.dev/v1/messages \
    -H "Authorization: Bearer zv_live_xxx" \
    -H "Content-Type: application/json" \
    -d '{
      "to": "+14155551234",
      "text": "Your order #1234 has shipped!"
    }'
  ```
</CodeGroup>

That's it. Zavu automatically selects the best channel based on cost, deliverability, and recipient preferences.

## How It Works

1. **You send a message** - Just specify the recipient and content
2. **Zavu picks the channel** - Our ML model selects the optimal channel (SMS, WhatsApp, Telegram, Email, or Voice)
3. **Message is delivered** - We handle retries and fallbacks automatically
4. **You get notified** - Webhooks inform you of delivery status

## Channels

| Channel      | Best For                                                     |
| ------------ | ------------------------------------------------------------ |
| **SMS**      | Universal reach, time-sensitive alerts, no internet required |
| **WhatsApp** | Rich media, high engagement, cost-effective in many regions  |
| **Telegram** | Bot messaging, tech-savvy audiences, large file sharing      |
| **Email**    | Transactional emails, long-form content, attachments         |
| **Voice**    | Text-to-speech calls, urgent alerts, phone verification      |

## Next Steps

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Send your first message in 5 minutes
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    Get your API keys
  </Card>

  <Card title="Sending Messages" icon="paper-plane" href="/guides/sending-messages/easy-way">
    Learn the different ways to send messages
  </Card>

  <Card title="API Reference" icon="code" href="/api-reference">
    Explore all endpoints
  </Card>
</CardGroup>
