GraphQL: Clients specify exactly what data they need. One endpoint, flexible queries. Reduces over-fetching (getting too much data) and under-fetching (needing multiple requests). Good for complex UIs with varied data needs.
gRPC: Uses Protocol Buffers for binary serialization. Faster than JSON. Supports streaming. Common for service-to-service communication where performance matters.
REST remains the default for most public APIs. Use GraphQL for complex client needs. Use gRPC for internal microservices.