By Swetha Golla · ~6 min read · Senior Application Architect

TL;DR

Public API? REST. Cacheable, curl-able, and your consumers already know it.

Service-to-service inside your own walls? gRPC. Contracts, streaming, and protobuf serialization that's consistently ~3x faster than JSON (deserialization depends on payload size) — the perf and type-safety win. Not for a public API, though: browsers can't open a native gRPC connection, so external consumers would need grpc-web plus a translating proxy — real infrastructure most third parties won't build just to call you.

One backend feeding many divergent UIs? GraphQL — but only if you'll staff the schema like a product.