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

# Sending Email

> Send transactional email with Dugble and understand the core request fields.

Dugble lets you send transactional email immediately or schedule it for later delivery.

## Basic request

Send email with `POST /emails` and include an idempotency key so retries do not create duplicate messages.

```bash theme={null}
curl -X POST https://api.dugble.com/emails \
  -H "Authorization: Bearer $DUGBLE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: welcome-user-42" \
  -d '{
    "from": "Acme <onboarding@dugble.me>",
    "to": "ada@example.com",
    "subject": "Welcome to Acme",
    "html": "<h1>Welcome!</h1><p>Your account is ready.</p>"
  }'
```

A successful send request returns `202 Accepted`. This means Dugble accepted the message for asynchronous delivery; it does not mean the recipient's mail server has delivered it.

## Message content

Every email needs a `from` sender, at least one `to` recipient, and a subject. Include at least one of `html` or `text` for the body.

You can also provide `cc`, `bcc`, `reply_to`, custom headers, attachments, tags, metadata, and a future `scheduled_at` value.

## Sender address

The `from` value is required and can be an email address or a display name with an email address, such as:

```text theme={null}
Acme <onboarding@dugble.me>
```

Use a sender address on a domain that has been configured and verified for sending.

## Multiple recipients

The `to`, `cc`, `bcc`, and `reply_to` fields accept a single address or a list of addresses. A message can include up to 50 recipients across `to`, `cc`, and `bcc`.

## Schedule delivery

Set `scheduled_at` when the message should be delivered later instead of immediately. See [Schedule Email](/docs/emails/schedule-email) for scheduling, rescheduling, and cancellation workflows.

## Send many independent emails

For up to 50 independent messages in one request, use the batch endpoint. Batch requests are accepted atomically and do not support attachments. See [Batch Sending](/docs/emails/batch-sending).

## Next steps

<CardGroup cols={2}>
  <Card title="Attachments" href="/docs/emails/attachments">
    Add files or inline assets to an email.
  </Card>

  <Card title="Delivery Status" href="/docs/emails/delivery-status">
    Understand message states and delivery outcomes.
  </Card>
</CardGroup>
