Skip to main content
Feather is multi-channel by design. The same agent foundation can be exposed through live voice, SMS, email, or web chat depending on the use case.

Shared Conversation Concepts

Every conversation surface can carry:
  • An agent or agent version
  • Contact context such as leadId
  • Variables used inside prompts or tools
  • Metadata for CRM or reporting use
  • Conversation records you can review later

Conversation Surfaces

Voice

Best for real-time qualification, support, intake, reminders, and transfers.

SMS

Best for short updates, follow-ups, opt-ins, confirmations, and workflow steps.

Email

Best for longer follow-up, summaries, scheduling, and asynchronous outreach.

Web Chat

Best for embedded product or marketing site conversations.

Voice Calls

Voice conversations can begin in two common ways:
  • A user calls a number assigned to an inbound agent or squad
  • You launch an outbound call with direct dispatch or a workflow step

Direct Dispatch Example

curl -X POST "https://prod.featherhq.com/api/v1/agent/AGENT_ID/dispatch" \
  -H "X-API-Key: $FEATHER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "versionId": "VERSION_ID",
    "outboundPhoneNumberId": "PHONE_NUMBER_ID",
    "leadId": "contact-123",
    "firstName": "Avery",
    "toPhoneNumber": "+14155550123",
    "variables": {
      "accountName": "Northwind Health"
    },
    "metadata": {
      "campaign": "renewal-q2"
    }
  }'

SMS Threads

SMS uses persistent threads rather than one-off messages. This is the right model for follow-up, reminders, re-engagement, and workflow-based text outreach.
curl -X POST "https://prod.featherhq.com/api/v1/threads" \
  -H "X-API-Key: $FEATHER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agentVersionId": "TEXT_AGENT_VERSION_ID",
    "toPhoneNumber": "+14155550123",
    "fromPhoneNumber": "+14155550999",
    "fromPhoneNumberId": "FROM_PHONE_NUMBER_ID",
    "initialMessage": "Hi Taylor, this is Feather. I wanted to confirm whether tomorrow still works for your renewal review.",
    "leadId": "contact-123",
    "variables": {
      "accountName": "Northwind Health"
    }
  }'

Email Threads

Email threads are outbound-initiated conversations tied to a deployed version. The version should have a verified sending domain configured before you start sending.
curl -X POST "https://prod.featherhq.com/api/v1/email/threads" \
  -H "X-API-Key: $FEATHER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agentVersionId": "TEXT_AGENT_VERSION_ID",
    "toEmail": "taylor@example.com",
    "subject": "Next steps for your renewal review",
    "firstMessage": "Thanks for taking the call today. Here is a short summary and the next action we discussed.",
    "leadId": "contact-123"
  }'

Web Chat

Web chat threads are created on demand and return a short-lived token for the client. Chat creation is protected by an allowlist of approved domains.
curl -X POST "https://prod.featherhq.com/api/v1/chat/threads" \
  -H "Content-Type: application/json" \
  -H "Origin: https://www.example.com" \
  -d '{
    "agentId": "WEB_CHAT_AGENT_ID"
  }'
Use Update organization settings to manage allowedChatDomains.

Design Guidance

  • Use voice when the conversation needs urgency, nuance, or live transfer.
  • Use SMS when a short asynchronous reply is enough.
  • Use email when responses are longer or need richer written context.
  • Use web chat for product surfaces or public website entry points.
  • Reuse variables and metadata consistently across channels so workflows and reporting stay clean.