Test mode
How to test Scribase Mail without sending real email. Test API keys (sk_test_), sandbox recipient addresses that simulate delivery, bounce, delay and complaint, and what is metered.
Test mode lets you run your whole integration (send, webhooks, suppression handling) without any message leaving our system.
Test API keys
Test keys start with sk_test_. Create one in the dashboard (API keys, mode "test") or with POST /api-keys and { "name": "ci", "mode": "test" }. Every request made with a test key is accepted, validated and logged exactly like production, and your webhooks fire, but nothing is handed to a mail server:
- No domain is required: send from any address on
test.scribase.dev. - Sends are stored with
"test": true(visible inGET /emailsandGET /emails/{id}) and go through a simulated transport. - Test traffic is not metered against your limits; it only bumps the
emails_testcounter inGET /usage. - Test sends never touch the suppression lists, so a simulated bounce cannot block a real customer later.
- Webhook payloads carry
"test": trueat the top level and insidedata. - Test keys will work on the SMTP submission port too (username
scribase, password thesk_test_key) once SMTP submission is live. available soon
Sandbox recipients
Recipients on test.scribase.dev (alias: sandbox.scribase.com) script the outcome so you can exercise every webhook branch:
| Recipient | Result within 5 seconds |
|---|---|
delivered@test.scribase.dev | email.sent then email.delivered |
bounced@test.scribase.dev | email.bounced (550 5.1.1); last_event becomes bounced |
soft-bounce@test.scribase.dev (alias delayed@) | email.delivery_delayed (451), then email.delivered after the retry |
complained@test.scribase.dev | email.delivered, then email.complained |
suppressed@test.scribase.dev | email.suppressed; nothing is sent |
Any other recipient with a test key behaves like delivered@.
Rehearsing the bounce path on a real message
With a live full-access key you can also report POST /emails/{id}/events with { "type": "bounced" } (or complained, delivered, delayed) on a message you sent to yourself. That triggers the same email.bounced webhook and suppression as a real DSN, which is how the inbound bounce pipeline reports asynchronous bounces internally.
Local development
Use an sk_test_ key against https://mail-api.scribase.com from your laptop: nothing is delivered, nothing is metered, and the dashboard shows every simulated send with its events.