---
title: "Update procurement"
method: PATCH
path: "/preview/v2/procurements/{id}"
tags: ["Procurements"]
---

# Update procurement

`PATCH /preview/v2/procurements/{id}`

> ⚠️ This endpoint is in [public preview](/preview/roadmap).

Update a procurement's configuration.

## Path parameters

- `id` string, required — A resource path like 'sfc:procurement:acme:prod:my-procurement' _or_ an ID. Resource paths are human-readable but not stable - they change when resources are renamed or moved. IDs are stable and permanent.

## Request body

- SfcApiPatchProcurementRequest
  - `name` string
  - `instance_sku` string
  - `min_sell_price_dollars_per_node_hour` string — Price rate in dollars per node-hour.
  - `max_buy_price_dollars_per_node_hour` string — Price rate in dollars per node-hour.
  - `managed_window_minutes` integer, nullable — How far ahead (in minutes) the procurement buys and sells compute. Higher values secure compute further in advance but commit to longer windows that may need to be sold when scaling down, potentially at a loss. Lower values reduce waste but risk compute being unavailable. Orders are placed in 1-hour blocks, so the furthest hour is secured up to `managed_window_minutes - 60` minutes before it begins.
  - `enabled` boolean, nullable

## Response `200`

Procurement updated.

- SfcApiProcurementResponse
  - `id` string, required
  - `resource_path` string, required — A resource path for a procurement resource. Format: sfc:procurement:<account>:<workspace>:<name>.
  - `owner` string, required
  - `workspace` string, required
  - `name` string, required
  - `object` 'procurement', required
  - `target` union, required
    - 'node_count'
    - integer
  - `capacity` SfcApiCapacitySummary, required
    - `id` string, required
    - `name` string, required
  - `instance_sku` SfcApiInstanceSkuSummary — Summary view of an instance SKU embedded on responses that reference one (orders, procurements, instances, capacity transfers). Carries both the id and the human-readable name. Legacy SKUs whose `name` column hasn't been backfilled use `UNKNOWN_INSTANCE_SKU_NAME` as a placeholder so this field is always populated on the wire.
    - `id` string, required
    - `name` string, required
  - `min_sell_price_dollars_per_node_hour` string, required — Price rate in dollars per node-hour.
  - `max_buy_price_dollars_per_node_hour` string, required — Price rate in dollars per node-hour.
  - `managed_window_minutes` integer, required — How far ahead (in minutes) the procurement buys and sells compute. Higher values secure compute further in advance but commit to longer windows that may need to be sold when scaling down, potentially at a loss. Lower values reduce waste but risk compute being unavailable. Orders are placed in 1-hour blocks, so the furthest hour is secured up to `managed_window_minutes - 60` minutes before it begins.
  - `enabled` boolean, required — Enable/disable the procurement. Disabling cancels all standing orders.
  - `status` SfcApiReconciliationStatus, required
    - `state` 'info' | 'warning' | 'error', required
    - `message` string, required
  - `created_at` integer, required — Unix timestamp.
  - `updated_at` integer, required — Unix timestamp.

## Other responses

- `400` — Validation error (e.g. duplicate name).
- `401` — Unauthorized.
- `403` — Forbidden.
- `404` — Procurement not found.
- `422` — Validation failed.
- `500` — Internal server error.

---

[API](https://skmtc.net/sfcompute/apis/san-francisco-compute-documentation.md) · [All operations](https://skmtc.net/sfcompute/apis/san-francisco-compute-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sfcompute/san-francisco-compute-documentation/revisions/93dd7661e9bb/schema)
