gRPC is an efficient RPC implementation and can be used to implement APIs. It has a language-neutral and platform-neutral specification, and SDKs for many languages and platforms, so it can be used widely, for communication across platforms and languages. gRPC is super fast and efficient because it uses Protocol Buffers (protobufs) to (de-)serialize the service- and message-data into binary streams, the HTTP/2 standard for optimized binary transfers, and bidirectional streaming to avoid (long) polling and blocking HTTP calls. gRPC is used by Square, Netflix, CoreOS, Docker, and Google. To learn more about gRPC visit https://www.grpc.io
gRPC vs REST
gRPC has HTTP semantics using modern HTTP/2. In addition, it allows for full-duplex streaming. gRPC allows only for static paths, so there is no support for path parameters or query parameters. All parameters need to be passed via the payload body. This provides higher performance, lower latency, and lower complexity. There are formalized errors for APIs, which differ from the HTTP status codes.