Campaigns

A campaign defines the characteristics of companies you want to target and the outreach sequences used to engage them. Coldreach continuously monitors your campaign criteria, identifies qualified accounts along with specific signals (buying indicators), and automates multi-step outreach workflows across email and LinkedIn.

How Campaigns Work

  1. Define your campaign — Set up research queries that define what makes a company a good fit
  2. Automatic research — Coldreach researches companies against your campaign criteria
  3. Signal detection — When a company matches, the specific signals are recorded with scores
  4. Qualified accounts — Browse and export accounts that match your campaign
  5. Outreach sequences — Automate multi-channel outreach to qualified accounts

API Endpoints

List campaigns

curl -H "x-api-key: YOUR_API_KEY" \
  https://api.coldreach.ai/public/v1/campaigns

Get campaign details

curl -H "x-api-key: YOUR_API_KEY" \
  https://api.coldreach.ai/public/v1/campaigns/456

Get qualified accounts for a campaign

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.coldreach.ai/public/v1/campaigns/123/accounts?from=0&take=25"

Browse campaign contacts

Filter by status: scheduled, in-progress, completed, replied, bounced, unsubscribed.

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.coldreach.ai/public/v1/campaigns/456/contacts?status=replied&take=50"

View message history

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.coldreach.ai/public/v1/campaigns/456/messages?skip=0&take=25"

Look up a specific account

curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.coldreach.ai/public/v1/accounts?domain=example.com&icpId=123"

Reply to an assignment

curl -X POST -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"body": "Thanks for your interest!"}' \
  https://api.coldreach.ai/public/v1/assignments/789/reply

Raw Sequence Operations

Raw operations let you push contacts directly into a campaign's sequence with your own messaging content, bypassing Coldreach's AI generation. These are designed for external callers who manage their own outreach copy.

Upsert contacts into a sequence

Push contacts into a campaign with pre-provided snippet variables. By default, ineligible contacts are automatically filtered out (cooldown, replied, blocked, etc.).

curl -X POST -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contacts": [
      {
        "email": "[email protected]",
        "firstName": "John",
        "companyDomain": "example.com",
        "variables": {"intro_line": "Noticed you are hiring..."}
      }
    ],
    "triggerIntake": true,
    "skipIneligible": true,
    "bypassCooldownOtherSequences": false,
    "bypassGlobalExcluded": false,
    "takeoverUnapproved": false
  }' \
  https://api.coldreach.ai/public/v1/campaigns/456/raw/contacts

Eligibility options

FieldDefaultDescription
skipIneligibletrueAutomatically skip contacts that fail eligibility checks. Set to false to push all contacts regardless.
bypassCooldownOtherSequencesfalseIgnore cooldown from other sequences (same-sequence cooldown is always enforced).
bypassGlobalExcludedfalseIgnore global domain/email exclusions.
takeoverUnapprovedfalseAllow adding contacts that have unapproved assignments in other sequences.

When skipIneligible is true, ineligible contacts are reported in the response:

{
  "created": 1,
  "updated": 0,
  "skipped": 0,
  "assignmentIds": [123],
  "errors": [],
  "skippedContacts": [
    {"email": "[email protected]", "reasons": ["cooldown_other_sequences"]}
  ]
}

Check contact eligibility

Dry-run eligibility check without creating any assignments. Useful for previewing which contacts would be filtered before pushing.

curl -X POST -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "emails": ["[email protected]", "[email protected]"],
    "bypassCooldownOtherSequences": false,
    "bypassGlobalExcluded": false,
    "takeoverUnapproved": false
  }' \
  https://api.coldreach.ai/public/v1/campaigns/456/raw/contacts/check-eligibility

Returns per-contact eligibility with reasons:

{
  "results": [
    {"email": "[email protected]", "eligible": true, "reasons": []},
    {"email": "[email protected]", "eligible": false, "reasons": ["cooldown_other_sequences"]}
  ],
  "summary": {
    "total": 2, "eligible": 1, "ineligible": 1,
    "cooldown_same_sequence": 0, "cooldown_other_sequences": 1,
    "unapproved": 0, "replied": 0, "blocked": 0, "globally_excluded": 0
  }
}

Ineligibility reasons

ReasonDescription
cooldown_same_sequenceContact is active or recently completed in this sequence
cooldown_other_sequencesContact is in cooldown from another sequence (same channel)
unapprovedContact has unapproved assignments in other sequences
repliedContact has replied to previous outreach
blockedContact is marked as blocked
globally_excludedContact's email or company domain is on the exclusion list

See the API Reference for complete request/response details.