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

# Test mode

> Send e-mail with a test key: the same calls and answers as a live key, to the simulator addresses only, with the whole flow of statuses and webhooks, nothing sent and nothing charged.

A test key (`tk_test_`) with Email **Send** (or full access) calls the e-mail endpoints in test mode. The calls, the answers, the statuses, the console's log and the webhooks behave as with a live key, but nothing reaches anyone and nothing is charged. Test messages show in the log under **Test**.

Create a test key on **Application settings → API keys** (type Test, Email **Send**), or on **Email → Settings**.

## The simulator addresses

Send to these addresses; each plays one outcome a few seconds after the send. Add `+anything` before the `@` to tell your tests apart (`delivered+signup@sim.tawked.com`).

| Address | What happens | Webhooks |
| - | - | - |
| `delivered@sim.tawked.com` | Delivered | `email.sent`, `email.delivered` |
| `bounced@sim.tawked.com` | A permanent bounce: `550 5.1.1 Simulated: the mailbox does not exist` | `email.sent`, `email.bounced` |
| `complained@sim.tawked.com` | Delivered, then marked as spam | `email.sent`, `email.delivered`, `email.complained` |
| `suppressed@sim.tawked.com` | Refused as if on the suppression list: a one-recipient send in the original shape answers `422 recipient_suppressed` | `email.suppressed` |
| `delayed@sim.tawked.com` | Delayed by the receiving server, then delivered | `email.sent`, `email.delivery_delayed`, `email.delivered` |
| `opened@sim.tawked.com` | Delivered, then opened | `email.sent`, `email.delivered`, `email.opened` |
| `clicked@sim.tawked.com` | Delivered, opened, then its first link clicked | `email.sent`, `email.delivered`, `email.opened`, `email.clicked` |

Any other address answers `422 test_mode_recipient`. The from address is on any domain of the application, verified or not, or on `sim.tawked.com`; with none, the verified domain's default, else `onboarding@sim.tawked.com`.

```bash theme={"dark"}
curl -X POST https://tawked.com/v1/email/messages \
  -H "Authorization: Bearer $TAWKED_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "orders@acme.sa",
    "to": "delivered@sim.tawked.com",
    "subject": "طلبك رقم 1042 قيد التجهيز",
    "text": "استلمنا طلبك رقم 1042."
  }'
```

## What is the same, and what is not

* **The same:** early access and the application's Email product, the per-second rate, the sizes, attachments, headers, tags, scheduling, [templates](https://docs.tawked.com/email/templates.md) (and `"version": "draft"`, a test key's alone), idempotency, the answers' shapes. The extended shape says `"mode": "test"`.
* **Not applied:** the daily limit, a pause, the price and the suppression list (`suppressed@` plays it).
* **Its own limit:** 1,000 e-mails a day for an application (Tawked's limit), then `429 test_mode_limit_reached` until midnight, Riyadh time.
* **Apart:** a test key reads only test messages, a live key only live ones.
* **Webhooks:** test events reach only the endpoints whose **Receives test events** switch is on (off by default), with `"mode": "test"` in the body, and never count toward an endpoint's failures. See [Test mode events](https://docs.tawked.com/webhooks.md#test-mode-events).
* **SMTP:** the [relay](https://docs.tawked.com/email/smtp.md) takes a test key as the password too.
* **Management:** domains, suppressions, metrics, templates and webhooks are real objects: a test key answers `403 live_key_required` there.
* **Received email:** received mail is real mail, read with a live key; a test key answers `403 live_key_required` on `/v1/email/received` and `/v1/email/inbound-addresses`. It simulates one instead with `POST /v1/email/received/test`: one `email.received` webhook in test mode, nothing stored. See [Testing with a test key](https://docs.tawked.com/email/receiving.md#testing-with-a-test-key). A receiver tells it from a real e-mail only by the envelope's `"mode": "test"` (the SDKs' `mode`, `isTestMode()` or `is_test_mode`).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.