POST /v1/webhooks/instantly/{receiver_token}
| Call | POST /v1/webhooks/instantly/{receiver_token} |
| Price | free |
| Scope | none (public endpoint) |
| Operation id | receiveInstantlyWebhook |
What it does
Section titled “What it does”Point Instantly’s webhook at this URL (copy it from the console) and Verdict turns its events into outcomes on the decision you tagged when sending. Not called by agents. The body is Instantly’s own payload, passed through unchanged. Verification: Instantly does not sign webhooks: the per-org receiver_token in the path authenticates the call, plus Instantly’s published source IPs where available. Mapping: email_sent to delivered, email_bounced to bounced, reply_received to replied, lead_interested to interested, lead_not_interested to not_interested, lead_meeting_booked to meeting_booked. Idempotent on the vendor’s event id. Free. Verdict never holds your Instantly credentials.
Example request
Section titled “Example request”Copy it as curl. Set VERDICT_API_KEY first; uuidgen makes a fresh Idempotency-Key.
curl -X POST 'https://api.askverdict.io/v1/webhooks/instantly/%3Creceiver_token%3E' \ -H 'Content-Type: application/json' \ -d '{ "event_type": "reply_received", "timestamp": "2026-11-06T09:12:00Z", "campaign_id": "cmp_example", "lead_email": "[email protected]", "verdict_decision_id": "dec_01JC3Z4Y8R9K2M5N7P1Q3S5T7V"}'Example response
Section titled “Example response”200: The payload was verified and processed.
{ "received": true, "duplicate": false, "outcome_ids": [ "out_01JC3Z4Y8R9K2M5N7P1Q3S5T7V" ]}Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
receiver_token |
path | string | yes | Per-org receiver token issued in the console; identifies your organization. Treat the full URL as a secret. |
Request body
Section titled “Request body”Schema VendorWebhookBody. Instantly’s webhook payload.
Type: object.
Response fields (200)
Section titled “Response fields (200)”Schema WebhookReceipt.
| Field | Type | Required | Description |
|---|---|---|---|
received |
enum: true | yes | The payload was verified and accepted. |
duplicate |
boolean | yes | True when this vendor event id was already processed. |
outcome_ids |
array of string | yes | Outcomes created from the payload; empty when it maps to none. |
Errors
Section titled “Errors”Errors are RFC 9457 problem details and are never billed. Branch on type. See Errors.
| Status | Meaning |
|---|---|
400 |
Invalid request: malformed JSON, an unknown field, a failed constraint or a size limit (invalid_request). |
401 |
Missing, malformed, revoked or expired API key, or a bad webhook signature (unauthorized). |
404 |
The resource does not exist in this organization (not_found). |
429 |
Rate limited (rate_limited). Wait Retry-After seconds. |
500 |
Unexpected server error (internal). Not billed; retry with the same Idempotency-Key. |
Try it
Section titled “Try it”Open the interactive reference to send this request from the browser. The full document is at /openapi.json.