The email API sends transactional emails from your workspace. Emails are sent synchronously and count toward the workspace's email usage metrics.
Info: This endpoint sends email through the system's configured mail driver (Resend, SMTP, SES, Mailgun, Postmark, or other). A
logmailer records the message without delivering it. Workspace notification toggles do not control this endpoint.
To receive form answers by email, configure the form’s Submit action. Form email does not require an API key or a separate call to this endpoint.
Send an email
POST /api/v1/{workspace}/mail
Sends a transactional email from the workspace.
Authentication
Requires an API key with the mail:send ability. See API Authentication.
Rate limiting
This endpoint is rate-limited to 10 requests per minute per API key.
Request body
| Field | Required | Type | Max | Description |
|---|---|---|---|---|
subject |
Yes | string | 255 chars | Email subject line |
html |
Yes | string | 200,000 chars | HTML body of the email |
to |
No | string (email) | 255 chars | Recipient email address. Defaults to the workspace's email if omitted. |
from |
No | string (email) | 255 chars | Reply-to address. Must pass DNS verification. The sender remains noreply-{workspace-name}@viresso.com. |
attachments |
No | array | 5 items | File attachments (see below) |
headers |
No | object of strings | 998 chars per header | Custom X-* headers keyed by header name |
Attachments
Each attachment in the attachments array requires:
| Field | Required | Type | Max | Description |
|---|---|---|---|---|
name |
Yes | string | 255 chars | Attachment filename |
mime_type |
Yes | string | 255 chars | MIME type (e.g. application/pdf) |
content |
Yes | string (base64) | 10 MB decoded | Base64-encoded file content |
From address
If no from address is provided, the email is sent from:
noreply-{workspace-name}@viresso.com
The optional from value sets the message's reply-to address and must pass DNS verification (valid MX entries for the domain). The sender address always remains the workspace-specific noreply-* address.
Warning: Some email providers require the from address to match a verified domain. If DNS verification fails, the request returns a validation error.
Example request
curl -X POST "https://app.example.com/api/v1/acme/mail" \
-H "Authorization: Bearer $VIRESSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": "Your order confirmation",
"html": "<h1>Thank you</h1><p>Your order has been confirmed.</p>",
"to": "customer@example.com",
"from": "noreply-acme@viresso.com"
}'
Example response
Returns 204 No Content after the mail provider accepts the message.
Error responses
| Status | Meaning |
|---|---|
| 403 | Invalid API key, origin mismatch, or workspace suspended |
| 422 | Validation failed — check the errors object |
| 429 | Rate limit exceeded |
Common validation errors
htmlexceeds 200,000 characters.attachmentscontains more than 5 items.- An attachment's decoded
contentexceeds 10 MB. fromortofails DNS verification (not a valid mailbox domain).- A custom header is not an
X-*header or contains line breaks. subjectexceeds 255 characters.
Limitations
- Attachments are limited to 5 per email, each up to 10 MB (base64 decoded).
- The HTML body is limited to 200,000 characters.
- CC and BCC are not supported.
- Emails are sent synchronously — the API waits for the configured provider to accept the message, not for final recipient delivery.
- Email delivery depends on the platform's mail configuration.
- Rate limit: 10 requests per minute.
Related pages
- Email Settings — How Viresso sends email and notification toggles.
- API Authentication — API keys and hosted authentication.
- API Overview — Base URL, headers, and error handling.