GPU Cloud GPU Plans API

The GPU Plans API from GPU Cloud — 3 operation(s) for gpu plans.

GitHub OpenAPI

Operations 3

GET /v1/gpu List GPU Plans #
GET /v1/availability Public GPU availability #
GET /v1/catalog Public GPU price catalog #

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/gpucloud-ca:gpucloud-ca-gpu-plans-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

gpucloud-ca-gpu-plans-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GPU Cloud GPU Plans API
  description: 'REST API of GPUcloud.ca: GPU plans, GPU servers (deploy, power actions, metrics, firewall), SSH keys and API keys. All prices are in CAD. Authenticate with a REST API key: `Authorization: Bearer `. AI agents should use the MCP endpoint (https://gpucloud.ca/api/mcp) with an MCP key instead. REST keys (prefix gpu_) are created in the console, expire after 90 days and are either full access or read-only (GET only; a read-only key gets 401 on any other method). Write requests (POST, PUT, DELETE) must also send the header `Origin: https://gpucloud.ca`, otherwise they get 403. Developer guide: https://gpucloud.ca/en/developers'
  version: 1.1.1
  contact:
    name: GPU Cloud Support
    url: https://gpucloud.ca
    email: info@gpucloud.ca
servers:
- url: https://gpucloud.ca/api
  description: Production
security: []
tags:
- name: GPU Plans
paths:
  /v1/gpu:
    get:
      summary: List GPU Plans
      description: Returns every GPU machine size with the prices of the authenticated account (CAD per machine) and its current availability. Requires an API key. For anonymous availability, use GET /v1/availability.
      operationId: listGpuPlans
      tags:
      - GPU Plans
      responses:
        '200':
          description: List of GPU plans
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/GpuPlan'
              example:
                data:
                - id: gpu-l40
                  name: NVIDIA L40
                  gpu: 1x NVIDIA L40 (48 GB GDDR6)
                  gpuModel: NVIDIA L40
                  gpuCount: 1
                  spot: false
                  hourlyOnly: false
                  specs:
                    vcores: 28
                    ram: 58
                    storage: 100
                    localStorage: 725
                    storageType: NVMe
                  pricing:
                    hourly: 1.55
                    monthly: 1131.5
                    annual: 1131.5
                    currency: CAD
                  priceOnRequest: false
                  available: true
                  purchasable: true
                  autoProvisioning: true
                  eligibility: deployable
                - id: gpu-l40-x2
                  name: NVIDIA L40 × 2
                  gpu: 2x NVIDIA L40 (48 GB GDDR6)
                  gpuModel: NVIDIA L40
                  gpuCount: 2
                  spot: false
                  hourlyOnly: false
                  specs:
                    vcores: 60
                    ram: 116
                    storage: 100
                    localStorage: 1550
                    storageType: NVMe
                  pricing:
                    hourly: 3.08
                    monthly: 2248.4
                    annual: 2248.4
                    currency: CAD
                  priceOnRequest: false
                  available: true
                  purchasable: true
                  autoProvisioning: true
                  eligibility: deployable
                - id: gpu-l40-spot
                  name: NVIDIA L40 Spot (interruptible)
                  gpu: 1x NVIDIA L40 (48 GB GDDR6)
                  gpuModel: NVIDIA L40
                  gpuCount: 1
                  spot: true
                  hourlyOnly: true
                  specs:
                    vcores: 28
                    ram: 58
                    storage: 100
                    localStorage: 725
                    storageType: NVMe
                  pricing:
                    hourly: 1.24
                    monthly: null
                    annual: null
                    currency: CAD
                  priceOnRequest: false
                  available: true
                  purchasable: true
                  autoProvisioning: true
                  eligibility: deployable
                - id: gpu-h200-sxm-x8
                  name: NVIDIA H200 SXM × 8
                  gpu: 8x NVIDIA H200 SXM (141 GB HBM3e)
                  gpuModel: NVIDIA H200 SXM
                  gpuCount: 8
                  spot: false
                  hourlyOnly: false
                  specs:
                    vcores: 176
                    ram: 1800
                    storage: 100
                    localStorage: 48000
                    storageType: NVMe
                  pricing:
                    hourly: 55.68
                    monthly: 40646.4
                    annual: 40646.4
                    currency: CAD
                  priceOnRequest: false
                  available: false
                  purchasable: true
                  autoProvisioning: true
                  eligibility: out_of_stock
                - id: gpu-b200-x8
                  name: NVIDIA B200 × 8
                  gpu: 8x NVIDIA B200 (180 GB HBM3e)
                  gpuModel: NVIDIA B200
                  gpuCount: 8
                  spot: false
                  hourlyOnly: true
                  specs:
                    vcores: 252
                    ram: 2048
                    storage: 1000
                    localStorage: 40000
                    storageType: NVMe
                  pricing:
                    hourly: 83.73
                    monthly: null
                    annual: null
                    currency: CAD
                  priceOnRequest: false
                  available: false
                  purchasable: true
                  autoProvisioning: true
                  eligibility: out_of_stock
                - id: gpu-h100-nvlink-spot-x8
                  name: NVIDIA H100 NVLink Spot × 8 (interruptible)
                  gpu: 8x NVIDIA H100 NVLink (80 GB HBM2e)
                  gpuModel: NVIDIA H100 NVLink
                  gpuCount: 8
                  spot: true
                  hourlyOnly: true
                  specs:
                    vcores: 252
                    ram: 1440
                    storage: 100
                    localStorage: 6500
                    storageType: NVMe
                  pricing: null
                  priceOnRequest: true
                  available: false
                  purchasable: false
                  autoProvisioning: false
                  eligibility: contact
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
      - BearerAuth: []
  /v1/availability:
    get:
      summary: Public GPU availability
      description: 'PUBLIC, no authentication. Aggregated availability per GPU model and machine size (available true / false), refreshed at most every 15 seconds (Cache-Control: max-age=15). Rate limited to 60 requests per minute per IP. No prices: see /v1/gpu or https://gpucloud.ca/llms.txt.'
      operationId: getPublicAvailability
      tags:
      - GPU Plans
      security: []
      responses:
        '200':
          description: Availability per model and size
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/PublicAvailability'
              example:
                data:
                  region: canada-montreal
                  updatedAt: '2026-09-28T12:00:00.000Z'
                  models:
                  - slug: h100
                    name: NVIDIA H100 PCIe
                    sizes:
                    - id: gpu-h100
                      gpuCount: 1
                      spot: false
                      available: true
                      priceOnRequest: false
                    - id: gpu-h100-x2
                      gpuCount: 2
                      spot: false
                      available: false
                      priceOnRequest: false
                  - slug: h200
                    name: NVIDIA H200 SXM
                    sizes:
                    - id: gpu-h200-sxm-x8
                      gpuCount: 8
                      spot: false
                      available: false
                      priceOnRequest: false
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
  /v1/catalog:
    get:
      summary: Public GPU price catalog
      description: 'PUBLIC, no authentication, read-only. Every GPU machine sold online at a public price, in the versioned price feed schema (same data as https://gpucloud.ca/feeds/gpu-prices.json, the CSV and RSS feeds and https://gpucloud.ca/llms.txt): prices in CAD, taxes extra, dated by catalogDate. `available` and `availabilityUpdatedAt` are present only when read from a fresh stock snapshot (less than 2 minutes old), otherwise omitted. Cached 15 seconds (Cache-Control: max-age=15). Rate limited to 60 requests per minute per IP (429 with Retry-After). CORS open for GET.'
      operationId: getPublicPriceCatalog
      tags:
      - GPU Plans
      security: []
      responses:
        '200':
          description: Price catalog
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/PriceFeed'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    PriceFeed:
      type: object
      required:
      - schemaVersion
      - catalogDate
      - currency
      - region
      - taxesIncluded
      - items
      - onRequest
      properties:
        schemaVersion:
          type: string
          description: Version of this schema (changes when a field changes).
        catalogDate:
          type: string
          format: date
          description: 'Date of the catalog data: the prices are valid from this date.'
        currency:
          type: string
          enum:
          - CAD
        region:
          type: string
          description: Public region (canada-montreal, Montreal, Canada).
        taxesIncluded:
          type: boolean
          enum:
          - false
        items:
          type: array
          items:
            type: object
            required:
            - id
            - model
            - gpuCount
            - vramGb
            - vcpu
            - ramGb
            - diskGb
            - localDiskGb
            - hourlyCad
            - monthlyCad
            - hourlyCadPerGpu
            - hourlyCadPerVramGb
            - pageUrl
            properties:
              id:
                type: string
                description: Catalog product id (on-demand machine).
              model:
                type: string
                description: GPU model, e.g. NVIDIA H100 PCIe.
              gpuCount:
                type: integer
              vramGb:
                type:
                - number
                - 'null'
                description: GPU memory of one GPU, GB.
              vcpu:
                type: integer
              ramGb:
                type: integer
              diskGb:
                type: integer
                description: System disk, GB.
              localDiskGb:
                type: integer
                description: Local work disk, GB (0 when none).
              hourlyCad:
                type: number
                description: Whole machine, CAD per hour, no commitment.
              monthlyCad:
                type:
                - number
                - 'null'
                description: Whole machine, CAD per month, monthly term; null when the machine is sold by the hour only (schema 1.1).
              hourlyCadPerGpu:
                type: number
                description: hourlyCad / gpuCount, 4 decimals.
              hourlyCadPerVramGb:
                type:
                - number
                - 'null'
                description: hourlyCad / (gpuCount x vramGb), 5 decimals.
              spotHourlyCad:
                type: number
                description: Spot machine of the same model and size (interruptible, hourly only), when sold online.
              pageUrl:
                type: string
                format: uri
              available:
                type: boolean
                description: Only when read from a fresh stock snapshot.
        onRequest:
          type: array
          items:
            type: string
          description: GPU models sold on request only (no public price).
        availabilityUpdatedAt:
          type: string
          format: date-time
          description: Only with `available` on the items.
    GpuPlan:
      type: object
      properties:
        id:
          type: string
          example: gpu-l40-x2
        name:
          type: string
          example: NVIDIA L40 × 2
        gpu:
          type: string
          example: 2x NVIDIA L40 (48 GB GDDR6)
        gpuModel:
          type: string
          example: NVIDIA L40
        gpuCount:
          type: integer
          description: GPUs of the server (1, 2, 4 or 8)
          example: 2
        spot:
          type: boolean
          description: 'Spot server: interruptible without notice, hourly billing only'
        hourlyOnly:
          type: boolean
          description: True when only hourly billing is offered (monthly and annual are refused with CYCLE_NOT_AVAILABLE)
        specs:
          type: object
          properties:
            vcores:
              type: integer
              example: 60
            ram:
              type: integer
              description: RAM in GB
              example: 116
            storage:
              type: integer
              description: System disk in GB
              example: 100
            storageType:
              type: string
              example: NVMe
            localStorage:
              type: integer
              description: Local (ephemeral) work disk in GB, 0 when none
              example: 1550
        pricing:
          type:
          - object
          - 'null'
          description: 'Prices billed to the caller, per server (all its GPUs). null when priceOnRequest is true: the plan has no public price and is not sold online (contact us for a quote).'
          properties:
            hourly:
              type: number
              description: On-demand hourly rate in CAD
              example: 3.08
            monthly:
              type:
              - number
              - 'null'
              description: 'Monthly committed rate in CAD (null: hourly only)'
              example: 2248.4
            annual:
              type:
              - number
              - 'null'
              description: 'Annual committed monthly rate in CAD (null: hourly only)'
              example: 2248.4
            currency:
              type: string
              example: CAD
        priceOnRequest:
          type: boolean
          description: True when the plan is sold on request only (no public price, pricing is null, never purchasable online)
        available:
          type: boolean
          description: Whether this server size is currently in stock
        purchasable:
          type: boolean
          description: Whether this GPU plan can be purchased (may be false if plan is visible but not yet offered)
        autoProvisioning:
          type: boolean
          description: Whether this GPU can be auto-deployed via API
        eligibility:
          type: string
          enum:
          - deployable
          - contact
          - out_of_stock
          - disabled
          description: Plan deployment eligibility status
    AccountAction:
      type: object
      description: What to do to fix an account or payment problem, with the direct absolute link. Same object on every route and in the MCP tool errors (structuredContent.error.accountAction). The message is in French when Accept-Language asks for it, otherwise in English.
      properties:
        code:
          type: string
          enum:
          - NO_API_KEY
          - INVALID_API_KEY
          - PAYMENT_REQUIRED
          - BUDGET_CAP_REACHED
          description: Stable machine code. NO_API_KEY and INVALID_API_KEY come with HTTP 401, PAYMENT_REQUIRED and BUDGET_CAP_REACHED with HTTP 402.
        message:
          type: string
          description: Clear sentence telling what to do, including the link.
        action:
          type: object
          properties:
            label:
              type: string
            url:
              type: string
              format: uri
          required:
          - label
          - url
        links:
          type: object
          description: 'Absolute links: account creation, sign in, API keys page, billing, add credits (opens the credit window), payment card, budget or cap setting, documentation.'
          properties:
            signup:
              type: string
              format: uri
            login:
              type: string
              format: uri
            apiKeys:
              type: string
              format: uri
            billing:
              type: string
              format: uri
            addCredits:
              type: string
              format: uri
            paymentMethod:
              type: string
              format: uri
            budget:
              type: string
              format: uri
            documentation:
              type: string
              format: uri
          required:
          - signup
          - login
          - apiKeys
          - billing
          - addCredits
          - paymentMethod
          - budget
          - documentation
        minimumCad:
          type: number
          description: 'PAYMENT_REQUIRED only, when known: credits (CAD) covering one hour of the GPU asked for, computed by the server from the same price as the deployment.'
        minimumTopupCad:
          type: number
          description: Smallest credit purchase accepted (CAD), given with minimumCad.
        balanceCad:
          type: number
          description: 'PAYMENT_REQUIRED and BUDGET_CAP_REACHED, when known: the account''s credit balance (CAD) when the request was refused.'
        hibernationThresholdCad:
          type: number
          description: 'PAYMENT_REQUIRED, when a server is concerned: its hibernation threshold (CAD), the larger of 3 CAD and 2 hours of its hourly rate. A running hourly server is hibernated when the balance reaches its threshold (after the automatic reload was tried); it restarts automatically as soon as the balance is above the threshold. A server is never deleted while the account has credit left. When the balance covers only about 24 hours of what the account spends per hour, a first notice is sent while the servers still run, then two more about 24 hours and 1 hour before the deletion; a server is deleted with its data only once it is out of service (stopped or hibernated for lack of credit, or hibernated by the user for at least 72 hours), once the credit is exhausted (the balance no longer pays the next hour of the account''s servers), after the three notices and at least 24 hours after the first. Adding credits cancels the deletion. For the restart of such a server, minimumCad is the balance that restarts it (threshold + 0.01).'
        capCad:
          type: number
          description: 'BUDGET_CAP_REACHED of an MCP key, for a money cap: the cap reached (CAD). The cap set by the customer is always respected: nothing is charged or reloaded beyond it.'
        capRemainingCad:
          type: number
          description: 'BUDGET_CAP_REACHED of an MCP key, with capCad: what is left of that cap (CAD).'
      required:
      - code
      - message
      - action
      - links
    PublicAvailability:
      type: object
      description: 'Aggregated availability of the GPU catalog: per GPU model and machine size, only whether it can be deployed online right now.'
      properties:
        region:
          type: string
          example: canada-montreal
        updatedAt:
          type: string
          format: date-time
        models:
          type: array
          items:
            type: object
            properties:
              slug:
                type: string
                description: 'Model page: https://gpucloud.ca/{fr|en}/gpu/{slug}'
                example: h100
              name:
                type: string
                example: NVIDIA H100 PCIe
              sizes:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Catalog product id (as in /v1/gpu and POST /servers).
                      example: gpu-h100-x2
                    gpuCount:
                      type: integer
                      example: 2
                    spot:
                      type: boolean
                      description: Interruptible machine, hourly billing only.
                    available:
                      type: boolean
                      description: Deployable online right now.
                    priceOnRequest:
                      type: boolean
                      description: Sold on request only (never deployable online).
                  required:
                  - id
                  - gpuCount
                  - spot
                  - available
                  - priceOnRequest
            required:
            - slug
            - name
            - sizes
      required:
      - region
      - updatedAt
      - models
    AccountActionError:
      type: object
      description: 'Error of an account or payment problem. Backward compatible: `error` keeps its previous string value (for example "Unauthorized" or "INSUFFICIENT_CREDITS"), `message` and the existing details stay; `accountAction` is added.'
      properties:
        error:
          type: string
          description: Previous error string or code, unchanged (backward compatibility).
        message:
          type: string
        requiredCredits:
          type: number
          description: 'INSUFFICIENT_CREDITS: credits (CAD) the action needs.'
        currentBalance:
          type: number
        accountAction:
          $ref: '#/components/schemas/AccountAction'
      required:
      - error
      - accountAction
    Error:
      type: object
      properties:
        error:
          type: string
      required:
      - error
  responses:
    TooManyRequests:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Too many requests
    Unauthorized:
      description: 'No API key (accountAction.code NO_API_KEY) or an invalid, expired, revoked or read only key on a write (INVALID_API_KEY). Provide a valid API key as `Authorization: Bearer <key>`; accountAction gives the links to create an account and a key.'
      headers:
        WWW-Authenticate:
          schema:
            type: string
          description: Bearer realm="gpucloud" (error="invalid_token" when a key was sent).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AccountActionError'
          examples:
            noKey:
              summary: No key sent
              value:
                error: Unauthorized. Use Bearer API key.
                message: 'No API key was sent. Create a GPU Cloud account (https://gpucloud.ca/en/auth/register), then an API key in the console (https://gpucloud.ca/en/console/settings#api-keys), and send it in the header Authorization: Bearer gpu_...'
                accountAction:
                  code: NO_API_KEY
                  message: 'No API key was sent. Create a GPU Cloud account (https://gpucloud.ca/en/auth/register), then an API key in the console (https://gpucloud.ca/en/console/settings#api-keys), and send it in the header Authorization: Bearer gpu_...'
                  action:
                    label: Create an account
                    url: https://gpucloud.ca/en/auth/register
                  links:
                    signup: https://gpucloud.ca/en/auth/register
                    login: https://gpucloud.ca/en/auth/login
                    apiKeys: https://gpucloud.ca/en/console/settings#api-keys
                    billing: https://gpucloud.ca/en/console/billing
                    addCredits: https://gpucloud.ca/en/console/billing?addCredits=25
                    paymentMethod: https://gpucloud.ca/en/console/billing?addCredits=25#payment-method
                    budget: https://gpucloud.ca/en/console/billing#budget-limit
                    documentation: https://gpucloud.ca/en/developers#errors
            invalidKey:
              summary: Invalid, expired or revoked key
              value:
                error: Unauthorized
                message: 'This API key is invalid, expired, revoked or lacks the required permission. Create a new API key in the console (https://gpucloud.ca/en/console/settings#api-keys) and send it in the header Authorization: Bearer gpu_... No account yet: https://gpucloud.ca/en/auth/register'
                accountAction:
                  code: INVALID_API_KEY
                  message: 'This API key is invalid, expired, revoked or lacks the required permission. Create a new API key in the console (https://gpucloud.ca/en/console/settings#api-keys) and send it in the header Authorization: Bearer gpu_... No account yet: https://gpucloud.ca/en/auth/register'
                  action:
                    label: Create an API key
                    url: https://gpucloud.ca/en/console/settings#api-keys
                  links:
                    signup: https://gpucloud.ca/en/auth/register
                    login: https://gpucloud.ca/en/auth/login
                    apiKeys: https://gpucloud.ca/en/console/settings#api-keys
                    billing: https://gpucloud.ca/en/console/billing
                    addCredits: https://gpucloud.ca/en/console/billing?addCredits=25
                    paymentMethod: https://gpucloud.ca/en/console/billing?addCredits=25#payment-method
                    budget: https://gpucloud.ca/en/console/billing#budget-limit
                    documentation: https://gpucloud.ca/en/developers#errors
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Internal server error
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'REST API key (prefix gpu_) created in the GPU Cloud console (Settings). Pass it as `Authorization: Bearer <your-api-key>`. Keys expire after 90 days; a read-only key may only call GET. Write requests (POST, PUT, DELETE) must also send `Origin: https://gpucloud.ca`.'