Skip to content
Latchkey

grpcurl describe: Inspect gRPC Messages and Methods

grpcurl describe <symbol> prints the definition of a gRPC service, method, or message so you know the request shape.

Before calling a method you need its request type. describe shows the schema of any symbol, and with -msg-template it prints a blank JSON template of a message you can fill in.

What it does

grpcurl describe <symbol> prints the protobuf definition of a service, method, or message type, resolved via reflection or local .proto files. Adding -msg-template to a message type outputs a JSON skeleton with default fields, giving you the exact shape to pass to -d for a call.

Common usage

Terminal
grpcurl -plaintext localhost:50051 describe my.package.Greeter
grpcurl -plaintext localhost:50051 describe my.package.Greeter.SayHello
# JSON template for a request message
grpcurl -plaintext -msg-template localhost:50051 \
  describe my.package.HelloRequest

Options

FlagWhat it does
describe [symbol]Describe a service, method, or message
-msg-templatePrint a JSON template for a message type
-plaintextCleartext connection (no TLS)
-proto / -import-pathResolve symbols from local .proto files

In CI

describe -msg-template is a quick way to generate the -d payload for a smoke test without hand-writing the JSON. When reflection is unavailable, describe still works if you point it at the .proto files with -proto and -import-path.

Common errors in CI

Failed to resolve symbol "X": Symbol not found means the service or message name is wrong or reflection lacks it; check the exact name with list. server does not support the reflection API means you must supply -proto files. A dial/connection refused error means the server is not up yet.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →