RevorRevor

Send one outreach message

POST/api/v2/outreach/dispatches

Uses a connected account to send an Email or WhatsApp message, or perform one LinkedIn outreach action. For an existing LinkedIn connection, it sends a message; otherwise, it sends a connection request with a note.

The endpoint returns HTTP 202 and a job ID. Use the unified jobs endpoint to retrieve the final result.

Headers

HeaderRequiredDescription
AuthorizationYesBearer sk-revor-....
Content-TypeYesapplication/json.
Idempotency-KeyNoReliable retry identifier. Reuse it when retrying the same business operation to prevent duplicate sends.

Request body

FieldRequiredDescription
account_idYesObtained from the Connect accounts endpoint.
channelYesemail, linkedin, or whatsapp; must match the account channel.
actionYesMust be outreach.
recipientYesRecipient details.
contentYesContent to send.
metadataNoCustom caller context.
min_channel_task_interval_secondsNoMinimum job interval for the same user and channel. Defaults to 60; allowed range is 60-86400 seconds.

Intervals are independent across channels. For batch submissions, use a different interval between 180 and 360 seconds for each job to avoid a fixed sending cadence.

Channel-specific fields

Channelrecipientcontent
Emailaddress, optional nameRequires subject and either text or html.
LinkedInprofile_urlProvide text or a valid attachment. Sends a message when connected or a connection request with a note otherwise.
WhatsAppphoneProvide text or a valid attachment.

Attachments contain filename and contentBase64, with optional contentType.

Email example

cURL
curl -X POST "https://revor.ai/api/v2/outreach/dispatches" \
  -H "Authorization: Bearer sk-revor-REPLACE_ME" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "connect_account_xxx",
    "channel": "email",
    "action": "outreach",
    "recipient": { "address": "[email protected]", "name": "Alex" },
    "content": { "subject": "Quick introduction", "text": "Hi Alex, ..." }
  }'

Example response

JSON
{
  "ok": true,
  "request_id": "req_xxx",
  "item": {
    "id": "job_uuid",
    "status": "scheduled",
    "action": "outreach.dispatch",
    "channel": "email",
    "scheduled_at": "2026-08-26T10:00:00.000Z"
  }
}

Call GET /api/v2/jobs/job_uuid for the result. Successful creation only means that the job was accepted, not that the message was sent.

Common errors

HTTPCodeDescription
400account_id_required / invalid_channel / invalid_actionA basic parameter is invalid.
400recipient_address_required / recipient_profile_url_required / recipient_phone_requiredThe recipient for the selected channel is missing.
400content_subject_required / content_text_or_html_required / content_text_or_attachment_requiredRequired content for the channel is missing.
400attachment_invalid / attachments_invalidThe attachment format is invalid.
400min_channel_task_interval_seconds_invalidThe channel job interval is outside the allowed range.
403permission_deniedThe key cannot create a single outreach action.
413request_payload_too_largeThe request body exceeds 12 MB.
503task_unavailableThe job cannot be created temporarily.