GET/api/v1/health
Liveness check; answers while the server runs.
- CLI
sendmock health- MCP tool
sendmock_status- In the app
- Sidebar > live connection dot
Answer
200 HealthStatus
/api/v1/healthLiveness check; answers while the server runs.
sendmock healthsendmock_status200 HealthStatus
/api/v1/infoVersion, listen addresses and enabled features.
sendmock statussendmock_status200 AppInfo
/api/v1/statsCounts and rates shown on the Overview.
sendmock statssendmock_stats200 AppStats
/api/v1/updatesWhether a newer release exists for this channel, with its notes and upgrade command.
sendmock update checksendmock_update_check200 UpdateCheckResult
Errors: 409, 502, as { error: { code, message } }
/api/v1/settingsEvery runtime setting.
sendmock settings getsendmock_settings_get200 AppSettings
/api/v1/settingsChange settings; send only the changed keys.
sendmock settings setsendmock_settings_updateAppSettingsUpdate : Body of PATCH /api/v1/settings: only the changed keys.
| Field | Type | Description |
|---|---|---|
| max_emails? | number | The most emails kept; the oldest are deleted past it. 0 keeps every email (no limit).Example: 1000 |
| max_sms? | number | The most SMS kept (with verifications and push notifications); the oldest are deleted past it. 0 keeps every SMS (no limit).Example: 1000 |
| max_age_days? | number | null | Null keeps traffic until the count limits prune it.Example: 7 |
| is_plus_address_tagging_enabled? | boolean | Tags [email protected] with invoice.Example: true |
| email_outcome_profile? | EmailOutcomeProfile | off sends no delivery events, auto-delivered marks every email delivered after a short delay, realistic adds bounces and complaints at the rates below.One of: off, auto-delivered, realisticExample: off |
| email_outcome_bounce_rate_percent? | number | Used by the realistic outcome profile.Example: 5 |
| email_outcome_complaint_rate_percent? | number | Complaints in the realistic outcome profile, 0 to 100.Example: 1 |
| relay_smtp_url? | string | null | Relay for release and auto-forward; the password is always masked.Example: smtp://user:[email protected]:587 |
| relay_recipient_allowlist? | string[] | Glob patterns; release stays off while this is empty. |
| spamassassin_address? | string | null | host:port of a SpamAssassin spamd; null turns the spam check off.Example: 127.0.0.1:783 |
| sms_simulation_profile? | SmsSimulationProfile | instant delivers at once, realistic goes queued, sent, then delivered over a few seconds, manual stays sent until you pick a status.One of: instant, realistic, manualExample: instant |
| sms_failure_rate_percent? | number | The share of SMS that fail at random, 0 to 100.Example: 0 |
| is_strict_twilio_test_mode? | boolean | Rejects numbers that are not Twilio test numbers with error 21606, like real test credentials.Example: false |
| is_magic_numbers_enabled? | boolean | Off: the built-in Twilio and SendMock numbers behave like any number.Example: true |
| is_magic_addresses_enabled? | boolean | Off: the built-in magic addresses behave like any address.Example: true |
| fire_opened_events_on_view? | boolean | Fires email.opened and sms.opened when you open a message in the UI.Example: true |
| opened_event_mode? | "first_open" | "every_open" | first_open fires on the first view only, every_open on each view.One of: first_open, every_openExample: first_open |
| chaos_smtp_reject_next_count? | number | Rejects the next N SMTP messages, to test your app's retries.Example: 0 |
| chaos_smtp_reject_code? | ChaosSmtpRejectCode | The SMTP code used for rejected messages: 421, 450, 550 or 552.One of: 421, 450, 550, 552Example: 450 |
| chaos_smtp_reject_recipient_pattern? | string | null | Glob; matching recipients get 550 No such user.Example: *@unknown.test |
| chaos_smtp_command_latency_ms? | number | Delay added to every SMTP command, in milliseconds.Example: 0 |
| is_chaos_smtp_drop_during_data_enabled? | boolean | Drops the connection during DATA, to test half-sent messages.Example: false |
| otp_patterns? | string[] | Ordered; the first capture group of the first match is the code. |
| update_check_mode? | UpdateCheckMode | When SendMock looks for a newer release: off never calls out, manual only on request, daily on start and once a day.One of: off, manual, dailyExample: off |
| inbound_email_domains? | string[] | Mail for these domains is incoming; offered as Forward suggestions. |
| payment_merchant_name? | string | Shown on checkout pages and as {merchant} in step labels.Example: Demo Shop |
| payment_default_currency? | string | For hosted checkouts created without a currency.Example: USD |
| payment_outcome_profile? | PaymentOutcomeProfile | What a new hosted checkout does: interactive waits for the page, auto_success and auto_decline settle at once, random succeeds at the rate below.One of: interactive, auto_success, auto_decline, randomExample: interactive |
| payment_random_success_rate_percent? | number | Used by the random outcome profile.Example: 80 |
| verify_default_code_length? | number | Digits in each code of a Verify service made without its own code length, 4 to 10.Example: 6 |
| verify_default_ttl_seconds? | number | How long a code stays valid, in seconds, for a Verify service made without its own TTL.Example: 600 |
| verify_fixed_code? | string | null | Sent by every Verify service without its own fixed code; null for random codes.Example: 123456 |
200 AppSettings
Errors: 400, as { error: { code, message } }
/api/v1/resetDelete all traffic and restore the seed configuration.
sendmock reset --yessendmock_reset204 No content
/api/v1/samples/{kind}Create a sample email, SMS, verification or HTTP request through the normal path.
sendmock sample <kind>sendmock_sample_sendSampleOptions : Optional body of POST /api/v1/samples/email (`sendmock email send-test`).
| Field | Type | Description |
|---|---|---|
| to? | string | The recipient of the sample email.Example: [email protected] |
| subject? | string | The subject of the sample email.Example: Hello from SendMock |
| html? | string | The HTML body of the sample email.Example: <p>It works!</p> |
| webhook_endpoint_ids? | Ulid[] | Send this action's webhooks to exactly these endpoints (IDs from GET /api/v1/webhooks/endpoints) instead of the ones the rules pick; an empty list sends none. Leave it out to let the rules decide. |
| webhook_requests? | WebhookRequestEdit[] | Payloads edited for this action, by endpoint: each body is sent as written instead of the rendered one and signed over those bytes. Leave it out to send the rendered payloads. |
201 CreatedSample
Errors: 404, as { error: { code, message } }