---
title: "k6/net/grpc | Grafana k6 documentation"
description: "k6 gRPC API"
---

# k6/net/grpc

The [`k6/net/grpc` module](/docs/k6/latest/javascript-api/k6-net-grpc/) provides a [gRPC](https://grpc.io/) client for Remote Procedure Calls (RPC) over HTTP/2.

Expand table

| Class/Method                                                                                                           | Description                                                                                                                                                 |
|------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Client](/docs/k6/latest/javascript-api/k6-net-grpc/client/)                                                           | gRPC client used for making RPC calls to a gRPC Server.                                                                                                     |
| [Client.load(importPaths, …protoFiles)](/docs/k6/latest/javascript-api/k6-net-grpc/client/client-load/)                | Loads and parses the given protocol buffer definitions to be made available for RPC requests.                                                               |
| [Client.connect(address \[,params\])](/docs/k6/latest/javascript-api/k6-net-grpc/client/client-connect/)               | Connects to a given gRPC service.                                                                                                                           |
| [Client.invoke(url, request \[,params\])](/docs/k6/latest/javascript-api/k6-net-grpc/client/client-invoke/)            | Makes an unary RPC for the given service/method and returns a [Response](/docs/k6/latest/javascript-api/k6-net-grpc/response/).                             |
| [Client.asyncInvoke(url, request \[,params\])](/docs/k6/latest/javascript-api/k6-net-grpc/client/client-async-invoke/) | Asynchronously makes an unary RPC for the given service/method and returns a Promise with [Response](/docs/k6/latest/javascript-api/k6-net-grpc/response/). |
| [Client.close()](/docs/k6/latest/javascript-api/k6-net-grpc/client/client-close/)                                      | Close the connection to the gRPC service.                                                                                                                   |
| [Params](/docs/k6/latest/javascript-api/k6-net-grpc/params/)                                                           | RPC Request specific options.                                                                                                                               |
| [Response](/docs/k6/latest/javascript-api/k6-net-grpc/response/)                                                       | Returned by RPC requests.                                                                                                                                   |
| [Constants](/docs/k6/latest/javascript-api/k6-net-grpc/constants/)                                                     | Define constants to distinguish between [gRPC Response](/docs/k6/latest/javascript-api/k6-net-grpc/response/) statuses.                                     |
| [Stream(client, url, \[,params\])](/docs/k6/latest/javascript-api/k6-net-grpc/stream/)                                 | Creates a new gRPC stream.                                                                                                                                  |
| [Stream.on(event, handler)](/docs/k6/latest/javascript-api/k6-net-grpc/stream/stream-on/)                              | Adds a new listener to one of the possible stream events.                                                                                                   |
| [Stream.write(message)](/docs/k6/latest/javascript-api/k6-net-grpc/stream/stream-write/)                               | Writes a message to the stream.                                                                                                                             |
| [Stream.end()](/docs/k6/latest/javascript-api/k6-net-grpc/stream/stream-end/)                                          | Signals to the server that the client has finished sending.                                                                                                 |
| [EventHandler](/docs/k6/latest/javascript-api/k6-net-grpc/stream/event-handler/)                                       | The function to call for various events on the gRPC stream.                                                                                                 |
| [Metadata](/docs/k6/latest/javascript-api/k6-net-grpc/stream/message-metadata/)                                        | The metadata of a gRPC stream’s message.                                                                                                                    |

## gRPC metrics

k6 takes specific measurements for gRPC requests. For the complete list, refer to the [Metrics reference](/docs/k6/latest/using-k6/metrics/reference/#grpc).

## Example

JavaScript ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```javascript
import grpc from 'k6/net/grpc';
import { check, sleep } from 'k6';

const client = new grpc.Client();
client.load(null, 'quickpizza.proto');

export default () => {
  client.connect('grpc-quickpizza.grafana.com:443', {
    // plaintext: false
  });

  const data = { ingredients: ['Cheese'], dough: 'Thick' };
  const response = client.invoke('quickpizza.GRPC/RatePizza', data);

  check(response, {
    'status is OK': (r) => r && r.status === grpc.StatusOK,
  });

  console.log(JSON.stringify(response.message));

  client.close();
  sleep(1);
};
```
