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

# Quick Start: Send Your First Message with Zexa API

> Learn how to create a Zexa account, obtain your API key, and send your first message via the REST API or the dashboard in under 5 minutes.

This guide walks you through everything you need to go from zero to your first sent message. By the end you'll have a verified Zexa account, a topped-up credit balance, an API key, and a working example that sends a real SMS. The whole process takes less than five minutes.

<Steps>
  <Step title="Create your account">
    Go to [https://app.zexa.ao/signup](https://app.zexa.ao/signup) and fill in the registration form.

    You will need to provide:

    * **Company NIF** (Número de Identificação Fiscal) if you are registering a business account, **or** your **Bilhete de Identidade (BI)** number for a personal account
    * A valid business or personal **email address**
    * A **phone number** that can receive SMS verification codes
    * A strong **password**

    After you submit the form, Zexa sends a verification email. Click the confirmation link to activate your account before proceeding.
  </Step>

  <Step title="Add credits">
    Zexa uses a credit-based billing model — you pay in advance and credits are deducted each time a message is sent.

    To top up your balance:

    1. Log in to the dashboard at [https://app.zexa.ao](https://app.zexa.ao).
    2. Open the **Billing** section from the left navigation menu.
    3. Click **Top Up Balance**, choose an amount, and complete the payment.

    Your credits are available immediately after the transaction is confirmed.
  </Step>

  <Step title="Get your API key">
    Your API key authenticates every request you make to the Zexa REST API.

    1. In the dashboard, go to **Settings → API Keys**.
    2. Click **Generate New Key**.
    3. Give the key a descriptive name (for example, `production-backend`).
    4. Copy the key and store it somewhere safe — Zexa only shows the full key once.

    Use this key in the `Authorization` header of every API request:

    ```http theme={null}
    Authorization: Bearer YOUR_API_KEY
    ```

    <Warning>
      Never expose your API key in client-side code, public repositories, or logs. If a key is compromised, revoke it immediately from **Settings → API Keys** and generate a new one.
    </Warning>
  </Step>

  <Step title="Send your first message">
    With your account active, credits loaded, and API key in hand, you're ready to send a message. Use the endpoint below to send an SMS.

    **Endpoint:** `POST https://api.zexa.ao/v1/messages`

    <Tip>
      Always use **E.164 format** for phone numbers — a `+` sign followed by the country code and subscriber number, with no spaces or dashes. For Angolan numbers this looks like `+244912345678`.
    </Tip>

    <Note>
      The `from` field must be a **registered and approved Sender ID**. If you haven't registered one yet, see [Sender ID Registration](/messaging/sender-ids) before sending SMS or WhatsApp messages.
    </Note>

    **Request body:**

    ```json theme={null}
    {
      "channel": "sms",
      "to": "+244912345678",
      "from": "ZEXA",
      "body": "Hello from Zexa!"
    }
    ```

    **Example response:**

    ```json theme={null}
    {
      "id": "msg_abc123",
      "status": "queued",
      "channel": "sms",
      "to": "+244912345678",
      "created_at": "2026-06-24T10:00:00Z"
    }
    ```

    A `status` of `queued` means Zexa has accepted the message and is dispatching it to the carrier. The status updates to `delivered` or `failed` within seconds to minutes depending on the channel.

    <CodeGroup>
      ```bash curl theme={null}
      curl --request POST \
        --url https://api.zexa.ao/v1/messages \
        --header 'Authorization: Bearer YOUR_API_KEY' \
        --header 'Content-Type: application/json' \
        --data '{
          "channel": "sms",
          "to": "+244912345678",
          "from": "ZEXA",
          "body": "Hello from Zexa!"
        }'
      ```

      ```python Python theme={null}
      import requests

      url = "https://api.zexa.ao/v1/messages"

      headers = {
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json",
      }

      payload = {
          "channel": "sms",
          "to": "+244912345678",
          "from": "ZEXA",
          "body": "Hello from Zexa!",
      }

      response = requests.post(url, json=payload, headers=headers)
      print(response.json())
      ```
    </CodeGroup>
  </Step>

  <Step title="Check delivery status">
    After sending a message you can track its delivery status in two ways:

    **Dashboard:** Open the **Messages** section in [https://app.zexa.ao](https://app.zexa.ao). Every outbound message appears here with its current status (`queued`, `sent`, `delivered`, or `failed`), the channel used, and a timestamp.

    **Webhooks:** For real-time updates in your own system, configure a webhook URL in **Settings → Webhooks**. Zexa posts a status-update event to your endpoint each time a message status changes, so you can react instantly — for example, to retry a failed delivery or trigger a follow-up workflow.
  </Step>
</Steps>

## What's next?

Now that you've sent your first message, explore the rest of the platform:

<CardGroup cols={2}>
  <Card title="Account Setup" icon="gear" href="/account-setup">
    Enable 2FA, verify your identity, and invite your team members.
  </Card>

  <Card title="Sender ID Registration" icon="id-card" href="/messaging/sender-ids">
    Register a custom Sender ID to send SMS and WhatsApp messages under your brand name.
  </Card>

  <Card title="Campaigns" icon="bullhorn" href="/messaging/campaigns">
    Send broadcast messages to segmented contact lists with scheduling and throttling.
  </Card>

  <Card title="API Reference" icon="code" href="/api/overview">
    Explore the full REST API — all endpoints, parameters, and response schemas.
  </Card>
</CardGroup>
