Tools
Webhooks
This API does not emit webhooks. Nothing subscribes, nothing is delivered, and there is no signing secret to configure for it.
A correction, not a roadmap note
An earlier version of this documentation listed six event types and described subscribing to them in the dashboard. Nothing emitted any of them. They are gone rather than reworded, because a reader who built against that list built against nothing.
What to do instead
The thing a webhook would have told you is that new data arrived, and /v1/sync already answers that. It is the cheapest endpoint in the API, so polling it and reacting to a change in data_fresh_as_of gets you the same behaviour with an extra interval of latency and no delivery infrastructure on either side.
TypeScript
// Poll the cheapest endpoint, act only when the data actually moved.let seen: Record<string, string | null> = {}; setInterval(async () => { const { data: platforms } = await cresva.v1.getSyncState({ brandId }); const moved = platforms.filter( (p) => p.data_fresh_as_of && p.data_fresh_as_of !== seen[p.platform], ); if (!moved.length) return; moved.forEach((p) => (seen[p.platform] = p.data_fresh_as_of)); await refreshYourNumbers(); // the expensive call, now earned}, 15 * 60 * 1000);- Platform data lands on a schedule measured in hours, so a fifteen minute poll is not a compromise. It is finer grained than the thing it is watching.
- One
/v1/synccall per interval is a rounding error against any plan’s budget. See rate limits. - You keep the retry semantics. A poll that fails is one you repeat; a webhook that fails is one somebody has to replay.
If you need push
Tell us what event and what you would do when it arrives. The reason this is not built is that nobody has needed it enough to say so, and the polling pattern above covers the case it would have served. A specific request is what would change that.