A short, opinionated guide to when gRPC pays for itself and when REST is still the right answer. With examples from our agentic AI platform — including the parts I got wrong first.

The moment it clicked

I had spent two days chasing a payload-shape bug between two of our services. JSON, no schema, “we agreed on it in Slack.” A colleague rewrote both ends in gRPC over an afternoon. The bug class disappeared. The conversation moved from what shape is this? to what should this do?

When I reach for gRPC

  • Service-to-service calls inside the cluster.
  • Anywhere streaming or backpressure actually matters.
  • Cross-language calls where the type system is the contract.

When I still pick REST

  • Anything a browser will touch.
  • Webhooks and public APIs.
  • One-off scripts and admin tools where curl matters.

The rule that finally settled it for me: use gRPC where the consumer is a program you also own; use REST where the consumer is the rest of the internet.