AI92 פעיל - ההשקה הרכה הגלובלית שלנו בעיצומה: הפלטפורמה המלאה פתוחה ברחבי העולם למשך 30 הימים הראשונים.
תפריט תיעוד

תיעוד מפתחים זה זמין כרגע באנגלית בלבד. קוד והתנהגות API זהים בכל אזור.

Outreach API

Read a brand's outreach pipeline and act on it: approve or reject drafts, draft AI reply suggestions, send replies, and set the send mode. These endpoints mirror the campaign My Outreach panel into the API instance and proxy module-a's aggregate of module-H contacts and the module-J outreach pipeline. All routes are served under /v1/outreach.

Reads and workflow actions are free; only the AI/sending steps are metered.

Authentication

Every request must carry a tenant API key as a Bearer token:

Authorization: Bearer ai92_live_<key>     # production
Authorization: Bearer ai92_test_<key>     # sandbox

OAuth 2.0 access tokens (Authorization: Bearer eyJ…) are also accepted. All routes are brand-scoped: brand_id is required (query or body) and is verified against your account. Mutating requests support the Idempotency-Key header.

Credit costs at a glance

EndpointCost
GET /v1/outreach/dataFree
POST /v1/outreach/decision/{lead_id}Free
POST /v1/outreach/reply/suggest/{conversation_id}2 cr
POST /v1/outreach/reply/send/{conversation_id}1 cr
PATCH /v1/outreach/send-modeFree

GET /v1/outreach/data

Cost: Free

The brand's My-Outreach payload: contacts (merged module-H + module-J), the funnel, message variants, and feature flags, in a single read.

Auth: Bearer (tenant key or OAuth token)

ParameterInTypeRequiredDescription
brand_idquerystringYesThe brand to read. Verified against the account.

Request

bash
curl "https://api.ai92.ai/v1/outreach/data?brand_id=b1f0…" \
  -H "Authorization: Bearer ai92_test_51a9c0de…"

Response 200 OK

json
{
  "brand_id": "b1f0…",
  "send_mode": "REQUIRES_APPROVAL",
  "funnel": { "queued": 12, "sent": 184, "replied": 21, "bounced": 3 },
  "contacts": [
    {
      "lead_id": "lead_8f21",
      "conversation_id": "conv_3a90",
      "full_name": "Jordan Vega",
      "email": "[email protected]",
      "stage": "awaiting_approval",
      "last_message_at": "2026-06-21T08:40:00Z"
    }
  ],
  "variants": [{ "id": "var_a", "label": "Direct" }],
  "feature_flags": { "auto_send_enabled": false }
}

Errors

StatusCodeWhen
404BRAND_NOT_FOUNDBrand not owned by the account.

POST /v1/outreach/decision/{lead_id}

Cost: Free

Approve or reject an outreach draft (the workflow approve/reject step).

Auth: Bearer

ParameterInTypeRequiredDescription
lead_idpathstringYesThe lead whose draft to decide.
brand_idbodystringYesThe brand. Verified against the account.
decisionbodystringYesapprove or reject.
reasonbodystring / nullNoOptional reason recorded with the decision.

Request

bash
curl -X POST https://api.ai92.ai/v1/outreach/decision/lead_8f21 \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"brand_id": "b1f0…", "decision": "approve"}'

Response 200 OK

json
{ "lead_id": "lead_8f21", "decision": "approve", "status": "approved" }

Errors

StatusCodeWhen
404BRAND_NOT_FOUNDBrand not owned by the account.

POST /v1/outreach/reply/suggest/{conversation_id}

Cost: 2 credits

Generate a brand-grounded AI reply draft for a conversation. Credits are charged only after a successful response.

Auth: Bearer

ParameterInTypeRequiredDescription
conversation_idpathstringYesThe conversation to draft a reply for.
brand_idbodystringYesThe brand. Verified against the account.
tonebodystring / nullNoReply tone. Default professional.

Request

bash
curl -X POST https://api.ai92.ai/v1/outreach/reply/suggest/conv_3a90 \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"brand_id": "b1f0…", "tone": "friendly"}'

Response 200 OK

json
{
  "conversation_id": "conv_3a90",
  "suggestion": {
    "subject": "Re: quick question about your rollout",
    "body_text": "Hi Jordan — happy to help…",
    "body_html": "<p>Hi Jordan — happy to help…</p>"
  },
  "credits_consumed": 2
}

Errors

StatusCodeWhen
402INSUFFICIENT_CREDITSBalance below 2 credits.
404BRAND_NOT_FOUNDBrand not owned by the account.

POST /v1/outreach/reply/send/{conversation_id}

Cost: 1 credit

Send a reply on a conversation (email send). Credits are charged only after a successful send.

Auth: Bearer

ParameterInTypeRequiredDescription
conversation_idpathstringYesThe conversation to reply on.
brand_idbodystringYesThe brand. Verified against the account.
subjectbodystringYesReply subject.
body_htmlbodystringYesReply body as HTML.
body_textbodystring / nullNoPlain-text alternative.
in_reply_to_message_idbodystring / nullNoMessage id this reply threads onto.

Request

bash
curl -X POST https://api.ai92.ai/v1/outreach/reply/send/conv_3a90 \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"brand_id": "b1f0…", "subject": "Re: quick question", "body_html": "<p>Hi Jordan — happy to help…</p>"}'

Response 200 OK

json
{
  "conversation_id": "conv_3a90",
  "message_id": "msg_77a1",
  "status": "sent",
  "credits_consumed": 1
}

Errors

StatusCodeWhen
402INSUFFICIENT_CREDITSBalance below 1 credit.
404BRAND_NOT_FOUNDBrand not owned by the account.

PATCH /v1/outreach/send-mode

Cost: Free

Flip the brand's outreach send mode between automatic sending and human approval.

Auth: Bearer

ParameterInTypeRequiredDescription
brand_idbodystringYesThe brand. Verified against the account.
send_modebodystringYesAUTO_SEND or REQUIRES_APPROVAL.

Request

bash
curl -X PATCH https://api.ai92.ai/v1/outreach/send-mode \
  -H "Authorization: Bearer ai92_test_51a9c0de…" \
  -H "Content-Type: application/json" \
  -d '{"brand_id": "b1f0…", "send_mode": "AUTO_SEND"}'

Response 200 OK

json
{ "brand_id": "b1f0…", "send_mode": "AUTO_SEND" }

Errors

StatusCodeWhen
404BRAND_NOT_FOUNDBrand not owned by the account.