Copilot

Plan a whole campaign from your website and a description of your buyer, then launch it in one call.

Launch a draft outbound campaign and start lead finding

post https://api.emailchaser.com/r/copilot/launch

Creates a DRAFT Emailchaser campaign (with its email sequence) scoped to the caller's workspace. With a Sales Navigator search URL it also kicks off lead extraction; without one the draft holds the emails and leads can be added from Lead Finder or a CSV upload. salesNavData needs a salesNavSearchUrl. The campaign stays in DRAFT — nothing sends automatically.

  • ICP is optional and carried through for reference only.

    8 fields inside icp
    • companySizes array of string
    • icpName string
      Example: Mid-market SaaS RevOps leaders
    • industries array of string
    • personas array of CopilotPersona
      2 fields inside personas
      • seniority string
        Example: VP
      • title string
        Example: VP of Sales
    • seniorities array of string
    • suggestedSalesNavKeywords array of string
    • summary string
    • titles array of string
  • name string required

    Name is the campaign name.

    Example: Acme outbound Q3
  • salesNavData string

    SalesNavData is the optional base64 browser-extension payload that carries the LinkedIn session required to actually run the search. When omitted the lead engine cannot authenticate to LinkedIn (see docs), so provide it to start real extraction. It needs SalesNavSearchURL.

  • salesNavSearchUrl string

    SalesNavSearchURL is the optional LinkedIn Sales Navigator search URL the lead engine should extract leads from. Leave it out to create the draft with its emails only and add leads from Lead Finder or a CSV upload. It is required when SalesNavData is given.

    Example: https://www.linkedin.com/sales/search/people?...
  • sequence array of CopilotSequenceStep required

    Sequence is the cold-email sequence to seed the draft campaign with.

    3 fields inside sequence
    • body string required
      Example: Hi {first_name}, ...
    • followUpAfter integer

      FollowUpAfter is the number of days after the previous step. 0 for the initial email; 1-30 for follow-ups.

      Example: 3
    • subject string required
      Example: quick question about {company_name}
Fields in the 202 response
  • campaignId integer
    Example: 1234
  • jobId string
    Example: 5678
  • message string
    Example: draft campaign created; lead finding started
  • status string
    Example: draft

Request

curl -X POST "https://api.emailchaser.com/r/copilot/launch" \
  -H "Authorization: Bearer $EMAILCHASER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "icp": {
    "companySizes": [
      "string"
    ],
    "icpName": "Mid-market SaaS RevOps leaders",
    "industries": [
      "string"
    ],
    "personas": [
      {
        "seniority": "VP",
        "title": "VP of Sales"
      }
    ],
    "seniorities": [
      "string"
    ],
    "suggestedSalesNavKeywords": [
      "string"
    ],
    "summary": "string",
    "titles": [
      "string"
    ]
  },
  "name": "Acme outbound Q3",
  "salesNavData": "string",
  "salesNavSearchUrl": "https://www.linkedin.com/sales/search/people?...",
  "sequence": [
    {
      "body": "Hi {first_name}, ...",
      "followUpAfter": 3,
      "subject": "quick question about {company_name}"
    }
  ]
}'

Response

{
  "campaignId": 1234,
  "jobId": "5678",
  "message": "draft campaign created; lead finding started",
  "status": "draft"
}

Plan an outbound campaign from a website

post https://api.emailchaser.com/r/copilot/plan

Fetches the company website, infers an Ideal Customer Profile with the managed AI model, and drafts a suggested cold-email sequence. Changes nothing, but needs a read and write API key. A website that shows a placeholder page instead of the business (a parked or not yet connected domain, a default server page) is refused with 422; send a description of what you sell to plan from it instead.

  • context string

    Context is optional extra guidance from the caller (e.g. "we sell to dentists in the US").

    Example: we sell to dental clinics in the US
  • description string

    Description is what the company sells and to whom, in its own words. When given, the plan is built from it and the website is not read: send it when the website shows a placeholder page (the 422 answer).

    Example: Bookkeeping and payroll for independent restaurants
  • website string required

    Website is the company homepage to analyse (with or without scheme).

    Example: https://acme.com
Fields in the 200 response
  • 8 fields inside icp
    • companySizes array of string
    • icpName string
      Example: Mid-market SaaS RevOps leaders
    • industries array of string
    • personas array of CopilotPersona
    • seniorities array of string
    • suggestedSalesNavKeywords array of string
    • summary string
    • titles array of string
  • suggestedSequence array of CopilotSequenceStep
    3 fields inside suggestedSequence
    • body string required
      Example: Hi {first_name}, ...
    • followUpAfter integer

      FollowUpAfter is the number of days after the previous step. 0 for the initial email; 1-30 for follow-ups.

      Example: 3
    • subject string required
      Example: quick question about {company_name}

Request

curl -X POST "https://api.emailchaser.com/r/copilot/plan" \
  -H "Authorization: Bearer $EMAILCHASER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "context": "we sell to dental clinics in the US",
  "description": "Bookkeeping and payroll for independent restaurants",
  "website": "https://acme.com"
}'

Response

{
  "icp": {
    "companySizes": [
      "string"
    ],
    "icpName": "Mid-market SaaS RevOps leaders",
    "industries": [
      "string"
    ],
    "personas": [
      {
        "seniority": "VP",
        "title": "VP of Sales"
      }
    ],
    "seniorities": [
      "string"
    ],
    "suggestedSalesNavKeywords": [
      "string"
    ],
    "summary": "string",
    "titles": [
      "string"
    ]
  },
  "suggestedSequence": [
    {
      "body": "Hi {first_name}, ...",
      "followUpAfter": 3,
      "subject": "quick question about {company_name}"
    }
  ]
}

Generated from the Emailchaser API's own OpenAPI definition, so it always matches the running API.