# Method IDs

> The full set of RPC methods and their u32 method_id constants.

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

## Method table

| Method                  | `method_id` (decimal) | `method_id` (hex) | Request DTO                  | Response DTO                  |
| ----------------------- | --------------------: | ----------------- | ---------------------------- | ----------------------------- |
| `Originate`             | `1430677891`          | `0x554d_8a83`     | `OriginateRequest`           | `OriginateResponse`           |
| `OriginateBulk`         | `721069100`           | `0x2af9_a52c`     | `BulkRequest`                | `BulkResponse`                |
| `AbortBulk`             | `3861915064`          | `0xe629_4af8`     | `AbortBulkRequest`           | `BulkResponse`                |
| `Terminate`             | `3834253405`          | `0xe486_24dd`     | `TerminateRequest`           | `TerminateResponse`           |
| `StreamEvents`          | `959835745`           | `0x3935_e0e1`     | `EventStreamRequest`         | `CallEvent` (server-streamed) |
| `SetInboundRouting`     | `1933986897`          | `0x7345_15d1`     | `SetInboundRoutingRequest`   | `Empty`                       |
| `GetIncomingCalls`      | `1161946746`          | `0x4540_dffa`     | `GetIncomingCallsRequest`    | `GetIncomingCallsResponse`    |
| `AnswerIncomingCall`    | `2990157256`          | `0xb234_0e08`     | `AnswerIncomingCallRequest`  | `AnswerIncomingCallResponse`  |
| `GetActiveBuckets`      | `2624504207`          | `0x9c70_734f`     | `Empty`                      | `ListBucketsResponse`         |
| `GetBucketCalls`        | `1217351135`          | `0x489c_d49f`     | `BucketRequest`              | `BucketCallList`              |
| `ExecuteBucketAction`   | `4030863293`          | `0xf04f_36fd`     | `BucketActionRequest`        | `BucketActionResponse`        |
| `ExecuteDialplan`       | `3514036100`          | `0xd166_7944`     | `ExecuteDialplanRequest`     | `ExecuteDialplanResponse`     |
| `Barge`                 | `3854301714`          | `0xe5b0_6412`     | `BargeRequest`               | `Empty`                       |
| `AudioFrame`            | `2991054320`          | `0xb241_b9b0`     | `AudioFrame` (uni-stream)    | `AudioFrame` (uni-stream)     |
| `ReloadCertificates`    | `3357922138`          | `0xc827_06da`     | `Empty` (admin)              | `Empty`                       |

`method_id` is a CRC32-based hash of `service_name`, method name, and the
fully-qualified DTO names. It is stable across versions as long as none of
those three change. **Don't fork the table** — regenerate it from the IDL
if you change anything.

## How to use

Pick the method, encode its request DTO as a serde envelope, prepend the
[envelope header](/rpc/envelope-format), and write it onto a fresh QUIC
bidirectional stream. The gateway responds on the same stream (for
single-shot RPCs) or on a server-initiated unidirectional stream (for
streaming methods like `StreamEvents` and `AudioFrame`).

## Method semantics

<AccordionGroup>
  <Accordion title="Originate">
    Place a single outbound call. The gateway assigns a `call_sid` if the
    request omits one. Subsequent state changes arrive as `CallEvent`s on
    the event stream subscribed via `StreamEvents`.
  </Accordion>
  <Accordion title="OriginateBulk / AbortBulk">
    Bulk dialer. Reads phone numbers from `csv_url`, paces at
    `calls_per_second`, caps at `max_concurrent_calls`. `AbortBulk` cancels
    a campaign by `campaign_id`.
  </Accordion>
  <Accordion title="Terminate">
    Hang up an active call by `call_sid`.
  </Accordion>
  <Accordion title="StreamEvents">
    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.
  </Accordion>
  <Accordion title="SetInboundRouting">
    Tell the gateway what to do with PSTN-originated calls hitting `trunk_id`:
    reject, play and hangup, fire a webhook, or hand off to the AI bridge.
  </Accordion>
  <Accordion title="GetIncomingCalls / AnswerIncomingCall">
    Poll incoming calls (per trunk) and answer one explicitly. Use this when
    the SDK is acting as a click-to-answer agent rather than letting
    `SetInboundRouting` auto-handle.
  </Accordion>
  <Accordion title="GetActiveBuckets / GetBucketCalls / ExecuteBucketAction">
    Operational cleanup tooling. A "bucket" is a server-side set of calls
    that share an attribute the gateway tracks for triage — typically
    parked-too-long, abandoned, or orphaned (no SDK heartbeat). Use these
    RPCs to enumerate stuck calls and bulk-act on them. The intended
    `action` is `0=hangup` to clear them during ops incidents.
    These are **not** a transfer or conferencing primitive — neither
    capability is supported on this platform.
  </Accordion>
  <Accordion title="ExecuteDialplan">
    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.
  </Accordion>
  <Accordion title="Barge">
    The platform's **AI-network unblocker**. While the AI is talking,
    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 speaking, the AI's outbound audio is gated
    within `barge_in_patience_ms` so the human is 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.
    **Not** the supervisor-injection feature found in legacy PBXs.
  </Accordion>
  <Accordion title="AudioFrame">
    Bidirectional audio. Outbound frames are written on a client → server
    uni-stream; inbound frames arrive on a server → client uni-stream.
    See [Audio Frames](/rpc/audio-frames).
  </Accordion>
</AccordionGroup>
