---
title: "Update a delivery"
method: PATCH
path: "/deliveries/{id}"
tags: ["Deliveries"]
---

# Update a delivery

`PATCH /deliveries/{id}`

## Request

- Base URL: `https://api.indexone.io`
- URL: `https://api.indexone.io/deliveries/{id}`
- Auth: API key in header `x-api-key` and API key in header `Authorization`

Partially updates a delivery. **Here `{id}` is the DELIVERY id**, unlike the `GET` on this same path, which takes the team id.

`id`, `type`, `team_id` and `created_at` are blacklisted and dropped. Sending a field with the value `null` **removes** that attribute from the row rather than setting it to null — this is how you clear an optional config block.

Every patch notifies the coordinator to reload the delivery, because any field can change execution behaviour. Pausing a delivery is done by patching `stage`.

## Path parameters

- `id` string, required

## Request body

- object: Any delivery field except `id`, `type`, `team_id` and `created_at`. `null` removes an attribute.
  - `name` string
  - `stage` 'live' | 'draft': Set to `draft` to pause the delivery.
  - `index_ids` string[]
  - `timezone` string
  - `operations` DeliveryOperationNode[]: Replaces the delivery's operations. Send the whole list — a partial list is stored as-is and is what will run.
    - `id` string, required: Node id, unique within the list. Downstream nodes wire to it by this id.
    - `operation` string, required: Operation name from the catalog, e.g. `index_event_trigger`, `trigger`, `manual_trigger`, `index_panel`, `send_email`.
    - `use_cache` boolean: Whether the engine may reuse a cached result for this node. Delivery nodes are written with `false`.
    - `input` object[]: Upstream nodes. Each entry is an object whose single key is `$ref`, set to an upstream node's `id` — see the request example. A trigger has no input.
    - `parameters` object: Parameters for that operation. A parameter may take an upstream node's output instead of a literal value by using the same `$ref` form against that node's output path, e.g. the trigger's `fired_index_ids`.

## Response `200`

The updated delivery (`ALL_NEW`) plus `trigger_notification`.

- object

## Other responses

- `400`: `id required`, or `no editable fields`.
- `401`: Missing or invalid id token.
- `403`: Caller's teams do not own this delivery.
- `429`: API key usage-plan rate limit exceeded.

---

[API](https://skmtc.dev/indexone/apis/index-one-rest-api.md) · [All operations](https://skmtc.dev/indexone/apis/index-one-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/indexone/apis/index-one-rest-api/revisions/df5a92216a9c?raw)
