---
title: "Change call flow settings"
description: "Trillet OEM API: Send only the settings to change, nested as in the settings object."
openapi: /public/openapi/trillet-oem.yaml PATCH /partner/v1/tenants/{tenantId}/call-flows/{callFlowId}/settings
lastUpdated: "2026-10-28"
---

> **For AI agents:** the complete documentation index is at [llms.txt](https://docs.trillet.ai/llms.txt). Append `.md` to any page URL for its markdown version.

`PATCH https://api.trillet.ai/partner/v1/tenants/{tenantId}/call-flows/{callFlowId}/settings`

Send only the settings to change, nested as in the settings object. Values are not
converted, and a field this endpoint does not manage is refused with `400`
`unknown_setting`. If the flow has an active draft, the same settings are copied onto it.
Needs `resources:write`. `Idempotency-Key` is optional.

## Authentication

- `partnerKey` — http bearer (tpk_live_...)

## Header parameters

- `Idempotency-Key` (string) — Optional. Works as on the endpoints that require it.

## Request body

- Content type: `application/json`
  - request body (object)
    - `greeting` (object)
      - `inbound` (object)
        - `mode` (string, one of: aiFirst, customMessage, userFirst)
        - `text` (string)
        - `instructions` (string)
      - `outbound` (object)
        - `mode` (string, one of: aiFirst, customMessage, userFirst)
        - `text` (string)
        - `instructions` (string)
      - `delaySeconds` (number)
    - `speech` (object)
      - `responsiveness` (number)
      - `interruptionSensitivity` (number)
    - `recording` (object)
      - `enabled` (boolean)
    - `callHandling` (object)
      - `maxCallDurationSeconds` (integer)
      - `checkInAfterSeconds` (integer, one of: 10, 20, 30)
      - `checkInAttempts` (integer, one of: 0, 1, 2, 3)
      - `hangUpAfterCheckInSeconds` (integer, one of: 10, 20, 30)

## Response 200

The full settings after the change.
  - response
    - (allOf)
      - value (object)
        - `object` (string, required)
        - `callFlowId` (string, required)
        - `tenantId` (string, required)
        - `greeting` (object)
          - `inbound` (object)
            - mode: … (nested further)
            - text: … (nested further)
            - instructions: … (nested further)
          - `outbound` (object)
            - mode: … (nested further)
            - text: … (nested further)
            - instructions: … (nested further)
          - `delaySeconds` (number | null)
        - `speech` (object)
          - `responsiveness` (number | null)
          - `interruptionSensitivity` (number | null)
        - `recording` (object)
          - `enabled` (boolean | null)
        - `callHandling` (object)
          - `maxCallDurationSeconds` (integer | null)
          - `checkInAfterSeconds` (integer | null, one of: 10, 20, 30, null)
          - `checkInAttempts` (integer | null, one of: 0, 1, 2, 3, null)
          - `hangUpAfterCheckInSeconds` (integer | null, one of: 10, 20, 30, null)
        - `updatedAt` (string | null, date-time)
      - value (object)
        - `activeDraftUpdated` (boolean) — `true` when an active draft was updated too.

## Response 400

`unknown_setting` or `invalid_request`. `error.param` names the field.
  - response (object)
    - `error` (object, required)
      - `type` (string, required, one of: invalid_request_error, authentication_error, permission_error, conflict_error, rate_limit_error, api_error, idempotency_error)
      - `code` (string, required) — A stable code. Handle errors by `code`, not by `message`.
      - `message` (string, required)
      - `param` (string) — The request field the error is about, when there is one.
      - `requestId` (string | null) — Include it when you contact support. Not present on idempotency errors.

## Response 401

The partner key is missing, malformed, unknown or revoked (`partner_key_required`, `invalid_api_key`, `partner_not_enabled`).
  - response (object)
    - `error` (object, required)
      - `type` (string, required, one of: invalid_request_error, authentication_error, permission_error, conflict_error, rate_limit_error, api_error, idempotency_error)
      - `code` (string, required) — A stable code. Handle errors by `code`, not by `message`.
      - `message` (string, required)
      - `param` (string) — The request field the error is about, when there is one.
      - `requestId` (string | null) — Include it when you contact support. Not present on idempotency errors.

## Response 403

`missing_scope`, or `key_restricted` on webhook endpoint routes.
  - response (object)
    - `error` (object, required)
      - `type` (string, required, one of: invalid_request_error, authentication_error, permission_error, conflict_error, rate_limit_error, api_error, idempotency_error)
      - `code` (string, required) — A stable code. Handle errors by `code`, not by `message`.
      - `message` (string, required)
      - `param` (string) — The request field the error is about, when there is one.
      - `requestId` (string | null) — Include it when you contact support. Not present on idempotency errors.

## Response 404

`tenant_not_found` or `call_flow_not_found`.
  - response (object)
    - `error` (object, required)
      - `type` (string, required, one of: invalid_request_error, authentication_error, permission_error, conflict_error, rate_limit_error, api_error, idempotency_error)
      - `code` (string, required) — A stable code. Handle errors by `code`, not by `message`.
      - `message` (string, required)
      - `param` (string) — The request field the error is about, when there is one.
      - `requestId` (string | null) — Include it when you contact support. Not present on idempotency errors.

## Response 409

`call_flow_archived`, `hipaa_recording_conflict`, or an idempotency conflict.
  - response (object)
    - `error` (object, required)
      - `type` (string, required, one of: invalid_request_error, authentication_error, permission_error, conflict_error, rate_limit_error, api_error, idempotency_error)
      - `code` (string, required) — A stable code. Handle errors by `code`, not by `message`.
      - `message` (string, required)
      - `param` (string) — The request field the error is about, when there is one.
      - `requestId` (string | null) — Include it when you contact support. Not present on idempotency errors.


---

📦 **OpenAPI specs:** Every OpenAPI specification referenced by this documentation is available as a single download — https://docs.trillet.ai/api-specs.zip
