Sellion API Wiki

Developer guide & reference

Explore a wiki-style guide for integrating Sellion pods into your CRM, product, and analytics stack. Search topics, follow playbooks, and copy ready-to-run examples.

Developer preview: This wiki documents the public Sellion API surface: offers, prospects, conversations, messages, quotes, webhooks, and how they’re orchestrated inside pods. Use it as a starting point for pilots and integrations with your CRM or product. Production customers receive full OpenAPI specs and SDKs.

Getting started

What is Sellion?

Concept

Sellion is an AI SDR platform built around pods—configurable groups of AI agents, governance rules, and offers that run outbound for you. Pods discover ideal customers, open human-like conversations, negotiate pricing and terms, then hand ready-to-close opportunities back to your team. The public API lets you treat Sellion as a programmable sales engine that stays in sync with your CRM and product.

  • You can use the API to

    • • Model your offers and pricing.
    • • Sync prospects and contacts from your CRM.
    • • Start pod-led conversations in email or other channels.
    • • Inject human SDR messages or overrides.
    • • Ask for pricing recommendations in real time.
  • Typical integration points

    • • CRM lead and opportunity flows.
    • • Product-led signup and trial flows.
    • • Internal RevOps dashboards and analytics.
    • • CPQ and quoting tools.

Getting started

Authentication & base URL

Concept

All requests are JSON over HTTPS. For illustration, we'll use https://api.sellion.ai/v1 as the base URL.

  • • Authenticate with Authorization: Bearer <API_KEY>.
  • • API keys are tenant scoped and can be restricted to subsets of resources.
  • • Responses include X-Sellion-Request-Id to help with debugging.

You generate and manage API keys in the Sellion dashboard under Settings → Developer → API keys. Keys are tenant scoped, can be rotated, and can be revoked at any time.

Example: list offers

curl https://api.sellion.ai/v1/offers \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json"

Example error response

{
  "error": {
    "type": "invalid_request",
    "message": "prospect_id is required",
    "code": "missing_param",
    "param": "prospect_id"
  }
}

Getting started

Quickstart: from prospect to live conversation

Guide

A minimal integration follows these steps:

  1. Create an API key in the Sellion dashboard under Settings → Developer → API keys.
  2. Set your API key and make a test request.
  3. Create an offer that represents what you're selling.
  4. Sync a prospect with contacts from your CRM.
  5. Start a conversation that lets a pod handle outreach.
  6. Subscribe to webhooks to update your CRM when outcomes change.

1. Export your API key and ping the API

export SELLION_API_KEY="sk_live_your_key_here"

curl https://api.sellion.ai/v1/offers \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json"

2. Create an offer

curl https://api.sellion.ai/v1/offers \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "AI SDR for Outbound",
    "description": "AI SDR that runs outbound for mid-market SaaS.",
    "currency": "USD",
    "base_price": 1450,
    "billing_cycle": "monthly",
    "tags": ["saas", "mid-market"]
  }'

3. Upsert a prospect with contacts from your CRM

curl "https://api.sellion.ai/v1/prospects?upsert=true" \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "sf-lead-00123",
    "company": {
      "name": "Acme Corp",
      "domain": "acme.com",
      "size": "51-200",
      "industry": "SaaS",
      "location": "Austin, TX, USA"
    },
    "contacts": [
      {
        "external_id": "sf-contact-00999",
        "name": "Jane Doe",
        "email": "jane.doe@acme.com",
        "title": "VP Sales"
      }
    ],
    "metadata": {
      "sf_lead_id": "00Q...",
      "owner_email": "sdr@partner.com"
    }
  }'

4. Start a conversation

curl https://api.sellion.ai/v1/conversations \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prospect_id": "prospect_123",
    "offer_id": "offer_123",
    "channel": "email",
    "sdr_persona_id": "persona_saas_outbound",
    "config": {
      "tone": "consultative",
      "max_messages": 6
    },
    "metadata": {
      "sf_lead_id": "00Q..."
    }
  }'

Core resources

Resource model overview

Concept

Offers

Endpoint

Represent the products and services you sell, including currencies, base prices, and billing cycles.

Prospects & contacts

Endpoint

Represent companies and the humans you are selling to, synced from your CRM.

Conversations

Endpoint

Represent AI SDR flows that run outreach for a specific prospect and offer over a channel—managed by pods.

Messages

Endpoint

Represent messages in a conversation, including AI messages, customer replies, and human SDR overrides.

Quotes

Endpoint

Provide pricing recommendations and discounts for a prospect and offer in a given context.

Webhooks

Concept

Notify your systems about new conversations, messages, quotes, and outcomes.

Core resources

Offers

Endpoint

Create, list, fetch, and update offers that represent what you sell.

Create an offer

curl https://api.sellion.ai/v1/offers \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "crm-product-456",
    "name": "AI SDR for Outbound",
    "description": "AI SDR that runs outbound for mid-market SaaS.",
    "currency": "USD",
    "base_price": 1450,
    "billing_cycle": "monthly",
    "tags": ["saas", "mid-market"]
  }'

List offers

curl "https://api.sellion.ai/v1/offers?limit=20" \
  -H "Authorization: Bearer $SELLION_API_KEY"

Key fields

  • id String ID prefixed with offer_.
  • external_id Optional CRM or product catalog ID.
  • name Human-readable offer name.
  • currency ISO currency code, e.g. USD.
  • base_price Baseline price used as a starting point for quotes.
  • billing_cycle monthly, annual, etc.
  • tags Free-form tags for segmentation.

Core resources

Prospects & contacts

Endpoint

Sync companies and contacts into Sellion from your CRM.

Upsert a prospect by external_id

curl "https://api.sellion.ai/v1/prospects?upsert=true" \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "sf-lead-00123",
    "company": {
      "name": "Acme Corp",
      "domain": "acme.com",
      "size": "51-200",
      "industry": "SaaS",
      "location": "Austin, TX, USA"
    },
    "contacts": [
      {
        "external_id": "sf-contact-00999",
        "name": "Jane Doe",
        "email": "jane.doe@acme.com",
        "title": "VP Sales"
      }
    ],
    "tags": ["mid-market", "priority"],
    "metadata": {
      "sf_lead_id": "00Q...",
      "owner_email": "sdr@partner.com"
    }
  }'

Find a prospect by email

curl "https://api.sellion.ai/v1/prospects?email=jane.doe@acme.com" \
  -H "Authorization: Bearer $SELLION_API_KEY"

Key fields

  • company.name Company name (required).
  • company.domain Company email or web domain, used for enrichment.
  • contacts[].email Primary contact email address.
  • external_id CRM lead, contact, or account ID.
  • tags Lead-level tags for segmentation.
  • metadata Arbitrary key-value pairs for your workflows.

Core resources

Conversations

Endpoint

Spin up AI SDR flows that run outreach on your behalf.

Create a conversation

curl https://api.sellion.ai/v1/conversations \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prospect_id": "prospect_123",
    "offer_id": "offer_123",
    "channel": "email",
    "sdr_persona_id": "persona_saas_outbound",
    "sdr_persona_name": "SaaS SDR – Mid Market",
    "config": {
      "max_messages": 6,
      "cooldown_hours": 72,
      "tone": "consultative",
      "allow_price_negotiation": true
    },
    "metadata": {
      "sf_opportunity_id": "006..."
    }
  }'

Update outcome when a meeting is confirmed elsewhere

curl -X PATCH https://api.sellion.ai/v1/conversations/conv_123 \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "completed",
    "stage": "meeting_booked",
    "outcome": {
      "type": "meeting_booked",
      "notes": "Booked manually via AE",
      "meeting_time": "2025-11-22T15:00:00Z"
    }
  }'

Key fields

  • channel email, sms, linkedin, or chat (depending on your plan).
  • status active, paused, completed, or failed.
  • stage Your own pipeline stage, e.g. top_of_funnel or evaluation.
  • sdr_persona_id Identifier for a configured persona template.
  • config.max_messages Maximum number of outbound messages to send.
  • scheduling.meeting_tool e.g. calendly, chili_piper.

Core resources

Messages

Endpoint

Inspect and inject conversation messages.

List messages in a conversation

curl "https://api.sellion.ai/v1/conversations/conv_123/messages?limit=50" \
  -H "Authorization: Bearer $SELLION_API_KEY"

Inject a human SDR reply

curl https://api.sellion.ai/v1/conversations/conv_123/messages \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "role": "human_sdr",
    "channel": "email",
    "direction": "outbound",
    "subject": "Re: Quick idea for your SDR team",
    "body_text": "Hey Jane, Richard here. Jumping in personally to clarify a few points..."
  }'

Key fields

  • role agent, customer, human_sdr, or system.
  • direction outbound or inbound.
  • body_html/body_text HTML and plain text variants of the message body.
  • sent_at Timestamp when the message was dispatched or received.
  • status queued, sent, delivered, or bounced.

Core resources

Quotes & pricing recommendations

Endpoint

Get context-aware discounts and prices for your offers.

Ask for a pricing recommendation

curl https://api.sellion.ai/v1/quotes/recommend \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prospect_id": "prospect_123",
    "offer_id": "offer_123",
    "context": {
      "plan": "enterprise",
      "seats": 30,
      "billing_cycle": "annual",
      "region": "US",
      "existing_customer": true
    },
    "metadata": {
      "cpq_quote_id": "Q-0001"
    }
  }'

Key fields

  • list_price Reference price before discounts, based on offer and context.
  • recommended_price AI or rule-based recommended price after discounts.
  • discount_pct Effective discount percentage vs list_price.
  • valid_until Timestamp until which this recommendation is valid.
  • context Echoes the inputs you provided (plan, seats, billing cycle, etc.).

Events & webhooks

Webhooks: event delivery

Endpoint

Use webhooks to keep your CRM, warehouse, or product in sync with new events from Sellion. Each subscription listens to a subset of event types and sends signed JSON payloads to your endpoint.

Create a webhook subscription

curl https://api.sellion.ai/v1/webhooks \
  -H "Authorization: Bearer $SELLION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/sellion/webhooks",
    "events": [
      "conversation.created",
      "conversation.outcome",
      "message.created"
    ]
  }'

Example webhook event payload

{
  "id": "evt_123",
  "type": "conversation.outcome",
  "created_at": "2025-11-18T02:10:00Z",
  "data": {
    "object": "conversation",
    "id": "conv_123",
    "outcome": {
      "type": "meeting_booked",
      "meeting_time": "2025-11-22T15:00:00Z"
    }
  }
}

Verify requests using the Sellion-Signature header. It includes a timestamp and HMAC v1 hash of the payload using your webhook secret. Reject requests with invalid signatures or timestamps that are too old to mitigate replay attacks.

Events & webhooks

Event types

Concept

prospect.created

A prospect (and optionally contacts) was created via the API.

conversation.created

A conversation was started for a prospect and offer.

conversation.updated

Status, stage, or config changed for a conversation.

conversation.outcome

A conversation reached an outcome such as meeting_booked or no_interest.

message.created

A new message was created in a conversation (agent, customer, or human_sdr).

quote.recommended

A new pricing recommendation was created via the quotes API.

Integration playbooks

Flow A: CRM-led outreach

Guide

Use this flow when Salesforce, HubSpot, or your own CRM is the system of record. A pod runs AI SDR outreach, while your CRM controls which leads go where.

  1. Lead created in CRM. Your RevOps job calls POST /v1/prospects?upsert=true with external_id pointing at the CRM lead or account.
  2. Start a conversation. Call POST /v1/conversations with the prospect and offer IDs, using the config associated with a given pod.
  3. Pod runs outreach. Your internal workers send and receive messages over email, logging everything back to Sellion via /v1/conversations/{id}/messages.
  4. Outcomes sync back. Your webhook handler listens for conversation.outcome and updates the corresponding CRM records.

Integration playbooks

Flow B: product-led pricing

Guide

Use this flow when you want Sellion's pricing and discount intelligence directly inside your product's quoting or checkout flow.

  1. User configures a plan. Your product collects seats, billing cycle, region, and whether this is a new or existing customer.
  2. Call quotes API. Call POST /v1/quotes/recommend with the offer and prospect context.
  3. Display recommendation. Show recommended_price and explanation to your user. You can optionally let AEs override prices.
  4. Log quote. Store the quote ID in your own DB or CRM to track accepted vs. rejected quotes and feed that back into your pricing strategy, or a pricing-focused pod.