---
title: "Update strategy carrier"
method: PATCH
path: "/api/v1/strategies/{strategyId}/carriers/{id}"
tags: ["strategy-carriers"]
---

# Update strategy carrier

`PATCH /api/v1/strategies/{strategyId}/carriers/{id}`

Partially updates a strategy carrier by its identifier. The composite key (strategy, carrier) is immutable; delivery_type_codes may be replaced as long as each referenced delivery type exists and is active.

## Path parameters

- `strategyId` string, uuid, required
- `id` string, uuid, required

## Request body

- StrategyCarrierUpdate
  - `active` boolean
  - `holidays_open` boolean
  - `delivery_type_codes` string[]
  - `delivery_modalities` string[]
  - `channel_codes` string[]
  - `coverage_area` CoverageAreaUpdate
    - `type` 'STATES' | 'CITIES' | 'ZIP_RANGES' | 'POLYGON', required
    - `states` string[]
    - `cities` CoverageCityUpdate[]
      - `city` string, required
      - `state` string, required
    - `ranges` CoverageZipRangeUpdate[]
      - `start` string, required
      - `end` string, required
    - `polygon` PolygonGeometryUpdate
      - `type` 'Polygon', required
      - `coordinates` array[], required
        - array[]
          - number[]
  - `freight_rules` StrategyCarrierFreightRulesUpdate
    - `sla_hours` number, required
    - `fixed_cost` number, required
    - `cost_per_kg` number, required
  - `operating_hours` StrategyCarrierOperatingHourUpdate[], nullable
    - `day` string, required
    - `open` string, required
    - `close` string, required
  - `holidays_hours` StrategyCarrierHolidaysHoursUpdate
    - `open` string, required
    - `close` string, required
  - `metadata` object, nullable

## Response `200`

Strategy carrier updated.

- StrategyCarrierUpdateResponse
  - `id` string, required
  - `strategy_id` string, required
  - `carrier_id` string, required
  - `delivery_type_codes` string[], required
  - `active` boolean, required
  - `holidays_open` boolean, required
  - `delivery_modalities` string[], required
  - `channel_codes` string[], required
  - `coverage_area` object, nullable, required
  - `freight_rules` object, required
    - `value` object, required
      - `sla_hours` number
      - `fixed_cost` number
      - `cost_per_kg` number
    - `inherited` boolean, required
  - `operating_hours` object, required
    - `value` object[]
      - `day` string, required
      - `open` string, required
      - `close` string, required
    - `inherited` boolean, required
  - `holidays_hours` object, required
    - `open` string, required
    - `close` string, required
  - `carrier_active` boolean, required
  - `carrier` object, required
    - `name` string, required
    - `code` string, required
    - `capabilities` object, required
      - `tracking` boolean
      - `same_day` boolean
      - `returns` boolean
  - `metadata` object, nullable, required
  - `created_at` string, required
  - `updated_at` string, required

## Other responses

- `400` — Request payload, query string, or path parameter failed validation.
- `401` — Authentication is missing, malformed, expired, or refers to a session that is no longer active.
- `403` — The caller is authenticated but lacks the required permission for this action.
- `404` — One of the referenced resources (Strategy, StrategyCarrier, DeliveryType) was not found in the caller account.
- `422` — The payload passed schema validation but breaks a domain invariant — typically an inactive delivery type or an invalid coverage definition.
- `500` — Unexpected server error. The response body never leaks internal details.

## Changes

- **2026-07-07** `a3b4750a505f` — 27 info
  - added the new optional request property `active`
  - added the new optional request property `channel_codes`
  - added the new optional request property `coverage_area`
  - added the new optional request property `delivery_modalities`
  - …23 more
- **2026-07-07** `84194c31ab85` — 17 breaking, 10 warning
  - removed the required property `active` from the response with the `200` status
  - removed the required property `carrier` from the response with the `200` status
  - removed the required property `carrier_active` from the response with the `200` status
  - removed the required property `carrier_id` from the response with the `200` status
  - …23 more

[Change history](https://skmtc.dev/kruzer-corp/apis/oms-api/changes/api/v1/strategies/:strategyId/carriers/:id/patch.md)

---

[API](https://skmtc.dev/kruzer-corp/apis/oms-api.md) · [All operations](https://skmtc.dev/kruzer-corp/apis/oms-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kruzer-corp/oms-api/revisions/38ef6e16a7a8/schema)
