---
title: "gRPC"
---

{/* Auto-generated by scripts/generate_core_action_docs.py; do not edit by hand. */}

## `core.grpc.request`

Call a gRPC method using a runtime-compiled protobuf definition.

### Secrets

Optional secrets:

- `grpc_mtls`: required values `TLS_CERTIFICATE`, `TLS_PRIVATE_KEY`.
- `grpc_ca_cert`: required values `CA_CERTIFICATE`.

### Inputs

<ParamField path="method_name" type="string" required>

gRPC method name (e.g., 'Query').

</ParamField>

<ParamField path="proto" type="string" required>

Inline .proto definition.

</ParamField>

<ParamField path="service_name" type="string" required>

gRPC service name (e.g., 'API').

</ParamField>

<ParamField path="target" type="string" required>

gRPC server address in host:port format.

</ParamField>

<ParamField path="insecure" type="boolean">

Use an insecure plaintext channel. Defaults to False (TLS channel).

Default: `false`.

</ParamField>

<ParamField path="payload" type="object | null">

Request payload as a dict matching the protobuf schema.

Default: `null`.

</ParamField>

<ParamField path="timeout_seconds" type="number | null">

Timeout in seconds for the RPC. Defaults to no timeout.

Default: `null`.

</ParamField>

### Examples

**Call a gRPC service**

```yaml
- ref: grpc_query
  action: core.grpc.request
  args:
    target: grpc.example.com:443
    service_name: Alerts
    method_name: GetAlert
    proto: |
      syntax = "proto3";

      package alerts;

      service Alerts {
        rpc GetAlert (GetAlertRequest) returns (AlertResponse);
      }

      message GetAlertRequest {
        string id = 1;
      }

      message AlertResponse {
        string id = 1;
        string severity = 2;
      }
    payload:
      id: ${{ TRIGGER.alert_id }}
```
