---
title: "Match a workload to the cheapest GPU"
method: GET
path: "/api/v1/match"
tags: ["Matching"]
---

# Match a workload to the cheapest GPU

`GET /api/v1/match`

## Request

- Base URL: `https://fastgpu.co`
- URL: `https://fastgpu.co/api/v1/match`
- Auth: none declared

Ranks up to eight GPU configurations that can run a job at the lowest live price. Describe the job in query (an open-weight model to serve or fine-tune, a model size, or a GPU need) or with the structured fields. Each match gives the GPU count, the USD per hour for the whole configuration and a one-line reason; the answer also states the VRAM the job needs and how much cheaper the top match is than a hyperscaler running the same job. Use it to decide where to run a workload; use list_gpu_prices for the price of a named GPU. Open-weight models only: an API-only model such as GPT-4 returns no matches and a note. Between otherwise equal offers, a small disclosed tie-break favors providers that pay FastGPU a referral (each match reports partner). Hard limits (budget_usd_hr, max_total_usd with duration_hours, max_quote_age_minutes) drop every configuration that breaks them; limits reports what was dropped. Read-only: it does not rent or launch GPUs. No key required.

## Query parameters

- `query` string
- `model` string
- `params_b` number
- `weights_gb` number
- `vram_gb` integer
- `task` 'inference' | 'finetune-lora' | 'finetune-full' | 'generate' | 'transcribe' | 'embed'
- `precision` 'fp16' | 'int8' | 'int4'
- `gpu_count` integer
- `min_gpu_memory_gb` integer
- `budget_usd_hr` number
- `duration_hours` number
- `max_total_usd` number
- `max_quote_age_minutes` number
- `region` 'US' | 'EU' | 'ASIA'
- `spot` 'true' | 'false'
- `reserved` 'true' | 'false'

## Response `200`

Success

- object
  - `updated_at` string, nullable
  - `stale` boolean
  - `workload` object
    - `interpretation` string
    - `identified` boolean
    - `task` string
    - `precision` string
    - `vram_required_gb` number
    - `gpu_count` integer, nullable
    - `min_gpu_memory_gb` integer, nullable
    - `gpu_vendors` string[], nullable
  - `hero` object, nullable
    - `hyperscaler_ceiling` string, nullable
    - `savings_pct` number, nullable
    - `same_model` boolean, nullable
  - `count` integer, required
  - `matches` object[], required
    - `gpu` string
    - `gpu_count` integer
    - `effective_usd_hr` number
    - `monthly_usd` number
    - `provider` string
    - `provider_label` string, nullable
    - `offer_type` string
    - `reliability` string
    - `fits_single_card` boolean
    - `over_budget` boolean
    - `tokens_per_sec` number, nullable
    - `usd_per_million_tokens` number, nullable
    - `score` number, nullable
    - `partner` boolean
    - `reason` string
    - `billing_increment` 'per-second' | 'per-minute' | 'per-hour' | 'varies': How this provider's meter ticks for on-demand rental; varies means FastGPU has no verified figure.
    - `billed_hours` number, nullable: Hours the provider bills for duration_hours: rounded up to whole hours on a per-hour meter and to whole minutes on a per-minute meter. Null when duration_hours was not sent.
    - `estimated_total_usd` number, nullable: effective_usd_hr times billed_hours, rounded up to the cent. GPU rental only: storage, data transfer, CPU and memory billed separately, and provider minimums are not included. Null when duration_hours was not sent.
    - `fetched_at` string, nullable: When this price was fetched from the provider (ISO 8601).
    - `quote_age_seconds` integer, nullable: Seconds between fetched_at and as_of. Null when the fetch time is unknown.
    - `url` string: Site-relative path of this GPU's live price page, e.g. /gpus/h100-sxm.
    - `page_url` string: Absolute URL of this GPU's live price page, with every live offer.
  - `as_of` string: When this answer was computed (ISO 8601). Quote ages are measured against it.
  - `limits` object: The hard limits this answer applied (null when one was not sent) and how many configurations each one left out.
    - `budget_usd_hr` number, nullable
    - `duration_hours` number, nullable
    - `max_total_usd` number, nullable
    - `max_quote_age_minutes` number, nullable
    - `excluded` object
      - `over_budget_usd_hr` integer
      - `over_max_total_usd` integer
      - `older_than_max_quote_age_minutes` integer
    - `nearest_excluded` object, nullable: When the limits leave no match: the cheapest configuration that can still run the job, and the limits it breaks.
      - `gpu` string
      - `gpu_count` integer
      - `effective_usd_hr` number
      - `monthly_usd` number
      - `provider` string
      - `provider_label` string, nullable
      - `offer_type` string
      - `reliability` string
      - `fits_single_card` boolean
      - `over_budget` boolean
      - `tokens_per_sec` number, nullable
      - `usd_per_million_tokens` number, nullable
      - `score` number, nullable
      - `partner` boolean
      - `reason` string
      - `billing_increment` 'per-second' | 'per-minute' | 'per-hour' | 'varies': How this provider's meter ticks for on-demand rental; varies means FastGPU has no verified figure.
      - `billed_hours` number, nullable: Hours the provider bills for duration_hours: rounded up to whole hours on a per-hour meter and to whole minutes on a per-minute meter. Null when duration_hours was not sent.
      - `estimated_total_usd` number, nullable: effective_usd_hr times billed_hours, rounded up to the cent. GPU rental only: storage, data transfer, CPU and memory billed separately, and provider minimums are not included. Null when duration_hours was not sent.
      - `fetched_at` string, nullable: When this price was fetched from the provider (ISO 8601).
      - `quote_age_seconds` integer, nullable: Seconds between fetched_at and as_of. Null when the fetch time is unknown.
      - `url` string: Site-relative path of this GPU's live price page, e.g. /gpus/h100-sxm.
      - `page_url` string: Absolute URL of this GPU's live price page, with every live offer.
      - `breaks` string[]
  - `note` string: Why there are no matches, when there are none.
  - `error` string: Present when the request was not valid; says what to send instead.

---

[API](https://skmtc.dev/fastgpu/apis/fastgpu-api.md) · [All operations](https://skmtc.dev/fastgpu/apis/fastgpu-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fastgpu/apis/fastgpu-api/revisions/9ab96f0e2baf?raw)
