Your agent finds the leads.
This sends the emails.

One API call pushes leads in. Sequences, follow-ups and reply detection run on their own — you step in the moment a human answers.

Sends from your mailboxes, on your tracking domain — your reputation stays yours.

POST /api/handleLeads
curl https://outreach.palus.sk/api/handleLeads \
  -H "Authorization: Bearer olk_…" \
  -H "Idempotency-Key: run-42" \
  -d '{
    "brand_id": 1,
    "leads": [{
      "email":    "jana@saloniris.sk",
      "name":     "Jana Kováčová",
      "company":  "Salon Iris",
      "category": "Hair Salon",
      "city":     "Bratislava"
    }]
  }'

// 202 Accepted
{ "batch_id": 42, "status": "queued",
  "preview": [ { "email": "jana@saloniris.sk",
                 "status": "accepted" } ] }

Built for a machine on one end
and a human on the other

Your scraper, CRM or AI agent talks to two endpoints. Everything between — sequences, follow-ups, tracking, reply handling — runs on its own.

1

Sync what's known

GET /existingLeads returns every known contact as cheap hashes with status — your agent skips anything already handled.

2

Push new finds

POST /handleLeads takes up to 500 leads a call. Duplicates, invalid domains and unsubscribed addresses are rejected per lead, with reasons.

3

Sequences run

Leads enrol into multi-step campaigns. Follow-ups reply inside the same thread and stop the instant someone answers or opts out.

4

Humans take over

Replies are classified by AI. Interested ones land in your inbox with the full transcript. Nothing ever auto-replies to a person.

Copy grounded in a profile
you confirmed

Paste your website and Outreach reads it — product, value props, ideal customer, objections, pricing, tone. You review and confirm every field. Only then may the AI write, and every claim must come from that confirmed profile.

  • Full sequences drafted per campaign, in the lead's language
  • Per-campaign instructions — one campaign can sell one product, another a different one
  • A built-in critic flags any claim the profile doesn't support
reply → classified → forwarded
// incoming reply, classified automatically
{
  "from":           "jana@saloniris.sk",
  "classification": "interested",
  "confidence":     0.97,
  "summary":        "Asks for pricing and a
                     call next week.",
  "sequence":       "stopped",
  "forwarded_to":   "you@yourcompany.com"
}

// out-of-office? The sequence pauses and
// resumes after the stated return date.

The unglamorous parts,
done properly

Your own mailboxes

Connect Gmail, Outlook or any IMAP/SMTP account. Warmup ramps, daily caps, sending windows and randomised delays keep them looking human.

Your tracking domain

Opens, clicks and unsubscribes run on a subdomain of your domain — never a shared one where someone else's spam becomes your problem.

Multi-step sequences

Delays and conditions per step, threading done right with In-Reply-To, and "no reply yet" as the default trigger — because opens lie.

Test the whole flow

Send the entire sequence to your own address before launch — real tracking, real unsubscribe, real classification, minutes instead of days.

A log of every email

Every send attempt with its exact rendered body, event timeline, bot-filtered opens and per-link clicks. No mystery about what went out.

Webhooks out

Replies, bounces and unsubscribes pushed to your systems, HMAC-signed. Your agent stays in the loop without polling.

Guardrails that protect you from yourself

Cold email dies when a domain gets burned. Every rule below is enforced by the system — not left to good intentions.

Launch blockers. No campaign starts without a confirmed profile, verified tracking domain, postal address and working mailbox.

Suppression re-checked at send time. Unsubscribed at 9:00, a queued follow-up at 9:05 is silently skipped.

Auto-pause circuit breaker. Bounce or complaint rate crosses your threshold and the campaign stops itself.

One-click unsubscribe. Visible link plus the List-Unsubscribe header, instant, no login, checked forever after.

One campaign per lead. Enforced by the database, not the UI — two campaigns can never email the same person in parallel.

Honest metrics. Apple Mail pre-fetches images, so bot opens are filtered out and reply rate is the number we show first.

Wire up your agent this afternoon

Two endpoints, bearer tokens, cursor paging and idempotency keys. The docs are public — see for yourself before signing up.