API & Webhooks

Instagram outreach, as an API.

POST a list of usernames and a message. Receive sent, replied, and failed events on your webhook in real time.

Create a campaign with one request

Send targets and a message template to POST /campaigns. We provision the phones, warm the senders, throttle the sends, and skip anyone already in your suppression list.

  • Authenticate with a per-client API key
  • Personalize with {{variables}} per target
create-campaign.sh
curl -X POST https://api.heyrelio.com/campaigns \
  -H "x-api-key: $HEYRELIO_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "campaign": "q3-founders",
  "message": "Hey {{first_name}}, loved your post. Worth a look?",
  "targets": ["acme.co", "founderjane", "growthbot"],
  "webhookUrl": "https://api.yoursaas.com/webhooks/heyrelio"
}'

200 OK

{
  "campaignId": "cmp_8f2a91",
  "status": "queued",
  "phonesProvisioned": 3
}

Webhooks for every state change

Every transition fires a signed event at your endpoint, so your product reflects what is happening on Instagram without polling.

sent

A DM was delivered to a target from one of your sender accounts.

replied

A target wrote back. The reply text and account arrive with the event.

failed

A send could not complete, with a reason you can act on or retry.

Delivered the moment it happens

Each event is signed with an HMAC secret and retried with backoff until your endpoint acknowledges it. No queues to drain, no polling loops to run.

webhook.json
POST /webhooks/heyrelio

{
  "event": "replied",
  "campaignId": "cmp_8f2a91",
  "target": "founderjane",
  "account": "yourbrand",
  "text": "Sounds interesting, send me the details",
  "occurredAt": "2026-06-01T18:24:11Z"
}

A small, predictable surface

Seven REST endpoints and a full OpenAPI spec. The campaign contract is frozen, so what you build today keeps working.

POST /campaigns
GET /campaigns/:id
GET /campaigns/:id/results
POST /accounts/connect
GET /accounts
POST /webhooks/test

Signed webhooks

Every payload carries an HMAC signature so you can verify it came from HeyRelio.

Retries with backoff

Failed deliveries retry automatically until your endpoint returns 2xx.

Frozen contract

Field names on POST /campaigns never change, so integrations stay stable.

OpenAPI spec

Generate a typed client in your language from the published schema.

Reach. Reply.
Book the meeting.

Start your free trial

No credit card required · Bring your own accounts