API Reference
Webhook export
Manage webhook destinations and push accounts or people to them as flat JSON rows - one POST per record, Clay-ready. Background push runs handle any batch size.
List destinations
/webhook-destinationsReturns every webhook export destination in the workspace. Destination URLs often embed a secret token (Clay webhook URLs do), so only a masked form is returned; the signing secret is included so your receiver can verify deliveries.
{
"data": [
{
"id": "...",
"name": "Clay - Accounts table",
"url_masked": "https://api.clay.com/v3/sources/w…",
"secret": "whsec_...",
"created_at": "2026-07-01T..."
}
]
}Create a destination
/webhook-destinationsnamestringrequiredDisplay name, unique per workspace (max 80 chars).
urlstringrequiredReceiving webhook URL. Must be a public https endpoint that accepts JSON POSTs.
curl -X POST https://usehunch.co/api/v1/webhook-destinations \
-H "Authorization: Bearer hunch_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Clay - Accounts table", "url": "https://api.clay.com/v3/sources/webhook/..." }'Delete a destination
/webhook-destinations/:id{ "data": { "id": "...", "deleted": true } }Push accounts
/accounts/webhook-pushDelivers each account to the destination as one flat JSON row per POST - the shape Clay, Zapier, Make, and n8n expect. See Webhooks for the row fields and signing headers.
destination_idstringrequiredWhich destination to send to.
account_idsstring[]requiredAccounts to push. Any size.
Batches of 100 or fewer deliver inline and return the final counts. Larger batches start a background push run:
{ "data": { "pushed": 42, "failed": 0, "skipped": 0, "errors": [] } }{ "data": { "run_id": "...", "total": 1200, "status": "running" } }Push people
/people/webhook-pushIdentical to the accounts push, with person rows.
destination_idstringrequiredWhich destination to send to.
contact_idsstring[]requiredPerson ids to push. Any size.
Poll a push run
/push-runs/:idReports progress for a background push - webhook or CRM. status is running, completed, or failed.
{
"data": {
"id": "...",
"channel": "webhook",
"record_type": "accounts",
"status": "running",
"total": 1200,
"sent": 500,
"failed": 0,
"skipped": 0,
"error_sample": [],
"created_at": "2026-07-11T...",
"finished_at": null
}
}id - dedupe on it downstream.