Skip to main content

Public Nodes Feed

Every GPU node currently rentable on Lium, as one unauthenticated JSON call. No key, no signup, no rate-limit negotiation — point your ingester at it and start listing us today.

ResourceURL
Live feedhttps://lium.io/api/public/v1/nodes
OpenAPI schemahttps://lium.io/api/openapi.json
Per-model price table (min/max live ask, availability, page URL — one row per GPU model, hourly)https://lium.io/pricing.json — fields on Pricing Pages and Price Feed
curl -sSL https://lium.io/api/public/v1/nodes

Response​

{
"generated_at": "2026-08-17T09:14:03.117Z",
"count": 95,
"nodes": [
{
"id": "ad83de56-8a04-4ab1-ac5a-4ab007b4e2b3",
"gpu_model": "RTX 5090",
"gpu_count": 8,
"available_gpu_count": 8,
"price_per_gpu_hour": 0.55,
"price_per_node_hour": 4.4,
"min_rentable_gpu_count": 8,
"gpu_memory_gb": 32,
"cpu_count": 384,
"ram_gb": 283,
"disk_gb": 2460,
"cpu_model": "AMD EPYC 9654 96-Core Processor",
"network_upload_mbps": 1057.7,
"network_download_mbps": 2535.7,
"uptime_minutes": 4815,
"reliability_score": 97.5,
"disk_type": "nvme",
"tier": "secure",
"country": "Japan",
"country_code": "JP",
"region": "13",
"city": "Tokyo",
"rent_url": "https://lium.io/browse-pods/ad83de56-8a04-4ab1-ac5a-4ab007b4e2b3",
"disk_free_gb": 1435,
"gpu_driver": "570.133.20",
"cuda_driver": "12.8",
"gpu_interconnect": "nvlink",
"region_name": "Tokyo",
"timezone": "Asia/Tokyo"
}
]
}

Fields​

FieldTypeNotes
generated_atISO 8601When this snapshot was built. Use it to detect a stale source.
countintegerNumber of nodes in this response.
idUUIDStable identifier for the node. Safe to use as your primary key.
gpu_modelstring, nullableNormalized name, vendor prefixes stripped — RTX 5090, not NVIDIA GeForce RTX 5090.
gpu_countinteger, nullableGPUs on the node.
available_gpu_countinteger, nullableGPUs free right now. Always at least 1 — a fully rented node leaves the feed.
price_per_gpu_hourfloat, nullableUSD per GPU per hour.
price_per_node_hourfloat, nullableUSD for the whole node per hour, null when the price is unknown. Published so you never have to derive it.
min_rentable_gpu_countinteger, nullableSmallest order we accept on this node. Quoting a single GPU below this number sells an order our checkout refuses.
gpu_memory_gbinteger, nullableVRAM per GPU.
cpu_countinteger, nullableCPU cores on the whole node; a partial rental gets a proportional share.
ram_gbinteger, nullableSystem RAM of the whole node; a partial rental gets a proportional share.
disk_gbinteger, nullableWhole-node disk; a partial rental gets a proportional share.
cpu_modelstring, nullableCPU model string as the host reports it, at most 128 characters, for example AMD EPYC 9654 96-Core Processor.
network_upload_mbpsfloat, nullableMeasured upload speed of the node in Mbps, one decimal. null until Lium has measured it.
network_download_mbpsfloat, nullableMeasured download speed of the node in Mbps, one decimal. null until Lium has measured it.
uptime_minutesinteger, nullableMinutes Lium has seen this node online, counted 15 per validation cycle since the node was first listed. This is cumulative online time, not the current streak.
reliability_scorefloat, nullableProvider reliability over a rolling 14-day window of rentals other than voluntary spot, 0 to 100 with one decimal, recomputed every 12 hours. It counts penalized rentals and rentals that failed to start because of the provider's node. A failed start does not count when it failed on the renter's own image (building, pulling or running it, or the registry login); when the renter deleted the pod before it started; when it failed on Lium's side before the request reached the node; or when it was a reboot of a pod that had started. It is scored per provider, so every node of one provider carries the same value. The Lium browse page shows the same score rounded to a whole percent. null means the provider had neither a billed rental nor a counted failed start in the window, so there is no score; rank an unscored node as unknown, not as 0.
disk_typestring, nullableKind of disk under the node's container storage, as Lium reads it off the kernel: nvme, ssd, hdd, or unknown when it looked and could not tell (a virtual or stacked device, or an unreadable reading). null until Lium has reported it. Rank an unknown or null node as unknown, not as hdd.
tierstring, nullablesecure or spot. A spot node may be reclaimed by its provider at any time.
country, country_code, region, citystring, nullableNode location; region is the subdivision code.
rent_urlstringDeep link straight to the rent page for this node.
disk_free_gbinteger, nullableFree disk on the whole node at the last scrape; a partial rental gets a proportional share. 0 is a full disk, null means not yet reported.
gpu_driverstring, nullableNVIDIA driver build as the host reports it, at most 32 characters, for example 570.133.20.
cuda_driverstring, nullableHighest CUDA version the installed driver supports, as major.minor, for example 12.8. Compare as a version, not as a number.
gpu_interconnectstring, nullablenvlink when every GPU pair on the node is joined by NVLink, pcie when at least one pair is not. null on a single-GPU node, and until our validator has scraped the topology.
region_namestring, nullableName of the subdivision region is the code of, for example Tokyo for 13.
timezonestring, nullableIANA time zone of the node's city, for example Asia/Tokyo.

Only id and rent_url are guaranteed non-null; treat every other field as optional in your ingester.

Location is published to city level and no finer: postal code and coordinates are not in the feed and will not be added to /public/v1.

Freshness​

Lium prices are dynamic — providers set them and they move. The feed is rebuilt at most once per minute, so polling faster than that returns the same snapshot. Once a minute is the right cadence.

Rate limit​

60 requests per minute per IP. If you need more, get in touch and we will raise it for your ingester.

Compatibility promise​

This feed is a published contract, not an internal endpoint that happens to be reachable. Concretely:

  • Fields are only ever added. No field under /public/v1 will be removed or renamed.
  • A field's meaning never changes. If price_per_gpu_hour ever needed to mean something different, it would become a new field, not a redefinition of this one.
  • Breaking changes ship as /public/v2. They never land on /public/v1.
  • A retired version keeps serving for six months after we publish the deprecation notice, so you have half a year to migrate without an outage.

Fields added so far, newest first:

  • 21 Sep 2026: disk_free_gb, gpu_driver, cuda_driver, gpu_interconnect, region_name, timezone — all nullable; a consumer built against the 12 Sep shape keeps working unchanged.
  • 19 Sep 2026: disk_type.
  • 12 Sep 2026: cpu_model, network_upload_mbps, network_download_mbps, uptime_minutes, reliability_score.

Build against /public/v1/nodes and it will keep working.

Listing Lium on your site​

If you run a GPU price comparison site, marketplace, or agent that provisions compute, this feed is everything you need to list us. Ingest it directly — you get correct prices, real availability, and a deploy link that converts.

Questions about a partnership, a higher rate limit, or a custom field: reach us at lium.io.