---
title: "Batch CS2 asset ownership history lookup by float and/or paint-seed identity"
method: POST
path: "/api/assets/find"
tags: ["Assets"]
---

# Batch CS2 asset ownership history lookup by float and/or paint-seed identity

`POST /api/assets/find`

## Request

- Base URL: `https://www.steamwebapi.com`
- URL: `https://www.steamwebapi.com/api/assets/find`
- Auth: API key in query parameter `key`

Baseurl: https://www.steamwebapi.com/api/assets/find?key=YOUR_API_KEY

    💬 **What this endpoint does:**
    - Looks up CS2 items by any combination of float, def_index and paint_seed, and returns the full ownership timeline of every matching physical item — each previous SteamID64 owner and each market listing in between, oldest first.

    🛠️ **How identity matching works:**
    - A physical CS2 item keeps the same (def_index, paint_seed, float) forever, even as its asset_id and owner change on every trade. Send all three and you address exactly one item; send fewer and you get every item that fits.
    - Accepted combinations: `float` alone, `def_index` + `paint_seed`, or any mix of the three. `def_index` alone or `paint_seed` alone is refused — each would match six figures of rows, so the answer would be useless.
    - `float` is matched at the precision you send, so a rounded/displayed float still finds the stored value (12 decimals ≈ ±1e-12; fewer decimals widen the match). At least 6 decimals are required.
    - `paint_index` is an extra filter, never a search key on its own.
    - Field names are accepted in both spellings: `def_index` / `paint_seed` / `paint_index` as documented, and `defindex` / `paintseed` / `paintindex` as they appear in the response — so an identity can be copied straight out of a previous result.
    - Coverage is inherent, not a bug: an item only has history if this platform tracked it under a previous owner before. Items whose first owner is still the current one come back with a single owner entry.

    🌐 **How to use:**
    - POST a JSON body: `{"items": [{"float": "0.030868796632", "def_index": 7, "paint_seed": 915, "ref": "my-id"}, ...]}`.
    - Every entry answers with `matched` (how many physical items fit) and `items` (one timeline each). A full triple gives `matched: 1`; a partial key can give many.
    - At most 25 items are returned per entry. `truncated: true` says more existed — narrow the key to see them.
    - `data` is always the same length as `items` you sent, in the same order. `ref` is optional, echoed back, and the safer way to correlate.
    - Pass `steam_id` (SteamID64) to state which owner in each timeline is the current one; when omitted, the newest owner segment is treated as current.
    - Malformed entries never fail the batch — they come back individually as `status: "invalid"` with a reason.
    - Credits: 1 per entry sent, regardless of how many items it matched (found, not_found and invalid all count).

## Request body

- object
  - `items` object[], required: 1-5000 item keys to look up. Each entry needs either float (>= 6 decimals) or both def_index and paint_seed; any combination of the three is accepted.
    - `float` string, nullable: At least 6 decimals. Selective on its own.
    - `def_index` integer, nullable: Only usable together with paint_seed or float. Also accepted as defindex.
    - `paint_seed` integer, nullable: Only usable together with def_index or float. Also accepted as paintseed.
    - `paint_index` integer, nullable: Extra filter, never a search key on its own. Also accepted as paintindex.
    - `ref` string, nullable: Echoed back on the result, max 64 chars.
  - `steam_id` string, nullable

## Response `200`

Request was successful.

- unknown

## Other responses

- `400`: items resolved to nothing usable, for example "items": null.
- `402`: Rate limit exceeded (daily or monthly), or endpoint not included in your package.
- `421`: Request body is missing or not valid JSON.
- `422`: Body failed validation: items empty, not an array or above 5000 entries, or steam_id is not a SteamID64. The response lists each failing field.
- `429`: Too many requests per minute for this API key — see config/packages/rate_limiter.yaml (assets_find).

---

[API](https://skmtc.dev/steamwebapi/apis/steamwebapi-com-third-party-steam-market-api-documentation.md) · [All operations](https://skmtc.dev/steamwebapi/apis/steamwebapi-com-third-party-steam-market-api-documentation/llms.txt) · [OpenAPI document](https://skmtc.dev/steamwebapi/apis/steamwebapi-com-third-party-steam-market-api-documentation/revisions/f9a4109cbda6?raw)
