---
title: "Create procurement"
method: POST
path: "/preview/v2/procurements"
tags: ["Procurements"]
---

# Create procurement

`POST /preview/v2/procurements`

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

Create a market automation that maintains capacity by placing buy/sell orders.

## Request body

- SfcApiCreateProcurementRequest
  - `name` string
  - `target` union, required
    - 'node_count'
    - integer
  - `capacity` string, required
  - `instance_sku` 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 — Enable/disable the procurement.

## Response `201`

Procurement created.

- 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.
- `409` — Capacity already has a procurement.
- `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)
