Send Test Email
Send one real email through a campaign's sending account.
https://api.foxreach.io/ api/ v1/ campaigns/{campaign_id}/ test-emailRequires an API key with the write scope.
This sends a real email from one of the campaign's sending accounts to the address you give. It is not a dry run: use Preview Campaign Email to see copy without sending.
The email counts against the account's daily limit and the workspace's monthly limit, is logged as a campaign email, and updates the campaign's sent counters. {spin|syntax} and {{merge}} tags are filled in. The same checks run as for a message sent from the app: the address is refused when it belongs to a lead that has bounced, unsubscribed or failed verification, or when it is on the block list. A List-Unsubscribe header is added when the campaign needs one.
A delivery failure at the mail server is not an HTTP error: you get 200 with success: false and the error.
Path Parameters#
campaign_idstringpathrequiredRequest Body#
toEmailstringbodyrequiredaccountIdstringbodyrequiredsubjectstringbodyrequiredbodystringbodyrequiredisHtmlbooleanbodydefault falsepreheaderstringbodyleadIdstringbodyResponse#
dataobjectShow Result
successbooleanmessageIdstring | nullerrorstring | nullErrors#
| Status | Description |
|---|---|
401 | Missing, invalid, revoked or expired API key |
403 | API key does not have the required scope: write |
400 | The account is not on this campaign, not active or not connected, or the address bounced, unsubscribed, failed verification or is blocked |
404 | Campaign or sending account not found in this workspace |
429 | The account's daily limit or the workspace's monthly send limit is reached, or the expensive rate limit is |
503 | The block list could not be checked; try again |
Rate Limit#
- 100 requests per minute, shared by every
expensivecall in your workspace. Fixed 60-second window. - Every response includes
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset(unix epoch seconds) andX-RateLimit-Bucket(expensive). - A
429response includes aRetry-Afterheader (seconds until the bucket resets).
For client-side patterns (Retry-After, exponential backoff, monitoring X-RateLimit-Remaining), see Rate Limiting.