Open source



Starting on k6 v0.49, the experimental module k6/experimental/grpc has been graduated, and its functionality is now available in the k6/net/grpc module. The k6/experimental/grpc is deprecated and will be removed in v0.51.0.

To migrate your scripts, replace all k6/experimental/grpc imports with k6/net/grpc.

Params is an object used by the gRPC methods that generate RPC requests. Params contains request-specific options like headers that should be inserted into the request.

Params.metadataobjectObject with key-value pairs representing custom metadata the user would like to add to the request. Values of keys ending with -bin will be treated as binary data.
Params.tagsobjectKey-value pairs where the keys are names of tags and the values are tag values. Response time metrics generated as a result of the request will have these tags added to them, allowing the user to filter out those results specifically, when looking at results data.
Params.timeoutstring / numberRequest timeout to use. Default timeout is 60 seconds ("60s").
The type can also be a number, in which case k6 interprets it as milliseconds, e.g., 60000 is equivalent to "60s".

Example of custom metadata headers and tags

import grpc from 'k6/experimental/grpc';

const client = new grpc.Client();
client.load([], 'route_guide.proto');

export default function () {
  const req = {
    latitude: 410248224,
    longitude: -747127767,
  const params = {
    metadata: {
      'x-my-header': 'k6test',
      'x-my-header-bin': new Uint8Array([1, 2, 3]),
    tags: { k6test: 'yes' },
  const response = client.invoke('main.RouteGuide/GetFeature', req, params);