Skip to content
Docs menu

Sandbox

Every Sandbox endpoint.

GET/v1/sandbox/messages

List captured test sends

Nothing listed here was ever delivered: each row is what a TEST-mode send captured on the sandbox mail server. Reached with a test-mode API key (`zst_<prefix>_<secret>`) or from a dashboard session.

Auth: apiKey or jwt

Parameters

NameInRequiredDescription
pagequeryoptional
limitqueryoptional

Responses

200 : Default Response

FieldTypeRequiredDescription
dataarrayrequired
data[].created_atstringrequired · nullable
data[].fromstringrequired
data[].idstringrequired
data[].message_idstringrequired
data[].subjectstringrequired · nullable
data[].tagstringrequired · nullable
data[].toarrayrequired
data[].to[]stringoptional
pagination.limitnumberrequired
pagination.pagenumberrequired
pagination.pagesnumberrequired
pagination.totalnumberrequired
curl
curl https://api.zsender.io/v1/sandbox/messages \
  -H "Authorization: Bearer $ZSENDER_API_KEY"
GET/v1/sandbox/messages/{id}

Get one captured test message

Reached with a test-mode API key (`zst_<prefix>_<secret>`) or from a dashboard session. `inspect` is live-fetched from the sandbox mail server (rendered/text/raw/headers/inspection views; `null` if the mail server is still holding the message). `recipient` selects which of a captured message's per-recipient messages to inspect; omitted means the first. `audit` is the link/alt-text audit computed at send time over what was actually submitted, `null` for a row sent before that column existed.

Auth: apiKey or jwt

Parameters

NameInRequiredDescription
recipientqueryoptional
idpathrequired

Responses

200 : Default Response

FieldTypeRequiredDescription
auditobjectrequired · nullable
audit.findingsarrayrequired
audit.findings[].detailstringrequired
audit.findings[].kindstringrequired
audit.findings_truncatedbooleanrequired
audit.linksarrayrequired
audit.links[].textstringrequired
audit.links[].urlstringrequired
audit.links_truncatedbooleanrequired
audit.truncatedbooleanrequired
created_atstringrequired · nullable
fromstringrequired
idstringrequired
inspectobjectrequired · nullable
inspect.headersobjectrequired
inspect.inspectionobjectrequired
inspect.raw_messagestringrequired · nullable
inspect.recipientstringrequired
inspect.spam_checksobjectrequired
inspect.spam_statusstringrequired · nullable
message_idstringrequired
subjectstringrequired · nullable
tagstringrequired · nullable
toarrayrequired
to[]stringoptional
curl
curl https://api.zsender.io/v1/sandbox/messages/{id} \
  -H "Authorization: Bearer $ZSENDER_API_KEY"
POST/v1/sandbox/messages/{id}/simulate

Fire a synthetic webhook event for a captured message

Reached with a test-mode API key (`zst_<prefix>_<secret>`) or from a dashboard session. A real, signed POST to a stored endpoint or an ad-hoc URL. Its own rate bucket of 20/min per tenant, separate from and much tighter than the normal send rate limit, answers 429 once exhausted. Body: `event` (string, required, one of the public webhook event names, e.g. `email.delivered`) and exactly one of `endpoint_id` (a stored webhook endpoint's id, signed with that endpoint's real `whsec_` secret) or `url` (an ad-hoc target, signed with an ephemeral secret). One of the two is required.

Auth: apiKey or jwt

Parameters

NameInRequiredDescription
idpathrequired

Responses

200 : Default Response

FieldTypeRequiredDescription
errorstringrequired · nullable
okbooleanrequired
response_bodystringrequired · nullable
signed_with_real_secretbooleanrequired · nullable
status_codenumberrequired · nullable
curl
curl https://api.zsender.io/v1/sandbox/messages/{id}/simulate \
  -X POST \
  -H "Authorization: Bearer $ZSENDER_API_KEY"