Preview: SendMock has no stable release yet. These docs follow develop.

API reference

System

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

Try it in Demo mode

GET/api/v1/info

Version, listen addresses and enabled features.

CLI
sendmock status
MCP tool
sendmock_status
In the app
Settings > About

Answer

200 AppInfo

Try it in Demo mode

GET/api/v1/stats

Counts and rates shown on the Overview.

CLI
sendmock stats
MCP tool
sendmock_stats
In the app
Overview

Answer

200 AppStats

Try it in Demo mode

GET/api/v1/updates

Whether a newer release exists for this channel, with its notes and upgrade command.

CLI
sendmock update check
MCP tool
sendmock_update_check
In the app
Settings > About > Check GitHub Releases for updates

Answer

200 UpdateCheckResult

Errors: 409, 502, as { error: { code, message } }

Try it in Demo mode

PATCH/api/v1/settings

Change settings; send only the changed keys.

CLI
sendmock settings set
MCP tool
sendmock_settings_update
In the app
Settings > Save changes

Request body (application/json)

AppSettingsUpdate : Body of PATCH /api/v1/settings: only the changed keys.

FieldTypeDescription
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

Answer

200 AppSettings

Errors: 400, as { error: { code, message } }

Try it in Demo mode

POST/api/v1/reset

Delete all traffic and restore the seed configuration.

CLI
sendmock reset --yes
MCP tool
sendmock_reset
In the app
Settings > General > Reset to seed

Answer

204 No content

Try it in Demo mode

POST/api/v1/samples/{kind}

Create a sample email, SMS, verification or HTTP request through the normal path.

CLI
sendmock sample <kind>
MCP tool
sendmock_sample_send
In the app
Empty screens > Send a sample email, SMS, verification or request

Request body (application/json)

SampleOptions : Optional body of POST /api/v1/samples/email (`sendmock email send-test`).

FieldTypeDescription
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.

Answer

201 CreatedSample

Errors: 404, as { error: { code, message } }

Try it in Demo mode