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

# Update procurement

`PATCH /v0/procurements/{id}`

Update an existing procurement.

## Path parameters

- `id` string, required

## Request body

- MarketApiUpdateProcurementRequest
  - `status` 'active' | 'disabled'
  - `instance_type` string
  - `desired_quantity` integer, nullable — Desired quantity of nodes
  - `buy_limit_price_per_gpu_hour` integer, nullable — Maximum price per GPU hour in cents
  - `sell_limit_price_per_gpu_hour` integer, nullable — Minimum price per GPU hour in cents when selling back
  - `horizon` integer, nullable — Planning horizon in minutes. The procurement will try to buy compute ahead of time as to always have at least this amount of time ahead scheduled at a minimum.

## Response `200`

Successfully updated procurement

- MarketApiProcurementResponse
  - `object` 'procurement', required
  - `id` string, required
  - `instance_type` string, required
  - `status` 'active' | 'disabled', required
  - `desired_quantity` integer, required
  - `buy_limit_price_per_gpu_hour` integer, required
  - `sell_limit_price_per_gpu_hour` integer, required
  - `horizon` integer, required
  - `colocation_strategy` union, required
    - object — Any time the procurement buys it can buy from a different cluster. This means the running node might at times be shut down on one cluster and be started on another. The advantage of this strategy is better price optimization.
      - `type` 'anywhere', required
    - object — Whenever this procurement starts up again after having been disabled/at 0, it will try to remain on the same cluster. If it gets disabled and re-enabled again, it might end up on a different cluster.
      - `type` 'colocate', required
    - object — After this procurement performs its initial buy, any future buys will be performed on the same cluster, even if disabled in between. This gives greater hardware consistency, but you are locked to the price of the cluster that was initially selected.
      - `type` 'colocate-pinned', required
    - object — Pin this procurement to always buy from this specific cluster.
      - `cluster_name` string, required
      - `type` 'pinned', required
  - `last_message` 'insufficient_balance' | 'running', required

## Other responses

- `400` — Bad request - invalid field values
- `401` — Unauthorized - missing or invalid authentication token
- `402` — Payment required - insufficient funds
- `403` — Forbidden - account frozen
- `404` — Procurement not found
- `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)
