> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sfcompute.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get procurement

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

Retrieve a procurement by ID or name.



## OpenAPI

````yaml /preview/openapi.json get /preview/v2/procurements/{id}
openapi: 3.1.0
info:
  title: sfc-api
  description: >-
    Public preview API - subject to change. See
    https://docs.sfcompute.com/preview/roadmap for details.
  version: 0.1.0
servers:
  - url: https://api.sfcompute.com
security:
  - bearer_auth: []
tags:
  - name: Account
    description: The authenticated account and logged-in user.
  - name: Pools
    description: A bucket of owned compute balance over time.
  - name: Orders
    description: >-
      Place orders targeting a capacity to increase your reserved compute
      balance during some time period.
  - name: Instance Templates
    description: Reusable instance configuration.
  - name: Images
    description: Custom machine images for instances.
  - name: Roles
    description: TOML-based permission role definitions.
  - name: Grants
    description: Bind principals (users or tokens) to roles on a workspace.
  - name: Tokens
    description: Workspace-scoped API tokens.
  - name: Instances
    description: Spin up instances in a capacity to use your available compute.
  - name: Instance SKU Catalog
    description: Browse available instance SKU property definitions.
  - name: Procurements
    description: Market automations that maintain capacity by placing buy/sell orders.
  - name: Deployments
    description: Deployment automations that maintain a fleet of instances on a capacity.
  - name: Spot Deployments
    description: >-
      Spot deployment automations that buy capacity up to a maximum price and
      run instances on secured capacity.
  - name: Users
    description: Read-only access to users within the caller's organization.
  - name: Workspaces
    description: Resource containers scoped to an account.
  - name: Permissions
    description: Inspect what the caller is allowed to do.
  - name: Billing
    description: Billing profile, contacts, and auto top-up settings.
  - name: Orderbook
    description: >-
      Read-only orderbook visibility: bid/ask spread, depth of book, and
      historical fills, keyed on hardware requirements + delivery window.
  - name: Orders
    description: >-
      Estimate an order before placing it: filled price, fee, and operational
      notices.
paths:
  /preview/v2/procurements/{id}:
    get:
      tags:
        - Procurements
      summary: Get procurement
      description: |-
        > ⚠️ This endpoint is in [public preview](/preview/roadmap).

        Retrieve a procurement by ID or name.
      operationId: get_procurement
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            description: >-
              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.
            examples:
              - proc_k3R-nX9vLm7Qp2Yw5Jd8F
            pattern: >-
              (proc_[0-9a-zA-Z_-]{1,21})|(sfc:procurement:[a-zA-Z0-9._-]+(:[a-zA-Z0-9._-]+){2,2})
      responses:
        '200':
          description: Procurement details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcurementResponse'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Procurement not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
components:
  schemas:
    ProcurementResponse:
      allOf:
        - $ref: '#/components/schemas/ProcurementScope'
        - type: object
          required:
            - object
            - target
            - capacity
            - pool
            - instance_sku
            - min_sell_price_dollars_per_node_hour
            - max_buy_price_dollars_per_node_hour
            - managed_window_minutes
            - enabled
            - status
            - created_at
            - updated_at
          properties:
            object:
              type: string
              const: procurement
              default: procurement
              readOnly: true
            target:
              $ref: '#/components/schemas/ProcurementTarget'
            capacity:
              $ref: '#/components/schemas/CapacitySummary'
              description: Deprecated — use `pool`.
            pool:
              $ref: '#/components/schemas/PoolSummary'
            instance_sku:
              $ref: '#/components/schemas/InstanceSkuSummary'
              description: >-
                Instance SKU this procurement's orders are pinned to. Carries
                the SKU's human-readable name when one is registered.
            min_sell_price_dollars_per_node_hour:
              $ref: '#/components/schemas/DollarsPerNodeHour'
              description: >-
                Minimum price to sell compute for ($/node-hour). Must contain
                decimal point. Will be rounded to nearest multiple of $0.000060.
            max_buy_price_dollars_per_node_hour:
              $ref: '#/components/schemas/DollarsPerNodeHour'
              description: >-
                Maximum price to buy compute ($/node-hour). Must contain decimal
                point. Will be rounded to nearest multiple of $0.000060.
            managed_window_minutes:
              type: integer
              format: int32
              description: >-
                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. The window contains this many
                complete minutes, beginning with the next minute. Buying power
                must cover each order's full duration.
              maximum: 129600
              minimum: 1
            enabled:
              type: boolean
              description: >-
                Enable/disable the procurement. Disabling cancels all standing
                orders.
            status:
              $ref: '#/components/schemas/ReconciliationStatus'
            created_at:
              $ref: '#/components/schemas/UnixEpoch'
            updated_at:
              $ref: '#/components/schemas/UnixEpoch'
    UnauthorizedError:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - message
          properties:
            type:
              type: string
              const: authentication_error
              default: authentication_error
              readOnly: true
            message:
              type: string
              x-speakeasy-error-message: true
    ForbiddenError:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - message
          properties:
            type:
              type: string
              const: forbidden
              default: forbidden
              readOnly: true
            message:
              type: string
              x-speakeasy-error-message: true
    NotFoundError:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - message
          properties:
            type:
              type: string
              const: not_found
              default: not_found
              readOnly: true
            message:
              type: string
              x-speakeasy-error-message: true
    InternalServerError:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - message
          properties:
            type:
              type: string
              const: api_error
              default: api_error
              readOnly: true
            message:
              type: string
              x-speakeasy-error-message: true
    ProcurementScope:
      type: object
      required:
        - id
        - resource_path
        - owner
        - workspace
        - workspace_id
        - name
      properties:
        id:
          $ref: '#/components/schemas/ProcurementId'
        resource_path:
          $ref: '#/components/schemas/procurementResourcePath_ProcurementId'
        owner:
          $ref: '#/components/schemas/Name'
        workspace:
          $ref: '#/components/schemas/Name'
        workspace_id:
          $ref: '#/components/schemas/WorkspaceId'
        name:
          $ref: '#/components/schemas/Name'
    ProcurementTarget:
      oneOf:
        - $ref: '#/components/schemas/NodeCountTag'
        - type: integer
          format: u-int64
          minimum: 0
    CapacitySummary:
      type: object
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/CapacityId'
        name:
          $ref: '#/components/schemas/Name'
    PoolSummary:
      type: object
      description: A pool referenced by id and name.
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/PoolId'
        name:
          $ref: '#/components/schemas/Name'
    InstanceSkuSummary:
      type: object
      description: >-
        A summary of an instance SKU - its `id` and human-recognizable `alias` -
        embedded on resources that reference a SKU.
      required:
        - object
        - id
        - alias
      properties:
        object:
          type: string
          const: instance_sku
          default: instance_sku
          readOnly: true
        id:
          $ref: '#/components/schemas/InstanceSkuId'
        alias:
          $ref: '#/components/schemas/Name'
    DollarsPerNodeHour:
      type: string
      description: Price rate in dollars per node-hour.
      examples:
        - '2.500000'
      pattern: ^\d+\.\d+$
    ReconciliationStatus:
      type: object
      required:
        - state
        - message
      properties:
        state:
          $ref: '#/components/schemas/AutomationStatus'
        message:
          type: string
    UnixEpoch:
      type: integer
      format: int64
      description: Unix timestamp.
      example: 1738972800
    ProcurementId:
      type: string
      examples:
        - proc_k3R-nX9vLm7Qp2Yw5Jd8F
      pattern: proc_[0-9a-zA-Z_-]{1,21}
    procurementResourcePath_ProcurementId:
      type: string
      description: >-
        A resource path for a procurement resource. Format:
        sfc:procurement:<account>:<workspace>:<name>.
      examples:
        - sfc:procurement:<account_id>:<workspace>:<name>
      pattern: sfc:procurement:([a-zA-Z0-9._-]+:){2}[a-zA-Z0-9._-]+
    Name:
      type: string
      examples:
        - my-resource-name
      maxLength: 255
      minLength: 1
      pattern: '[a-zA-Z0-9][a-zA-Z0-9._-]{0,254}'
    WorkspaceId:
      type: string
      examples:
        - wksp_k3R-nX9vLm7Qp2Yw5Jd8F
      pattern: wksp_[0-9a-zA-Z_-]{1,21}
    NodeCountTag:
      type: string
      const: node_count
      default: node_count
      readOnly: true
    CapacityId:
      oneOf:
        - type: string
          examples:
            - cap_k3R-nX9vLm7Qp2Yw5Jd8F
          pattern: cap_[0-9a-zA-Z_-]{1,21}
        - type: string
          description: Legacy alias prefix; accepted on read, never emitted on write.
          pattern: pool_[0-9a-zA-Z_-]{1,21}
      description: >-
        Accepts the canonical prefix below; additional legacy prefixes are
        aliased for read compatibility. Writes always emit the canonical form.
    PoolId:
      type: string
      examples:
        - pool_k3R-nX9vLm7Qp2Yw5Jd8F
      pattern: pool_[0-9a-zA-Z_-]{1,21}
    InstanceSkuId:
      oneOf:
        - type: string
          examples:
            - isku_k3R-nX9vLm7Qp2Yw5Jd8F
          pattern: isku_[0-9a-zA-Z_-]{1,21}
        - type: string
          description: Legacy alias prefix; accepted on read, never emitted on write.
          pattern: clus_[0-9a-zA-Z_-]{1,21}
      description: >-
        Accepts the canonical prefix below; additional legacy prefixes are
        aliased for read compatibility. Writes always emit the canonical form.
    AutomationStatus:
      type: string
      enum:
        - info
        - warning
        - error
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Create an API token using `sf tokens create` or at
        https://sfcompute.com/account/api-keys.

````