Every frame on the wire carries a 4-byte little-endian method_id. The IDL compiler writes the constants below into every SDK at build time. These constants are the source of truth.

Method table

method_id is a CRC32-based hash of service_name, method name, and the fully-qualified DTO names. It is stable across versions if none of those three change. Do not fork the table. If you change anything, regenerate the table from the IDL.

How to use

  1. Pick the method.
  2. Encode its request DTO as a serde envelope.
  3. Prepend the envelope header.
  4. Write the frame onto a fresh QUIC bidirectional stream.
For single-shot RPCs, the gateway responds on the same stream. For streaming methods like StreamEvents and AudioFrame, it responds on a server-initiated unidirectional stream.

Method semantics

Place a single outbound call. The gateway assigns a call_sid if the request omits one. Later state changes arrive as CallEvents on the event stream that you subscribed to via StreamEvents.
The bulk dialer. It reads phone numbers from csv_url. It paces at calls_per_second and caps at max_concurrent_calls. AbortBulk cancels a campaign by campaign_id.
Hang up an active call by call_sid.
Subscribe to call lifecycle events. The client_id should be a stable UUID per process. The gateway uses it to demux uni-streams across many parallel SDK instances.
Tell the gateway what to do with PSTN-originated calls that hit trunk_id. The options are: reject, play and hangup, fire a webhook, or hand off to the AI bridge.
Poll incoming calls (per trunk). Answer one explicitly. Use these RPCs when the SDK acts as a click-to-answer agent instead of letting SetInboundRouting auto-handle the call.
Operational cleanup tooling. A “bucket” is a server-side set of calls that share an attribute that the gateway tracks for triage. Typical buckets are parked-too-long, abandoned, or orphaned (no SDK heartbeat). Use these RPCs to list stuck calls and act on them in bulk. The intended action is 0=hangup to clear them during ops incidents. These RPCs are not a transfer or conferencing primitive. The platform supports neither capability.
Override the in-flight dialplan for a call_sid: hang up, park, music-on-hold, playback, unpark+bridge, answer, or open the AI bidirectional stream.
The platform’s AI-network unblocker. While the AI talks, the gateway watches the inbound leg for the human caller’s voice (energy / VAD / semantic detection, per trunk via auto_bargein_mode). When the human starts to speak, the gateway gates the AI’s outbound audio within barge_in_patience_ms. The human is then heard immediately. This RPC is the explicit handle to trigger or arm barge-in for a call_sid. The per-call knobs auto_barge_in and barge_in_patience_ms on OriginateRequest arm it automatically. It is not the supervisor-injection feature found in legacy PBXs.
Bidirectional audio. You write outbound frames on a client → server uni-stream. Inbound frames arrive on a server → client uni-stream. See Audio Frames.