# Webhook vs REST API: Push vs Pull Explained

A REST API is pull: your app makes a request whenever it wants data or wants to act. A webhook is push: the source sends you data automatically when an event happens. They are complementary rather than competing. You typically call a REST API to fetch or change data on demand, and you register a webhook to be notified in real time instead of polling that same API on a loop.

## Webhooks vs REST API at a glance

|  | Webhooks (push) | REST API (pull) |
| --- | --- | --- |
| Who starts the exchange | The source, on an event | Your app, on demand |
| Timing | Real-time when something changes | Whenever you choose to call |
| Best for | Being notified of events | Fetching or modifying data |
| Real-time cost | One request per event | Constant polling to stay current |
| Direction | Source to your endpoint | Your app to the source |

## When to use each

Use a REST API when you need to request specific data or perform an action at a time you control.

Use webhooks when you need to know about changes as they happen without polling. For real-time integrations the two work together: the webhook tells you an event occurred, and you often call the REST API to fetch the full record behind it.

## How Hookdeck fits

Choosing webhooks over constant REST polling trades wasted requests for delivery responsibility: retries, signature verification, ordering, and visibility into failures. Hookdeck's Event Gateway provides that layer so you get real-time push without building the reliability plumbing, and you can still call the source's REST API for the details. [See the Event Gateway](https://hookdeck.com/event-gateway), or replay and inspect payloads with the [CLI](https://hookdeck.com/docs/cli).

## Related questions

* [Webhook vs API Polling](/webhooks/faq/webhook-vs-api-polling)
* [When to use webhooks](/webhooks/guides/when-to-use-webhooks)
* [Webhook vs WebSocket vs SSE](/webhooks/faq/webhook-vs-websocket-vs-sse)