API v1 Stable

Dry run contact send

Previews a template send to selected contacts or a group.

POST Stable

Dry run contact send

/v1/contacts/send/dry-run

Evaluates template data and existing send-permission rules before enqueueing.

Request

Name Type Required Description Example
projectId string Yes Project id.
environmentId string Yes Environment id.
templateId string Yes Template id.
templateData object Yes Template data.
contactIds array No Selected contact ids.
groupSlug string No Group slug.

curl

curl -X POST 'https://api.emailsdone.dev/v1/contacts/send/dry-run' \
  -H 'Authorization: Bearer ed_...' \
  -H 'Content-Type: application/json' \
  -d '{}'

Response

Name Type Required Description Example
ok boolean Yes True when dry run completed.
eligible number Yes Eligible recipients.
skipped object Yes Skip counts by reason.
{}

Errors

StatusCodeMessage
400 invalid_request Request body failed validation.
401 missing_api_key Authorization bearer token is missing.
401 invalid_api_key API key is invalid.
403 api_key_revoked API key has been revoked.
404 contact_not_found Contact was not found.
405 method_not_allowed Only POST is allowed.
500 internal Unexpected server error.

Notes

  • Contacts are tenant-level recipients for app email history, not CRM records.
  • Existing environment API keys can access tenant contacts endpoints.