V2 API and CLI still in public preview#

The v2 API and CLI remain in public preview. Preview endpoints are still served under /preview/v2/*. To learn more about public preview, read about our roadmap and feature states here.

The legacy API still works but is being phased out. Plan to migrate off it soon.

If you're new to v2, get started using the quick start guide.

Nodes are now Instances#

"Nodes" previously referred to both the physical hosts and the VMs running inside them. In v2, we now refer to them using distinct terms:

  • Node — the physical machine purchased by an order
  • Instance — the VM you launch, SSH into, and run workloads on

We've renamed our CLI, API, and wire formats to match:

  • sf nodes …sf instances …
  • sf node-templates …sf instance-templates …
  • /preview/v2/nodes/preview/v2/instances
  • node_templateinstance_template
  • target_node_counttarget_instance_count
  • node_name_templateinstance_name_template

In the v2 CLI, the sf nodes alias is gone - update your scripts to use sf instances. The legacy /v1/nodes API remains untouched. To migrate active legacy v1 nodes to v2 instances, run sf nodes migrate in the v2 CLI.

Capacity transfers#

Transfers move nodes between two of your capacities for a specified window.

# Using the v2 CLI
sf capacities transfers create \
  --from-capacity dev \
  --to-capacity prod \
  --start-at "tomorrow" \
  --end-at "in 7d" \
  --node-count 4 \
  --instance-sku isku_4UpxzQw7A8N

sf capacities transfers get <transfer-id>
sf capacities transfers list --capacity dev

Use capacity transfers to isolate compute time so you can resell time in one capacity without affecting the instances in the other.

A capacity with pending transfers can't be deleted until the transfers have settled.

Orderbook API#

The Orderbook API exposes a live record of every standing buy and sell order on the market.

Use it to price a specific delivery window before you place an order, discover what hardware is on offer and at what rate, or feed live supply and demand into trading bots, dashboards, and analytics.

  • cli
    sf respects NO_COLOR in spinners and progress bars.
  • cli
    sf instances create shows the expected shutdown time before you confirm.
  • cli
    Interactive prompt in sf instances create allows a user to pick an instance template.
  • cli
    sf instances create image picker highlights SFC public images, sorts by date, and scrolls long lists.
  • cli
    sf orders create reservation time picker snaps cleanly to hour boundaries.
  • cli
    Interactive prompts now use custom select and multi-select components in place of the previous list components.
  • api
    Balance-check rejection messages and payment required errors mention max-price.
  • app
    All legal documents have been consolidated into a single page.
  • docs
    The Selling guide explains how sell order pricing works.
  • cli
    sf no longer crashes on an empty or malformed config file.
  • cli
    sf login creates a valid config file if one doesn't exist yet.
  • cli
    Alphanumeric IDs no longer contain - or _ to avoid quoting issues.
  • cli
    sf deployments create confirmation renders the instance template name.
  • cli
    Image downloads are no longer throttled by the previous rate limit.
  • api
    /deployments routes accept resource paths for the instance_template param.
  • docs
    SSH instructions are aligned across docs and quick starts.

V2 API and CLI in preview#

Our rewritten CLI and API are now in preview, built on a new mental model for managing compute that adds reselling support. Get started using the docs.

The new CLI and API are separate from the existing legacy API, which will continue to be supported as we continue to iterate.

Resell unused compute to recoup costs#

If you have more compute than you need, you can sell it back. Once your order fills, credits are added to your balance.

# Place a buy order
sf orders create --side buy --capacity my-capacity \
  --nodes 4 --start now --duration 24h \
  --max-rate '$25.00'

# Sell back unused allocation
sf orders create --side sell --capacity my-capacity \
  --nodes 4 --min-rate '$20.00'

CLI Rewrite#

We've rewritten our CLI in Rust for speed. The new CLI uses different command syntax, so some commands from the previous CLI won't work without changes.

If you forget to pass required flags on a command, it'll prompt you for what it needs.

Interactive prompt for # NodesInteractive prompt for Start time

Nodes now attach to Capacities#

Attach a node to a capacity and it runs as long as allocation is available. If there's no allocation yet, it enters an awaiting state and starts automatically when capacity becomes available.

# Create a node
sf nodes create --capacity my-capacity \
  --image ubuntu-22.04.5-cuda-12.7

Automate managing compute with deployments and procurements#

Use deployments to keep a target number of nodes running. Use procurements to buy and sell automatically within price bounds.

# Keep 4 nodes running at all times
sf deployments create --capacity my-capacity \
  --node-template my-template \
  --target-node-count 4

# Scale up
sf deployments set my-deployment --target-node-count 8

# List deployments for a capacity
sf deployments list --capacity my-capacity

# Automatically buy and sell within price bounds
sf procurements create --capacity my-capacity \
  --target 4 --window 1h \
  --max-buy-price '$25.00' \
  --min-sell-price '$20.00'

# Pause a procurement
sf procurements set my-procurement --enabled false

Node Templates#

Node templates let you define an image and startup script once, then reference the template in deployments or when creating nodes.

# Create a template
sf node-templates create --name my-template \
  --image ubuntu-22.04.5-cuda-12.7 \
  --cloud-init ./startup.sh

# List templates
sf node-templates list

Tag nodes and capacities#

Tags are key-value pairs you can use to organize and filter nodes and capacities.

# Add a tag
sf nodes set my-node --tag env=prod

# Filter by tag
sf nodes ls --tag env=prod
  • cli
    Orders now show rates labeled as $/node/hr and display the capacity's zones in the creation preview.
  • cli
    Interactive prompts now validate input inline across most commands.
  • api
    Improved OpenAPI spec annotations.
  • app
    API keys created with "No expiration" now correctly never expire instead of defaulting to 14 days.
  • app
    Onboarding form now correctly surfaces unexpected validation errors.
  • app
    Testimonial company names now display inline with attribution text.
  • app
    Quote requests no longer get presented as suggestions when they're valid orders.
  • cli
    sf nodes ssh now shows a message when no trusted SSH keys are configured.
  • cli
    sf upgrade no longer triggers recursive upgrade calls.
  • cli
    sf nodes create --max-price now rounds to integer cents.
  • cli
    sf nodes create -s/--start validates the value and errors clearly when unparseable.

CLI sf images command#

Uploading and managing custom OS images is now available as a top-level CLI command.

# List available images
sf images list

# View image details and download URI
sf images get <image-id>

# Upload a custom image
sf images upload ./path/to/os.img

Live system status#

The landing page footer now describes real-time system status, including incidents and upcoming maintenance.

All systems normal
Ongoing incidentsOngoing outages

Clicking on the footer navigates to our status page.

Sunsetting Large Scale Inference#

We have sunsetted LSI batch inference to better support the great inference providers running on SFC.

Legacy VMs purchase flow deprecated#

sf buy, sf sell, and sf extend have been removed in CLI v0.30.0. Use the Nodes API and sf nodes commands to explicitly spin up, extend and release specific nodes instead.

Transaction history cutoff beyond June 10, 2025#

For older records, contact us.

Transaction history
  • app
    Simplified and improved reliability for account and org management logic.
  • app
    Optimized dashboard balance polling and data fetching for faster load times.
  • cli
    sf nodes ls column headers now show your local timezone abbreviation (e.g., PST) for start and end times.
  • docs
    Corrected cluster technical specifications in documentation.
  • api
    Max node name length increased from 128 to 256 characters.
  • app
    Improved how empty zone capacity is displayed.
  • app
    Optimized zones capacity display on small screens.
  • app
    Fixed a bug where extending multiple nodes showed 10× the correct price.
  • cli
    Fixed zones table header incorrectly wrapping to new line.
  • cli
    Fixed sf nodes create incorrectly marking local time as UTC instead of converting it.
  • api
    OpenAPI spec now properly disambiguates error schemas for improved SDK generation.
  • api
    Improved performance and reliability for balance and transaction queries.

Custom images for Nodes#

  • Pre-configure Nodes with your own software and dependencies
  • Supports any UEFI bootable x86_64 raw image
# Upload a custom image
sf nodes images upload ./path/to/os.img

# Create a node with the custom image
sf nodes create -n 1 --image <image-id> --zone landsend --max-price 30

Read the custom images documentation for more info.

Large Scale Inference (LSI) dashboard improvements#

Jobs and usage are now in a single tab, with a reworked job details view.

Jobs and usage

Create API keys in the dashboard#

API keys support custom expiration (e.g., 1d, 30d, 60d) and descriptions.

API keys

View, manage and create API keys via the dashboard here.

Zone availability summary#

The dashboard and CLI now show an availability summary for each zone, giving you a clearer picture of capacity at a glance.

Zone availability dashboardZone availability CLI

 

Calling sf zones ls without --all in the CLI will only show zones with current and upcoming availability.

  • api
    Numerous LSI batch processing stability and behavior improvements.
  • app
    Human-readable zone names (e.g., "Fisherman's Wharf", "Lands End") are now correctly formatted.
  • api
    Faster balance queries speed up dashboard and CLI load times.
  • cli
    CLI ported from Deno to Node.js, improving UX stability.
  • app
    Zone capacity graph no longer shows "0" for the current hour when GPUs are available.
  • app
    Batch inference dashboard no longer crashes when viewing models tab.
  • docs
    API docs now show prices in cents instead of centicents.
  • app
    Removed broken pricing components from landing page.

B200 and B300 GPUs now available#

We've added NVIDIA B200 and B300 GPUs to our fleet. Contact us to learn more.

Large Scale Inference (LSI) dashboard released#

The LSI batch inference dashboard is now generally available.

  • Usage: Batch usage and billing data with day/week/month views
  • Jobs: Paginated list with request counts and statuses
  • Models: Available models and their pricing
  • API keys: Create, view, and revoke API keys

Access LSI via the dashboard.

Reworked zones page#

The zones page now shows more detailed capacity availability information, with clearer hour boundaries for planning your workloads.

Zones page

Dashboard creates Nodes instead of legacy VMs#

When you launch a node through the dashboard, it will now create a Node and not a legacy VM.

This means you can use the sf nodes CLI commands to explicitly manage your compute.

We're continuing to deprecate legacy VMs across the platform in the coming weeks. Please migrate your workloads to Nodes as soon as possible.

Automatically select the cheapest zone#

You can now create Nodes in the cheapest zone that meets hardware requirements.

In the API, add the any_zone parameter to your Node creation request. See the API documentation for request parameters.

The --any-zone flag has been added to the CLI to allow Nodes to be created in the cheapest zone that meets hardware requirements.

# Create Nodes with automatic zone selection
sf nodes create my-node-name --any-zone -d 1d -p 10.00

# Zone information shown in CLI output
sf nodes ls
sf nodes ls --verbose

Nodes created with --any-zone show "Any matching" in sf nodes ls until they are assigned to a specific zone. Reserved Nodes show the assigned zone immediately.

  • app
    Improved billing with saved payment methods.
  • api
    Fixed bug where transaction view would show pricing in cents instead of dollars.
  • app
    Fixed bug where transaction view would show incorrect GPU type.
  • api
    Improved balance checks and ledger reliability.
  • app
    Fixed waitlist handling for users joining organizations.