---
title: "Update Contract"
method: PATCH
path: "/api/v1/admin/distributors/contracts/{contract_id}"
tags: ["Admin APIs", "distributors", "Wholesale Distribution"]
---

# Update Contract

`PATCH /api/v1/admin/distributors/contracts/{contract_id}`

Rename a contract (PRO-2305). Terms, TOU, and tiers have their own
dedicated edit endpoints; only the operator-facing name is set here.

## Path parameters

- `contract_id` string, uuid, required

## Request body

- ContractUpdateRequest — Fields editable on a contract after creation (PRO-2305 / PRO-2675). The operator-facing name and the contract-level provisioning template are editable; terms, TOU, and tiers have their own dedicated edit paths. Either field may be omitted independently — omit name so a template-only save works on legacy contracts with ``name: null``.
  - `name` string, nullable
  - `signup_plan_id` string, nullable

## Response `200`

Successful Response

- DistributorContractDetail
  - `id` string, uuid4, required
  - `name` string, nullable
  - `status` string, required
  - `contract_starts_at` string, date, nullable
  - `contract_term_months` integer, required
  - `term_end` string, date, nullable
  - `account_manager` string, nullable
  - `signup_plan_id` string, nullable
  - `template` DistributorTierTemplate — Read-only snapshot of the tier's provisioning template, composed from the tier's signup plan config (features/flags/team management actions) and the plan's provider channel restrictions.
    - `plan_id` string, required
    - `display_name` string, nullable
    - `features` string[]
    - `feature_flags` object[]
    - `seat_limit` integer, nullable
    - `assignable_role_ids` string[]
    - `default_role` string, required
    - `providers` DistributorTemplateProvider[]
      - `code_name` string, required
      - `api_access_denied` boolean, required
      - `mcp_access_denied` boolean, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `active_accounts` integer, required
  - `total_accounts` integer, nullable
  - `tou` DistributorTouRead
    - `id` string, uuid4, required
    - `family_id` string, uuid4, required
    - `name` string, required
    - `version` string, required
    - `body` string, required
    - `document_url` string, nullable
    - `requires_reaccept` boolean
    - `status` string, required
    - `updated_at` string, date-time, nullable
  - `tou_versions` DistributorTouRead[]
    - `id` string, uuid4, required
    - `family_id` string, uuid4, required
    - `name` string, required
    - `version` string, required
    - `body` string, required
    - `document_url` string, nullable
    - `requires_reaccept` boolean
    - `status` string, required
    - `updated_at` string, date-time, nullable
  - `tiers` DistributorTierDetail[]
    - `id` string, uuid4, required
    - `name` string, nullable
    - `slots_purchased` integer, required
    - `slots_occupied` integer, required
    - `slots_available` integer, required
    - `wholesale_price_cents` integer, nullable
    - `mcp_mapping_id` string, uuid4, nullable
    - `mcp_daily_token_cap` integer, nullable
    - `status` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api.md) · [All operations](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/carbonarc/carbon-arc-client-admin-api/revisions/a8ca30023371/schema)
