Send email
POST /api/v2/emails
Parameters
Required header: Idempotency-Key (1–100 alphanumeric, underscore or hyphen characters).
| Name | Type | Contract |
|---|---|---|
| from | string · required | Bare sender email; active inbox or verified workspace domain |
| to | string · required | One recipient address |
| subject | string · required | Nonempty, at most 200 characters; no newlines |
| text | string · required | Nonempty plain text, at most 10,000 characters |
| html | string · optional | Up to 80,000 characters |
| tracking | object · optional | opens and clicks boolean flags, both default false; HTML only |
| from_name | string · optional | Display name up to 100 characters |
| reply_to | string · optional | Valid reply destination |
| in_reply_to | string · optional | RFC Message-ID including <angle brackets> |
Request
Set INBOXIT_API_KEY in your server environment. The CLI can also use an authenticated user session.
curl -X POST 'https://inboxit.wtf/api/v2/emails' \
-H "Authorization: Bearer $INBOXIT_API_KEY" \
-H "Content-Type: application/json" --data @request.json \
-H "Idempotency-Key: request-001"JSON body
Save this JSON as request.json for the request above. Replace example values with your own.
{
"from": "hello@mail.yourbrand.com",
"to": "recipient@example.com",
"subject": "Welcome",
"text": "Thanks for joining.",
"html": "<h1>Welcome</h1><p>Thanks for joining.</p>",
"tracking": {
"opens": true,
"clicks": true
}
}CLI equivalent
Use INBOXIT_TOKEN for a scoped key, or inboxit login for a user session.
inboxit emails send --data @request.json --idempotency-key request-001Response
HTTP 201. Example values are illustrative; excerpts are marked.
{
"id": "EMAIL_UUID",
"status": "pending",
"message_id": "<id@mail.yourbrand.com>"
}Behavior & errors
Idempotency-Key is required. Same key and payload returns the existing result; a changed payload returns 409. Account quotas, suppression, verified sender and account verification checks apply. 201 is queue acceptance, not delivery. Common errors: 400 invalid input, 401 unauthenticated, 403 insufficient permission, 404 missing/inaccessible resource, 409 conflict, 429 rate/usage limit, 503 service unavailable. See Errors & retries for recovery guidance.