---
title: "Gather"
method: POST
path: "/calls/{call_control_id}/actions/gather"
tags: ["Call Commands"]
---

# Gather

`POST /calls/{call_control_id}/actions/gather`

Gather DTMF signals to build interactive menus.

You can pass a list of valid digits. The `Answer` command must be issued before the `gather` command.

**Expected Webhooks:**

- `call.dtmf.received` (you may receive many of these webhooks)
- `call.gather.ended`

## Path parameters

- `call_control_id` string, required

## Request body

- GatherRequest
  - `minimum_digits` integer — The minimum number of digits to fetch. This parameter has a minimum value of 1.
  - `maximum_digits` integer — The maximum number of digits to fetch. This parameter has a maximum value of 128.
  - `timeout_millis` integer — The number of milliseconds to wait to complete the request.
  - `inter_digit_timeout_millis` integer — The number of milliseconds to wait for input between digits.
  - `initial_timeout_millis` integer — The number of milliseconds to wait for the first DTMF.
  - `terminating_digit` string — The digit used to terminate input if fewer than `maximum_digits` digits have been gathered. Set to an empty string to disable the terminating digit entirely, so that a digit such as `#` can be collected as input per `valid_digits`.
  - `valid_digits` string — A list of all digits accepted as valid.
  - `gather_id` string — An id that will be sent back in the corresponding `call.gather.ended` webhook. Will be randomly generated if not specified.
  - `client_state` string — Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
  - `command_id` string — Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id` for the same `call_control_id`.

## Response `200`

Successful response upon making a call control command.

- object
  - `data` CallControlCommandResult
    - `result` string

## Other responses

- `422` — Unprocessable entity. The request was well-formed but could not be processed due to semantic errors. This includes validation errors, invalid parameter values, call state errors, conference errors, queue errors, recording/transcription errors, and business logic violations.
- `default` — Unexpected error

## Changes

> 82 revisions in range; 1 not diffed.

- **2026-08-17** `1571b0380bd7` — 3 breaking
  - the response's body type changed from `object` to no type for status `default`
  - the `errors/items/` response's property type changed from `object` to no type for status `default`
  - the `errors/items/code` response's property type changed from `integer` to `string`, and format from `int32` to `integer` for status `default`
- **2026-08-04** `8f5f4e537994` — 4 breaking
  - the response's body type changed from no type to `object` for status `default`
  - the `errors/items/` response's property type changed from no type to `object` for status `default`
  - the `errors/items/code` response's property type changed from `string` to `integer`, and format from `integer` to `int32` for status `default`
  - the `errors/items/source/pointer` response's property format changed from `json-pointer` to no format for status `default`

[Change history](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/changes/calls/:call_control_id/actions/gather/post.md)

---

[API](https://skmtc.dev/team-telnyx/apis/telnyx-api-2.md) · [All operations](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/revisions/16bfa298dc71?raw)
