Creating a Loop
https and publicly reachable. On success, you’ll get back the Loop along with a signing secret — shown once, at creation:
Sending records to a Loop
POST /v1/companies/enrich — you get the same task response immediately, and can still poll it if you like — but once the enrichment finishes, we also POST the result to your Loop’s webhook.
The webhook we send you
event is one of task.succeeded, task.failed, or test (sent when you use the Send test event button in the dashboard).
X-EnrichLoop-Delivery-Id is stable across retries of the same delivery — use it to deduplicate on your end.
Respond with any 2xx status to acknowledge receipt. Anything else is treated as a failure and retried.
Verifying webhook signatures
Every webhook is signed with your Loop’s secret, using the same scheme as Stripe:{timestamp}.{raw request body}. Verify it like this:
Retries
If your endpoint doesn’t respond with a2xx, we retry automatically:
After the final attempt, delivery is marked failed. You can see delivery history and retry manually from your dashboard.
Managing Loops
See the API Reference for the fullGET/PATCH/DELETE schemas on /v1/loops/{id}. Disabling a Loop stops new runs from being accepted through it; existing tasks already in flight still complete.