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

# Sandbox

> Understand the test environment and learn how to integrate safely, without sending real messages.

<Tip>
  Sandbox is Notifique's **flight simulator**: you practice the full integration without risking a real message or spending credits.
</Tip>

## What is sandbox?

It's Notifique's **test** environment. The API is the same (`https://api.notifique.dev/v1/...`); what changes is the key: use `sk_test_...` instead of `sk_live_...`.

Think of a flight simulator: same cockpit, same maneuvers, nobody actually takes off.

## What is it for?

With sandbox you can:

* **Integrate** your app without sending real SMS, email, or WhatsApp
* **Test** webhooks, templates, and flows before go-live
* **Simulate** delivery status (delivered, read, failed) in the Sandbox inbox
* **Validate** payloads and errors without debiting credits

Nothing in sandbox affects production data or sends.

## When to use?

| Situation                            | Use sandbox?          |
| ------------------------------------ | --------------------- |
| Developing or testing an integration | **Yes**               |
| Validating webhooks on your server   | **Yes**               |
| Sending a message to a real customer | No. Use `sk_live_...` |

## How to use

### 1. Create a test key

Open **Developer → API Keys**, create a **Sandbox** key, and copy `sk_test_...` immediately. Need help? See [API Keys](/guides/api-key/index).

### 2. Call the API as usual

Same URL, same endpoints. Only change the key in the header:

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

No extra environment header. The key defines everything.

### 3. Track in the Sandbox inbox

Open **Developer → Sandbox inbox**. There you can:

* **Review** each send payload
* **Release** scheduled messages with **Release now**
* **Simulate** status: delivered, read, click, failed (per channel)

### 4. Test webhooks

Events use the **same names** as production. The payload includes **`sandbox: true`** in `data` so you can filter on the same endpoint. More in [Webhooks](/guides/webhooks/index).

### 5. Go to production

When ready, swap `sk_test_...` for `sk_live_...` on the same paths. Like switching from the simulator to the real flight.

## What works and what doesn't

| Works in sandbox                      | Needs production (`sk_live_`)                                        |
| ------------------------------------- | -------------------------------------------------------------------- |
| Simulated SMS, email, push, and RCS   | Real delivery to phone or inbox                                      |
| Simulated WhatsApp and Telegram       | Real QR, number connection                                           |
| Webhooks with `sandbox: true`         | End-to-end real providers                                            |
| Test templates and payloads           | Verify email domain (DNS)                                            |
| Schedule and release in Sandbox inbox | Official Meta templates in production (WABA approval + Meta billing) |

### Official WhatsApp (Cloud API) in sandbox

With `sk_test_`, `POST /v1/whatsapp/messages` and `POST /v1/templates/send` **do not** call Graph or the Meta payment gate:

* No token ping → does **not** mark the real instance as `DISCONNECTED`
* No real `META_PAYMENT_METHOD_REQUIRED` / `META_TEMPLATE_REQUIRED`
* The payload shows up in the **Sandbox inbox** like other channels

Use production (`sk_live_`) to validate an approved template, the 24h window, and a card in WhatsApp Manager. Details: [Official Meta templates](/en/whatsapp-api/como-funciona/templates-oficiais-meta).

<Note>
  Operations that depend on a real provider (WhatsApp QR, email DNS) may return **403** or **501** in sandbox.
</Note>

## Limits

| Rule            | Detail                                                                               |
| --------------- | ------------------------------------------------------------------------------------ |
| **Daily limit** | Up to **50 messages/day (UTC)** per workspace. Above → **429** `SANDBOX_DAILY_LIMIT` |
| **Retention**   | Each Sandbox inbox item expires in **7 days**                                        |
| **Scheduling**  | Stays **SCHEDULED** until you click **Release now**                                  |
| **Billing**     | Sandbox **does not debit** credits or balance                                        |

## Sandbox vs production

|          | Sandbox                    | Production |
| -------- | -------------------------- | ---------- |
| Key      | `sk_test_`                 | `sk_live_` |
| Delivery | Simulated in Sandbox inbox | Real       |
| Credits  | Not consumed               | Consumed   |
| Webhook  | `sandbox: true` in payload | Real event |

***

## Next steps

* [Start here](/guides/introducao/comece-aqui): send your first test message
* [API Keys](/guides/api-key/index): create and use `sk_test_` and `sk_live_`
* [Webhooks](/guides/webhooks/index): receive simulated events on your server
