FastGPU Matching API

Match an AI workload to the cheapest live GPU that can run it. No key required.

Operations 1

GET /api/v1/match Match a workload to the cheapest GPU #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fastgpu:fastgpu-matching-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fastgpu-matching-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: FastGPU Matching API
  description: 'Live GPU cloud price comparison across the whole market, as a REST API and MCP server. FastGPU brokers GPU capacity: describe the cluster you need and get competing quotes from capacity holders, each shown next to live prices from RunPod, Vast.ai, Lambda, the hyperscalers and more. Free for buyers, no sales calls.'
  version: 1.0.0
  contact:
    name: FastGPU
    url: https://fastgpu.co/docs
servers:
- url: https://fastgpu.co
tags:
- name: Matching
  description: Match an AI workload to the cheapest live GPU that can run it. No key required.
paths:
  /api/v1/match:
    get:
      operationId: match_workload
      tags:
      - Matching
      summary: Match a workload to the cheapest GPU
      description: 'Describe a job (an open-weight model to serve or fine-tune, a model size, or a GPU need) and get up to eight ranked GPU configurations that can run it at the lowest live price, each with the GPU count, the effective USD per hour for the whole configuration, and a one-line reason; the result also states the VRAM the job needs and, when a hyperscaler can run the same job, which one and what percent cheaper the top match is. Use it when the user asks where to run a workload or which GPU they need, rather than the price of a named GPU. It sizes open-weight models only: an API-only model such as GPT-4 returns no matches and a note. Results mirror FastGPU''s website and apply a small, disclosed tie-break toward providers that pay FastGPU a referral, only between otherwise equal offers (each match reports partner true/false). Optional hard limits (budget_usd_hr, max_total_usd with duration_hours, max_quote_age_minutes) leave out every configuration that breaks them, and limits reports what was applied and how many were left out. page_url links to the GPU''s live price page. It does not rent, reserve or launch GPUs. No key required.'
      parameters:
      - name: query
        in: query
        required: false
        description: Plain-language job, e.g. "cheapest to serve Llama 3 70B", "2x H100 for fine-tuning" or "a GPU with 80GB of memory". Provide this OR a structured spec below.
        schema:
          type: string
        example: cheapest to serve Llama 3 70B
      - name: model
        in: query
        required: false
        description: Open model name to size against, e.g. "Llama 3 70B", "Qwen 72B", "Mixtral".
        schema:
          type: string
      - name: params_b
        in: query
        required: false
        description: Model size in billions of parameters when no exact model is named.
        schema:
          type: number
      - name: weights_gb
        in: query
        required: false
        description: 'Measured size of the weights as stored, in GB: the file you will load (for example a GGUF Q4_K_M build, which holds more bits per parameter than its nominal 4). Replaces parameters times bytes per parameter in the memory estimate. Used for a model sized by its parameter count; the answer''s workload.weights_gb is null when it was not (an image or speech model sized as a whole pipeline).'
        schema:
          type: number
      - name: vram_gb
        in: query
        required: false
        description: Rough VRAM the job needs, in GB, if you already know it.
        schema:
          type: integer
      - name: task
        in: query
        required: false
        description: What the job does.
        schema:
          type: string
          enum:
          - inference
          - finetune-lora
          - finetune-full
          - generate
          - transcribe
          - embed
      - name: precision
        in: query
        required: false
        description: Numeric precision to size the model at.
        schema:
          type: string
          enum:
          - fp16
          - int8
          - int4
      - name: gpu_count
        in: query
        required: false
        description: Exact positive GPU count. Overrides a count in query text. Returns no matches if no supported configuration fits; omit for automatic sizing.
        schema:
          type: integer
      - name: min_gpu_memory_gb
        in: query
        required: false
        description: Memory each GPU card must have, in GB (e.g. 80 for 80GB-class cards such as the H100 or A100 80GB). Smaller cards are never returned. On its own it lists every card that size, cheapest first.
        schema:
          type: integer
      - name: budget_usd_hr
        in: query
        required: false
        description: Hard limit on the hourly price of the whole configuration, in USD. Configurations above it are not returned.
        schema:
          type: number
      - name: duration_hours
        in: query
        required: false
        description: How long the job will run, in hours (fractions are fine). When sent, each match carries billed_hours and estimated_total_usd.
        schema:
          type: number
      - name: max_total_usd
        in: query
        required: false
        description: Hard limit on estimated_total_usd, the GPU rental cost of the whole job, in USD. Needs duration_hours. Configurations above it are not returned.
        schema:
          type: number
      - name: max_quote_age_minutes
        in: query
        required: false
        description: Hard limit on how old a price quote may be, in minutes. Configurations whose price was fetched from the provider longer ago are not returned.
        schema:
          type: number
      - name: region
        in: query
        required: false
        description: Restrict to a data-residency region.
        schema:
          type: string
          enum:
          - US
          - EU
          - ASIA
      - name: spot
        in: query
        required: false
        description: Set true to include interruptible spot capacity for a cheaper rate.
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      - name: reserved
        in: query
        required: false
        description: Set true to include reserved / committed-term capacity for a lower rate.
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  updated_at:
                    type:
                    - string
                    - 'null'
                  stale:
                    type: boolean
                  workload:
                    type: object
                    properties:
                      interpretation:
                        type: string
                      identified:
                        type: boolean
                      task:
                        type: string
                      precision:
                        type: string
                      vram_required_gb:
                        type: number
                      gpu_count:
                        type:
                        - integer
                        - 'null'
                      min_gpu_memory_gb:
                        type:
                        - integer
                        - 'null'
                      gpu_vendors:
                        type:
                        - array
                        - 'null'
                        items:
                          type: string
                  hero:
                    type:
                    - object
                    - 'null'
                    properties:
                      hyperscaler_ceiling:
                        type:
                        - string
                        - 'null'
                      savings_pct:
                        type:
                        - number
                        - 'null'
                      same_model:
                        type:
                        - boolean
                        - 'null'
                  count:
                    type: integer
                  matches:
                    type: array
                    items:
                      type: object
                      properties:
                        gpu:
                          type: string
                        gpu_count:
                          type: integer
                        effective_usd_hr:
                          type: number
                        monthly_usd:
                          type: number
                        provider:
                          type: string
                        provider_label:
                          type:
                          - string
                          - 'null'
                        offer_type:
                          type: string
                        reliability:
                          type: string
                        fits_single_card:
                          type: boolean
                        over_budget:
                          type: boolean
                        tokens_per_sec:
                          type:
                          - number
                          - 'null'
                        usd_per_million_tokens:
                          type:
                          - number
                          - 'null'
                        score:
                          type:
                          - number
                          - 'null'
                        partner:
                          type: boolean
                        reason:
                          type: string
                        billing_increment:
                          type: string
                          enum:
                          - per-second
                          - per-minute
                          - per-hour
                          - varies
                          description: How this provider's meter ticks for on-demand rental; varies means FastGPU has no verified figure.
                        billed_hours:
                          type:
                          - number
                          - 'null'
                          description: '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:
                          type:
                          - number
                          - 'null'
                          description: '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:
                          type:
                          - string
                          - 'null'
                          description: When this price was fetched from the provider (ISO 8601).
                        quote_age_seconds:
                          type:
                          - integer
                          - 'null'
                          description: Seconds between fetched_at and as_of. Null when the fetch time is unknown.
                        url:
                          type: string
                          description: Site-relative path of this GPU's live price page, e.g. /gpus/h100-sxm.
                        page_url:
                          type: string
                          description: Absolute URL of this GPU's live price page, with every live offer.
                  as_of:
                    type: string
                    description: When this answer was computed (ISO 8601). Quote ages are measured against it.
                  limits:
                    type: object
                    description: The hard limits this answer applied (null when one was not sent) and how many configurations each one left out.
                    properties:
                      budget_usd_hr:
                        type:
                        - number
                        - 'null'
                      duration_hours:
                        type:
                        - number
                        - 'null'
                      max_total_usd:
                        type:
                        - number
                        - 'null'
                      max_quote_age_minutes:
                        type:
                        - number
                        - 'null'
                      excluded:
                        type: object
                        properties:
                          over_budget_usd_hr:
                            type: integer
                          over_max_total_usd:
                            type: integer
                          older_than_max_quote_age_minutes:
                            type: integer
                      nearest_excluded:
                        type:
                        - object
                        - 'null'
                        description: 'When the limits leave no match: the cheapest configuration that can still run the job, and the limits it breaks.'
                        properties:
                          gpu:
                            type: string
                          gpu_count:
                            type: integer
                          effective_usd_hr:
                            type: number
                          monthly_usd:
                            type: number
                          provider:
                            type: string
                          provider_label:
                            type:
                            - string
                            - 'null'
                          offer_type:
                            type: string
                          reliability:
                            type: string
                          fits_single_card:
                            type: boolean
                          over_budget:
                            type: boolean
                          tokens_per_sec:
                            type:
                            - number
                            - 'null'
                          usd_per_million_tokens:
                            type:
                            - number
                            - 'null'
                          score:
                            type:
                            - number
                            - 'null'
                          partner:
                            type: boolean
                          reason:
                            type: string
                          billing_increment:
                            type: string
                            enum:
                            - per-second
                            - per-minute
                            - per-hour
                            - varies
                            description: How this provider's meter ticks for on-demand rental; varies means FastGPU has no verified figure.
                          billed_hours:
                            type:
                            - number
                            - 'null'
                            description: '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:
                            type:
                            - number
                            - 'null'
                            description: '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:
                            type:
                            - string
                            - 'null'
                            description: When this price was fetched from the provider (ISO 8601).
                          quote_age_seconds:
                            type:
                            - integer
                            - 'null'
                            description: Seconds between fetched_at and as_of. Null when the fetch time is unknown.
                          url:
                            type: string
                            description: Site-relative path of this GPU's live price page, e.g. /gpus/h100-sxm.
                          page_url:
                            type: string
                            description: Absolute URL of this GPU's live price page, with every live offer.
                          breaks:
                            type: array
                            items:
                              type: string
                  note:
                    type: string
                    description: Why there are no matches, when there are none.
                  error:
                    type: string
                    description: Present when the request was not valid; says what to send instead.
                required:
                - count
                - matches
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: 'FastGPU API key (fgpu_live_...), sent as an Authorization: Bearer header. Create one at /app.'
externalDocs:
  description: Docs, the MCP server and the open CC BY 4.0 dataset
  url: https://fastgpu.co/docs