RevorRevor

Create Outreach Dispatch

POST/api/v1/outreach/dispatches

Creates one email, LinkedIn, or WhatsApp outreach task. A successful request returns HTTP 202 Accepted and a task ID.

Headers

HeaderRequiredDescription
AuthorizationYesBearer sk-revor-....
Content-TypeYesapplication/json.
Idempotency-KeyRecommendedIdempotency key. Use it when retrying the same outreach task.

Request Body

FieldTypeRequiredDescription
account_idstringYesConnect account ID.
channelstringYesemail, linkedin, or whatsapp. Must match the account channel.
actionstringYesMust be outreach.
recipientobjectYesRecipient information.
contentobjectYesMessage content.
metadataobjectNoCustom context supplied by the integration.
min_channel_task_interval_secondsnumberNoMinimum interval, in seconds, for tasks on the same channel under the same Revor account. Defaults to 60, minimum 60, maximum 86400. Values below 60 are treated as 60.

Outreach Interval

min_channel_task_interval_seconds applies only to tasks on the same channel under the same Revor account. Email, LinkedIn, and WhatsApp use separate channel intervals.

When creating outreach tasks in batches, integrations should generate a random interval for each task. A common recommended range is 180 to 360 seconds, instead of using a fixed cadence for every task.

recipient Fields

ChannelRequired FieldDescription
emailrecipient.addressRecipient email address.
linkedinrecipient.profile_urlLinkedIn profile URL.
whatsapprecipient.phoneWhatsApp phone number or contact identifier.

content Fields

ChannelRequired FieldOptional FieldDescription
emailcontent.subject, and at least one of content.text or content.htmlcontent.attachmentsEmail subject and body.
linkedincontent.text or at least one attachmentcontent.attachmentsLinkedIn message or invitation text.
whatsappcontent.text or at least one attachmentcontent.attachmentsWhatsApp message content.

Attachment object:

FieldTypeRequiredDescription
filenamestringYesFile name.
contentBase64stringYesFile content encoded as base64.
contentTypestringNoMIME type, such as application/pdf.

Email Request

cURL
curl -X POST "https://revor.ai/api/v1/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, this is a quick API test from Revor AI."
    },
    "min_channel_task_interval_seconds": 60
  }'

LinkedIn Request Example

cURL
curl -X POST "https://revor.ai/api/v1/outreach/dispatches" \
  -H "Authorization: Bearer sk-revor-REPLACE_ME" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "connect_account_xxx",
    "channel": "linkedin",
    "action": "outreach",
    "recipient": {
      "profile_url": "https://www.linkedin.com/in/test-user/"
    },
    "content": {
      "text": "Hi Alex, saw your recent work on outbound automation and wanted to connect."
    },
    "min_channel_task_interval_seconds": 60
  }'

WhatsApp Request

cURL
curl -X POST "https://revor.ai/api/v1/outreach/dispatches" \
  -H "Authorization: Bearer sk-revor-REPLACE_ME" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "connect_account_xxx",
    "channel": "whatsapp",
    "action": "outreach",
    "recipient": {
      "phone": "+14155552671"
    },
    "content": {
      "text": "Hi Alex, this is a quick WhatsApp message from Revor AI."
    },
    "min_channel_task_interval_seconds": 60
  }'

Response

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

Response Fields

FieldTypeDescription
item.idstringTask ID. Use it with /api/v1/outreach/jobs/{id}.
item.statusstringTask status.
item.actionstringAlways outreach.dispatch.
item.channelstringTask channel.
item.scheduled_atstring | nullScheduled execution time.

Retrieve Result

A successful creation response does not mean the message has been sent. Use item.id to retrieve the task result:

cURL
curl -X GET "https://revor.ai/api/v1/outreach/jobs/job_uuid" \
  -H "Authorization: Bearer sk-revor-REPLACE_ME"

Errors

HTTPCodeDescription
400account_id_requiredaccount_id is required.
400invalid_channelThe channel value is not supported.
400invalid_actionaction must be outreach.
400recipient_address_requiredrecipient.address is required for email.
400content_subject_requiredcontent.subject is required for email.
400content_text_or_html_requiredEmail body is required.
400recipient_profile_url_requiredrecipient.profile_url is required for LinkedIn.
400invalid_profile_urlThe LinkedIn URL format is invalid.
400recipient_phone_requiredrecipient.phone is required for WhatsApp.
400content_text_or_attachment_requiredText or attachment is required.
401api_key_invalidThe API key is invalid.
403permission_deniedThe API key does not have access to this endpoint.
404account_not_foundThe account_id does not exist or is not accessible.
409account_channel_mismatchaccount_id does not match channel.
409connect_account_reconnect_requiredThe account must be reconnected.
409idempotency_conflictThe idempotency key was reused with a different request body.
429api_rate_limit_exceededThe request was rate limited.
502action_failedThe outreach action failed.
503task_unavailableThe task could not be created temporarily.