The options
REST
Request and response, over HTTP.
Standard CRUD over resources, public web APIs, and anywhere you want the simplest thing that works and HTTP caching helps.
GraphQL
One query returns exactly the fields you asked for.
Rich clients that each want different shapes of the same data, where fixed endpoints cause over-fetching and endpoint sprawl.
gRPC
Binary messages over HTTP/2, fast and strongly typed.
Internal service-to-service calls where speed matters and you can share a typed contract (.proto) across polyglot microservices.
WebSocket
One open pipe, two-way, real-time.
Chat, presence, live cursors, and anything where either side sends messages at any time over a persistent connection.
SSE
The server streams events to you, one-way.
One-way live updates like feeds, prices, and token streams, where you want push without WebSocket complexity and get auto-reconnect for free.
Webhooks
Don't call them, they'll call you.
Reacting to events from Stripe, GitHub, and other providers, so you stop polling and let them POST to your URL when something happens.
Which one fits you?
Answer a few questions to get a recommendation.
Question 1 of 4