Download everything
GET /v1/dump returns every item and every guide in one response — for a
bulk consumer that wants a local copy instead of crawling item by item.
curl --compressed -o dump.json https://truefloat.app/api/v1/dump--compressed asks for gzip and unpacks it on arrival, so dump.json is
plain JSON. Leave it off and ask for gzip yourself (-H 'Accept-Encoding: gzip') only if you want to keep the compressed bytes. dump.json looks
like this, with the arrays cut here:
{ "dataset_version": "e9c25a6", "data": { "items": [ { "def_index": 1, "paint_index": 1054, "slug": "deagle-heat-treated", "weapon": "Desert Eagle", "finish": "Heat Treated", "paint_label": "Heat Treated" }, "..." ], "guides": [ { "steam_id": "2941982575", "title": "AK-47 Case Hardened | Blue Gem", "...": "..." }, "..." ] }}Served gzip when Accept-Encoding includes it; always ask for gzip (most
HTTP clients do by default; curl needs --compressed). Measured 2026-09-25:
| items | guides | uncompressed | gzip | |
|---|---|---|---|---|
/v1/dump |
298 | 308 | 30.2 MB | 1.3 MB |
The response is cached per dataset_version and reused for every request —
your first request after a data reload is no slower than any other.
When to use it
Section titled “When to use it”| you’re building… | use |
|---|---|
| a single item page or listing | GET /v1/items/{def}/{paint}/patterns — one item, every seed |
| every listing on a marketplace page | still /patterns, once per item shown |
| a local mirror, search index, or offline dataset | /v1/dump |
| “did the dataset change since I last checked” | GET /v1/meta, compare dataset_version |
Three hundred listings on one page is one /patterns fetch per item, never
three hundred /seeds/{seed} fetches. /v1/dump is for downloading the
dataset once, not for serving a single page — see
Building on the API for polling cadence.
Conditional re-download
Section titled “Conditional re-download”/v1/dump carries the same ETag: "<dataset_version>" as everything else.
Send If-None-Match with the version you already have to skip the download
entirely when nothing changed:
curl --compressed -D - -o dump.json \ -H 'If-None-Match: "e9c25a6"' \ https://truefloat.app/api/v1/dumpHTTP/2 304etag: "e9c25a6"cache-control: public, max-age=3600vary: Accept-Encodingaccess-control-allow-origin: *access-control-expose-headers: ETag, Retry-AfterA 304 has no body, so curl leaves the dump.json you already have as it
is. Send the ETag back exactly as you received it.