---
title: "Send a test email"
method: POST
path: "/v1/projectId/{projectId}/test-email/{id}"
tags: ["Test Email"]
---

# Send a test email

`POST /v1/projectId/{projectId}/test-email/{id}`

## Request

- Base URL: `https://api.bluefox.email`
- URL: `https://api.bluefox.email/v1/projectId/{projectId}/test-email/{id}`
- Auth: HTTP bearer

Sends a campaign, triggered, or transactional email to a single recipient (by email or by picking a contact from a private subscriber list) without affecting real send stats or contact state.

Sending fails with a 405 if the account is out of email credit ("Insufficient credits available") - there is no public endpoint to check remaining balance ahead of time, only in the app. It also fails with a 405 if a sandbox project's daily send cap is exceeded, or if bounce/complaint rates have triggered automatic restriction (see Project.status and GET .../sandbox/deliverability).

## Path parameters

- `projectId` string, required
- `id` string, required

## Request body

- object
  - `type` 'campaign' | 'triggered' | 'transactional', required
  - `email` string: Required unless subscriberListId is given.
  - `subscriberListId` string: A private subscriber list to send to (picks a subscriber from it). Required unless email is given.
  - `data` unknown

## Response `200`

OK, queued for sending

- object
  - `status` integer
  - `result` object
    - `success` boolean

## Other responses

- `400`: Invalid request body or query - every violation found (missing/invalid/unexpected fields) is reported in one response, semicolon-separated, not just the first one hit.
- `403`: Missing or invalid API key
- `405`: The operation is blocked by a business rule (e.g. the resource is still in use)

---

[API](https://skmtc.dev/bluefox/apis/bluefox-email-public-api.md) · [All operations](https://skmtc.dev/bluefox/apis/bluefox-email-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bluefox/apis/bluefox-email-public-api/revisions/fa1a0a835c7f?raw)
