Skip to main content
Emit an outreach action: validates it against the persona’s guardrails, creates/updates the outreach reply, and records the action for later outcome measurement. Supported channels:
  • ‘reddit’ / ‘hn’ / ‘twitter’ / ‘linkedin_listening’ (social replies — fully wired)
  • ‘gmail’ / ‘linkedin_dm’ (returns status=‘pending_connector’ until those connectors are available)
Use this when:
  • The user wants to reply to a Reddit / HN / Twitter / LinkedIn thread that’s been queued for response.
  • An ingested conversation is ripe for a follow-up reply (pair with from_conversation_id).
Skip when:
  • The outreach is broad content publishing (use emit_content).
  • The outreach is paid surfacing (use emit_paid).
Persona guardrails: persona_id + intent are REQUIRED. A blocking violation halts the call unless override_reason (≥ 8 chars) is provided; overrides are recorded. Inputs:
  • persona_id (required): the buyer persona this reply is aimed at — one of the personas get_brand_context lists for this brand.
  • voice_persona_id (optional): the voice persona the reply speaks as. Omit for brand voice.
  • intent (required): ‘engagement’ (relationship-build) or ‘commercial’ (pitch/conversion).
  • channel (required): one of the listed channels above.
  • reply_text (required, 1-4000 chars): the body of the reply.
  • source_ref_id (required for social channels): the Reddit/HN/Twitter/LinkedIn thread id this responds to.
  • source_url (optional): the source thread URL for audit.
  • brand_account_id (optional): the brand account this reply posts as.
  • scheduled_for (optional, YYYY-MM-DD): land on the calendar at a specific date.
  • override_reason (optional, ≥ 8 chars): bypass block-severity violations with audit.
Response: { actionId, replyId, channel, status: ‘queued’ | ‘scheduled’ | ‘pending_connector’, validation }.

Inputs