catalog

List admitted offers (public)

Listed offers on available, admitted machines with a heartbeat in the last 90 seconds; only these can be reserved. Server-side filters are model, gpu_count, max_rate_micro_per_hour, verification_level, continent and template_id; sort defaults to price_asc, and near puts one continent's machines first. There is no VRAM, region, RAM, disk or bandwidth filter: each item carries vram_bytes, region, ram_bytes and disk_bytes when measured, for client-side filtering. With template_id (D-19(c)) every item carries a server-computed fit object. No cached public responses.

get/api/v1/offers

Request

  • Base URL: https://amplerun-api.spiry.org
  • URL: https://amplerun-api.spiry.org/api/v1/offers
  • Auth: none declared

Query parameters

cursorstring

Opaque pagination cursor from a previous response.

limitinteger
template_idstring uuid
Example:3f0e2a55-8c1b-4d2e-9a6f-0b7c1d2e3f40

Compute per-offer fit against this template's vram_fit (D-19(c)). The template's id (UUID), not its slug; resolve a slug with GET /api/v1/templates/{templateId}. Unknown or unpublished template -> 404, a slug -> 422.

fits_for'all'

Additive. all adds fits_template_ids to every item, the ids of every published template that fits that offer under the same rule as template_id, in one read. Any other value -> 422.

sort'price_asc' | 'price_desc' | 'vram_desc' | 'reliability_desc' | 'uptime_desc' | 'newest' | 'verification' | 'net_desc' | 'tflops_desc' | 'ai_speed_desc'

Keyset sort order; an unknown value falls back to price_asc.

verification_level'unverified' | 'auto_verified' | 'manually_verified'

Only machines at exactly this verification level.

include_unverifiedboolean

Also list machines that have not passed admission yet.

min_bandwidth_mbpsinteger

netfacts lane. Only machines whose MEASURED download rate is at least this; machines that never measured are excluded (they cannot claim a rate).

max_rate_micro_per_hourstring

Unsigned base-10 integer as string; never a float.

Example:1

Only offers whose total machine rate is at or below this amount.

gpu_countinteger

Only offers whose machine manifest lists at least this many devices.

modelstring

Case-insensitive substring match on the first device model in the manifest.

tier'container' | 'inference'

Only machines of this tier (D-23).

backend'cuda' | 'rocm' | 'sycl' | 'vulkan' | 'metal'

Only machines with a device serving this backend.

continent'af' | 'an' | 'as' | 'eu' | 'na' | 'oc' | 'sa' | 'americas' | 'AF' | 'AN' | 'AS' | 'EU' | 'NA' | 'OC' | 'SA'

A continent code, case-insensitive, or americas (North and South America).

Only machines on this continent (americas = NA + SA). Machines with an unknown location are excluded. Any other value -> 422.

near'af' | 'an' | 'as' | 'eu' | 'na' | 'oc' | 'sa' | 'americas' | 'AF' | 'AN' | 'AS' | 'EU' | 'NA' | 'OC' | 'SA'

A continent code, case-insensitive, or americas (North and South America).

Order this continent's machines first (lower latency), then by sort. Keeps every other machine. Any other value -> 422.

Response

Page of offer summaries.

next_cursorstring nullable required

Example response

{
  "items": [
    {
      "offer_id": "8b0c2f4e-1d3a-4c5b-9e6f-7a8b9c0d1e2f",
      "machine_id": "5d6e7f80-9a1b-4c2d-8e3f-4a5b6c7d8e9f",
      "observed_at": "2026-09-25T12:00:00Z",
      "offer_version": "3",
      "expected_version": "12",
      "readiness": "ready",
      "total_rate_micro_per_hour": "450000",
      "platform_fee_bps": 500,
      "included_quotas": {
        "included_disk_gib": 100,
        "included_egress_gib": 50
      },
      "available_from": "2026-09-25T00:00:00Z",
      "available_until": "2026-10-25T00:00:00Z",
      "maintenance_windows": [],
      "gpu_count": 1,
      "model": "NVIDIA GeForce RTX 4090",
      "vram_bytes": "25757220864",
      "region": "us-east-1",
      "manifest_hash": "sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
      "verification_level": "auto_verified",
      "admitted": true,
      "fit": {
        "fits": true,
        "reason": "ok"
      }
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.