← Back to Overview

PROTOCOLS

gRPC

Full gRPC API testing with unary and server-streaming calls — proto file loading, service/method picker, metadata headers, auth, TLS certificates, and grpcurl code export.

Connection

gRPC mode is activated by entering a grpc:// or grpcs:// URL scheme in the address bar.

Protocol selector auto-switches to gRPC mode
Send button becomes Invoke / Cancel
HTTP method selector is hidden (not applicable to gRPC)
Available tabs: Metadata, Auth, Settings
SchemeTransportExample
grpc://Plaintext (no TLS)grpc://localhost:50051
grpcs://TLS encryptedgrpcs://api.example.com:443

Proto File Loading

gRPC services are defined in .proto files. API Studio parses these to discover available services and methods.

Click Pick Proto File to select a .proto definition from disk
File parsed using @grpc/proto-loader (pure Node.js, esbuild compatible)
Services and methods auto-populate in dropdown selectors
Proto file path stored with the request (protoFilePath, protoFileName)
Manual service/method entry available as fallback when proto is unavailable
Tip: The proto file only needs to be loaded once per request — it's remembered in the saved request configuration.

Service & Method Selection

After loading a proto file, the discovered services and methods appear in dropdown selectors.

Each method shows its request and response message types
Changing method clears the message body editor
Call type (unary vs server-streaming) is auto-detected from the proto definition

Stored configuration (GrpcConfig):

{
  "protoFilePath": "/path/to/service.proto",
  "protoFileName": "service.proto",
  "serviceName": "greeter.GreeterService",
  "methodName": "SayHello",
  "callType": "unary",
  "messageBody": "{ \"name\": \"World\" }"
}

Call Types

API Studio supports two gRPC call patterns:

Unary

Single request → single response. Result shown as a standard API response with status, time, and JSON body. Same response viewer as HTTP requests.

Server Streaming

Single request → stream of responses. Messages arrive in real-time with timestamps in a dedicated message log. Stream duration is shown. Click Cancel to stop mid-stream.

Not yet supported: Client streaming and bidirectional streaming are deferred to a future release.

Metadata Tab

gRPC metadata headers are the equivalent of HTTP headers — key-value pairs sent alongside the RPC call.

Same key-value row editor as HTTP headers (key, value, enabled toggle)
Supports {{variables}} in values — resolved from the active environment

Common metadata keys:

authorization x-request-id x-trace-id x-api-key grpc-timeout

Auth & TLS

All authentication types are supported for gRPC — credentials are injected as metadata headers.

Auth TypeInjection
Bearerauthorization: Bearer <token>
Basicauthorization: Basic <base64>
API KeyCustom metadata key with value

TLS Certificates

Select client certificate, private key, and CA bundle from the vault in the Settings tab
Certificate inheritance: request → folder → collection
grpcs:// auto-uses TLS; grpc:// connects in plaintext

Code Export (grpcurl)

The code export panel includes a grpcurl option that generates equivalent CLI commands for your gRPC request.

Generated flags:

FlagPurpose
-plaintextUsed for grpc:// (insecure connections)
-protoPath to the .proto file
-HMetadata headers (one per key-value pair)
-dJSON message body

Example output:

grpcurl -plaintext \
  -proto ./service.proto \
  -H 'authorization: Bearer {{token}}' \
  -d '{"name": "World"}' \
  localhost:50051 greeter.GreeterService/SayHello

Current Limitations

The gRPC client covers the most common use cases. These features are planned for future releases:

FeatureStatus
Client streamingNot yet supported
Bidirectional streamingNot yet supported
Server reflectionuseReflection field exists but not yet implemented
Nested proto importsMay require specifying include paths manually
Binary/protobuf response displayShown as JSON (decoded via proto definition)

Next

Ko-fi