---
title: "Update pool"
method: PATCH
path: "/v0/pools/{id}"
tags: ["Pools"]
---

# Update pool

`PATCH /v0/pools/{id}`

Update the fields of a pool.
Updating the requirements object will update the default requirements applied for instances in this pool.

## Path parameters

- `id` string, required — Generated ID with format 'pool_[0-9a-zA-Z]+' used for referencing a PoolId resource.

## Request body

- NodeApiPatchPoolRequest
  - `requirements` object, nullable — Default requirements used to provision nodes in this pool.
    - `zone` string, nullable
  - `config` object, nullable — Default configuration for VMs in this pool.
    - `image_id` string — Default image ID for VMs in this pool.
    - `cloud_init_user_data` string, byte — Default cloud-init user data for VMs in this pool. Data should be base64 encoded.
  - `scheduler` object, nullable — All fields are required when creating a new scheduler, but optional when updating an existing scheduler.
    - `min_sell_price_cents_per_gpu_hour` integer, nullable — Minimum sell price (cents/GPU-hour)
    - `max_buy_price_cents_per_gpu_hour` integer, nullable — Maximum buy price (cents/GPU-hour)
    - `enabled` boolean, nullable — Whether the scheduler actively places orders
    - `managed_window_minutes` integer, nullable — Maximum time in advance to buy or sell capacity (minutes). Minimum: 60.
    - `desired_quantity` integer, nullable — Target node count

## Response `200`

Pool updated successfully

- NodeApiPoolDetails
  - `object` 'pool', required — Type identifier useful for discriminating union types.
  - `id` string, required — Generated ID with format 'pool_[0-9a-zA-Z]+' used for referencing a PoolId resource.
  - `requirements` object, required — Default requirements used to provision nodes in this pool.
    - `zone` string, nullable
  - `config` object, required — Default configuration for VMs in this pool.
    - `image_id` string — Default image ID for VMs in this pool.
    - `cloud_init_user_data` string, byte — Default cloud-init user data for VMs in this pool. Data should be base64 encoded.
  - `is_default` boolean, required — Denotes whether this pool is the default pool an account or scope buys into.
  - `schedule_info` object, required — Capacity schedule summed and by zone
    - `zone_schedules` object, required — Capacity schedule per zone
    - `total_schedule` NodeApiSchedule, required — Denotes previous and upcoming capacity availability over time.
      - `object` 'schedule', required
      - `data` NodeApiScheduleEntry[], required
        - `timestamp` integer, required — Unix timestamp in seconds since epoch
        - `quantity` integer, required
  - `scheduler` object, nullable — Scheduler configuration. Automatically places buy/sell orders in this pool to maintain target node count.
    - `min_sell_price_cents_per_gpu_hour` integer, required — Minimum sell price (cents/GPU-hour)
    - `max_buy_price_cents_per_gpu_hour` integer, required — Maximum buy price (cents/GPU-hour)
    - `desired_quantity` integer, required — Target node count
    - `managed_window_minutes` integer, required — How far in advance to place orders/minimum preemption notice time (minutes)
    - `enabled` boolean, required — Whether the scheduler actively places orders

## Other responses

- `400` — Invalid request (e.g., image not found)
- `401` — Unauthorized request
- `404` — Pool not found
- `500` — Internal server error

## Changes

- **2026-01-15** `177125ec6e80` — 1 breaking, 1 warning, 2 info
  - removed the success response with the status `204`
  - changed the pattern of the `path` request parameter `id` from `"pool"_[0-9a-zA-Z]+` to `pool_[0-9a-zA-Z]+`
  - added the new optional request property `scheduler`
  - added the success response with the status `200`
- **2026-01-07** `88e997c05806` — 1 breaking, 3 info
  - request property `requirements/oneOf[subschema #2]/zone` list-of-types was narrowed by removing types `null` from media type `application/json`
  - added the new optional request property `config`
  - the request property `requirements/oneOf[subschema #2]/zone` became nullable
  - added the non-success response with the status `400`
- **2025-12-19** `03edf542ab39` — 3 info
  - removed the `resource_unavailable` enum value from the `error/type` response property for the response status `401`
  - removed the `resource_unavailable` enum value from the `error/type` response property for the response status `404`
  - removed the `resource_unavailable` enum value from the `error/type` response property for the response status `500`
- …earlier changes not shown

[Full history](https://skmtc.dev/sfcompute/apis/san-francisco-compute-documentation/changes/v0/pools/:id/patch.md)

---

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