Webhooks
Webhook events, delivery pacing, retries and backoff, delivery history in the app, and OpenAPI.
| Event | When it fires | Specification |
|---|---|---|
match.created | SnitchFeed stored a new match for your organization (listener matched a post or comment) and routed it to this endpoint. | Event and JSON body |
match.resent | Someone queued an existing match from the app (Send to webhook). Same JSON body shape as match.created. | Same body as match.created |
Set up webhooks
Add or manage HTTPS destinations in the product: Integrations → Webhooks.
Delivery pacing
Each webhook destination has two independent, configurable limits (set in Integrations → Webhooks → Advanced in the app):
- Requests per minute — defaults to 10 deliveries per sliding 60-second window.
- Concurrent requests — defaults to 1 in-flight delivery at a time.
Tools like n8n, Zapier, and similar automation endpoints often fail or drop work when too many requests land at once — n8n, for example, drops anything beyond its configured inflight limit (5 by default) regardless of how spread out those requests are over time. That's why concurrency and rate are separate knobs: a per-minute cap alone can't stop a burst of simultaneous deliveries from tripping a destination's own inflight limit. Raise either limit for destinations that can handle more throughput (e.g. Clay, Make.com scenarios backed by a higher-throughput API step).
These per-destination limits are separate from retries on a single delivery (below): pacing spreads distinct matches across time and concurrency; backoff spaces repeated attempts for one failed delivery.
Retries and exponential backoff
If your endpoint returns a non-2xx response, times out, or cannot be reached, SnitchFeed retries that delivery using BullMQ exponential backoff.
- Attempts: Each delivery job runs up to 10 attempts in total—that includes the first POST, so you get up to 9 automatic retries after failures.
- Backoff: Retries use an exponential strategy with a 30 second base delay. Waits grow from that base (each delay roughly doubles), so we do not hammer your URL while transient errors or short outages recover.
- 404: If your endpoint keeps returning 404, we treat that as a broken URL. After enough failed attempts we deactivate that webhook in the app so it does not retry indefinitely. Other error codes still follow the backoff rules until attempts are exhausted.
Timeouts and payload expectations for a single POST are documented on match.created (match.resent uses the same body).
Delivery history in the app
To audit what we sent—timestamps, HTTP codes, response snippets, and status—open the product: Integrations → Webhooks → Log (requires a plan that includes webhooks). You can filter by status, endpoint, and date range, page through results, and expand a row to read the full stored response body when available.
OpenAPI
Machine-readable contract: GET https://api.snitchfeed.com/v1/openapi.json — see webhooks.match.created.
Credits
How the HTTP API uses your organization credit balance.
Search Tweets POST
Search public posts on X (Twitter). ### Credits Each **successful** response deducts **2 credits** from your organization. Requests that fail (4xx / 5xx) are not billed. See the [credits documentation](https://snitchfeed.com/docs/api/credits) for the full rate table.