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
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.
Request bodyJSON · CopilotLaunchRequest
- icp CopilotICP
ICP is optional and carried through for reference only.
8 fields inside icp
- companySizes array of string
- icpName stringExample:
Mid-market SaaS RevOps leaders - industries array of string
- personas array of CopilotPersona
2 fields inside personas
- seniority stringExample:
VP - title stringExample:
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 is the cold-email sequence to seed the draft campaign with.
3 fields inside sequence
- body string requiredExample:
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 requiredExample:
quick question about {company_name}
Responses
- 202 Draft campaign created, with lead finding started when a search was given · CopilotLaunchResponse
- 400 Invalid request body · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 500 Failed to create draft campaign · ErrorResponse
Fields in the 202 response
- campaignId integerExample:
1234 - jobId stringExample:
5678 - message stringExample:
draft campaign created; lead finding started - status stringExample:
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
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.
Request bodyJSON · CopilotPlanRequest
- 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
Responses
- 200 Suggested ICP and sequence · CopilotPlanResponse
- 400 Invalid request body · ErrorResponse
- 401 Unauthorized - invalid or missing API key · ErrorUnauthorized
- 422 The website shows a placeholder page, not the business · ErrorResponse
- 429 Too many AI requests for this workspace · ErrorResponse
- 502 Failed to analyse website · ErrorResponse
Fields in the 200 response
- icp CopilotICP
8 fields inside icp
- companySizes array of string
- icpName stringExample:
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 requiredExample:
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 requiredExample:
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.