Skip to main content
The ReallyQuickEmails (RQE) v1 public API exposes Bearer-token-authenticated endpoints for external integrations. Base URL: https://api.reallyquickemails.com

Authentication

All endpoints require a Bearer token with a project key:
Three key prefixes are accepted: Keys are generated from the project’s admin panel. An invalid or missing key responds 401 Unauthorized. Requests with a body also require the Content-Type: application/json header.

Authentication error response

If the prefix is valid but does not correspond to any project:

POST /v1/send-email

Sends an individual email to up to 50 recipients.

Request Body

Open and click tracking is applied in the background (transactional senders skip it). This endpoint does not add an unsubscribe footer or List-Unsubscribe headers — those are added automatically in campaigns and in /v1/send-template-email; in /v1/send-batch you pass them via custom_headers.

Simple example

Example with multiple recipients + cc + attachment

Response 200 OK
email_id is the send’s activity ID — use it to correlate the events from your webhooks. It is null if the activity record could not be created.
Checked when processing the send in the background. If the recipient is suppressed (bounce, complaint, or unsubscribe), the email is not sent and the activity remains with status suppressed. This endpoint does not return a synchronous skipped response — /v1/send-template-email does check suppression before responding.

Error Codes

Need scheduled sending, dry_run, or templates on individual sends? See Advanced send API.

POST /v1/send-template-email

Sends an email with a pre-configured template and variable substitution (supports {{#each}} loops).

Request Body

*You must send template_id OR template_internal_id. If you send neither, html_body (together with recipient_email and sender_email) is required.
This endpoint automatically adds:
  • An unsubscribe footer if the HTML does not include the unsubscribe URL.
  • The List-Unsubscribe and List-Unsubscribe-Post headers (RFC 8058).
  • The view_in_browser_url and unsubscribe_url variables (if you don’t send them yourself).
Recipient replies go to the sender’s inbox — see Automatic Reply-To.

Example with template UUID

Example with template internal ID

Each template has an auto-incremented internal ID within the project. Useful for integrations that prefer numeric IDs:
Response 200 OK
variables_used includes the automatically injected variables (view_in_browser_url, unsubscribe_url). used_cached_html is true when the template’s pre-rendered HTML was used.

Response when the recipient is suppressed (200)

If the recipient unsubscribed or bounced, the email is skipped automatically: Response 200 OK

Error Codes

Learn more in Templates.

POST /v1/send-batch

Send bulk emails in a single request — up to 10,000 recipients per call.

Request Body

*You must send templateId OR both subject + html.
email_type now defaults to transactional (it used to be marketing on this endpoint only, unlike the rest of the API). If you send campaigns through send-batch, declare email_type: "marketing" explicitly: without the field, the send does not honour voluntary unsubscribes. Bounces and complaints keep blocking in both cases.
Structure of each recipient:

Headers

Example with direct HTML

Example with template

Example with scheduled send

Response 200 OK
Each recipient’s activity_id lets you track delivery status via webhooks.
As in /v1/send-email, applied when processing each send in the background — suppressed recipients are skipped and their activity remains with status suppressed.

Idempotency

Send the optional Idempotency-Key header (1–256 characters) to avoid duplicates on retries. 2xx and 4xx responses are cached for 24 hours, scoped per project. If you repeat the key within that window, you receive the cached response without reprocessing the batch, with the Idempotency-Replayed: true header. In the Node.js SDK, pass it as the second argument: rqe.emails.sendBatch(params, { idempotencyKey }). Learn more in Node.js SDK.

Dry run

With "dry_run": true, the API returns a preview without queuing emails or creating activity records:

Limits

For more than 10,000 recipients, use multiple calls or create a campaign from the RQE Dashboard, which handles batching and retries automatically. Learn more in Campaigns.

Error Codes

Manage a scheduled batch

A batch created with a future scheduled_at can be inspected, rescheduled, or cancelled while it has not gone out yet. Use the batch_id returned by POST /v1/send-batch, with the same sk_proj_... Bearer token.

GET /v1/send-batch/:batchId

Returns the status of a scheduled batch that has not gone out yet.
Response 200 OK

PATCH /v1/send-batch/:batchId

Reschedules a pending batch to a new date.
Response 200 OK
rescheduled is the number of jobs rescheduled to the new date.

DELETE /v1/send-batch/:batchId

Cancels a scheduled batch before it goes out.
Response 200 OK
cancelled is the number of jobs removed from the queue; activities_updated, the activity records marked as cancelled.
These endpoints only apply to batches with a future scheduled_at that have not gone out yet. An immediate batch (without scheduled_at) is queued instantly and cannot be cancelled. The activities of a cancelled batch are left with status cancelled and the reason in error_code/error_message.

Automatic Reply-To (Inbound Email)

Emails from /v1/send-email and /v1/send-batch automatically include a Reply-To header with the sender’s name:
Email clients (Gmail, Outlook, Apple Mail) display the sender’s name, not the technical address. When the recipient replies, the reply is routed to RQE and associated with the original thread. No configuration required. To receive notifications of incoming replies, configure an inbound email webhook. In /v1/send-template-email, replies go directly to the sender’s inbox: the Reply-To uses the reply address configured in the sender’s profile, or sender_email itself if there is none.

Data Management APIs

Besides sending, the v1 API includes endpoints to manage leads, events, tags, and attributes. Full documentation at:
  • Leads API — CRUD for leads, segments, tags, and attributes
  • Events API — Custom event tracking from your apps

Quick summary