The Portfolio API supports two complementary use cases: stateless valuation for one-off item lists you send in the request body, and saved portfolios that persist items and transactions under your account for ongoing tracking and historical analysis. Portfolio item limits are 1,000 items for Free and Starter accounts, 5,000 for Pro, and 10,000 for Quant — the same limit applies regardless of how items were added.Documentation Index
Fetch the complete documentation index at: https://docs.cs2cap.com/llms.txt
Use this file to discover all available pages before exploring further.
Portfolio management
POST /portfolio
Creates a new empty portfolio under your account. Auth: API key requiredRequest body
Display name for the portfolio.
GET /portfolio
Returns all saved portfolios for your account. Auth: API key requiredDELETE /portfolio/:id
Permanently deletes a portfolio and all of its saved items and transactions. Auth: API key requiredUUID of the portfolio to delete.
Valuation
POST /portfolio/value
Values a user-supplied item list using the current best ask across the selected providers. Use this for one-off valuations without creating a saved portfolio. Tiers: Free, Starter, Pro, Quant · Rate limit: Free 20 req/min · Starter 40 req/min · Pro 100 req/min · Quant 300 req/minArray of objects, each with
item_id (integer) and quantity (integer). Maximum 100 items per request.Optional provider filter. Omit to use all available providers.
Target output currency (ISO 4217).
Request body
Response example
Per-item valuation results.
Sum of all
item_value entries.Number of items successfully priced.
Item IDs from the request that could not be matched in the catalog.
GET /portfolio/:id/value
Values all items currently in a saved portfolio using live market prices. Auth: API key requiredUUID of the portfolio to value.
Target output currency (ISO 4217).
Optional provider filter. Repeat to pass multiple values.
This is a live valuation based on current indexed prices, not a historical replay.
Import and export
POST /portfolio/:id/import
Imports items from your linked Steam inventory into a saved portfolio. If you omitasset_ids, the full inventory is imported.
Auth: API key required + linked Steam account
UUID of the destination portfolio.
Request body (optional asset filter)
Items already saved under the same Steam asset ID are skipped automatically. Items that cannot be matched to a catalog entry are returned in
unresolved and are not stored.POST /portfolio/:id/import/csv
Uploads a CSV file to bulk import transactions or snapshot-style holdings into a portfolio. Auth: API key requiredUUID of the destination portfolio.
Both ledger and snapshot CSV formats are supported. The format is detected automatically from the CSV headers. Buy transactions imported from CSV can create missing portfolio items automatically.
GET /portfolio/:id/export
Downloads portfolio data as a CSV file. Auth: API key requiredUUID of the portfolio to export.
Export format. One of:
transactions, items.Portfolio items
GET /portfolio/:id/items
Returns the items currently stored in a portfolio. Auth: API key requiredUUID of the portfolio.
POST /portfolio/:id/items
Manually adds one item to a portfolio. Auth: API key requiredUUID of the portfolio.
Catalog item ID. Provide either
item_id or market_hash_name.Number of units to add.
Phase variant for Doppler/Gamma items, or
null.Request body
DELETE /portfolio/:id/items/:entry_id
Removes a saved portfolio entry. Auth: API key requiredUUID of the portfolio.
Portfolio entry UUID. This is the UUID assigned to the portfolio entry — it is not the catalog
item_id.entry_id is the portfolio entry UUID, not the catalog item_id. You can retrieve it from GET /portfolio/:id/items.Transactions
GET /portfolio/:id/transactions
Returns the portfolio’s buy/sell ledger, newest first. Auth: API key requiredUUID of the portfolio.
POST /portfolio/:id/transactions
Records a buy or sell transaction for an item in the portfolio. Auth: API key requiredUUID of the portfolio.
Catalog item ID. Provide either
item_id or market_hash_name.Transaction direction. One of:
buy, sell.Number of units transacted.
Price per unit in the specified currency.
Transaction date in
YYYY-MM-DD format.Marketplace where the transaction occurred (e.g.,
skinport).Currency for the price (ISO 4217).
Request body
Buy transactions can automatically create portfolio items for items not yet tracked in the portfolio.
PATCH /portfolio/:id/transactions/:tx_id
Partially updates an existing transaction. Auth: API key requiredUUID of the portfolio.
UUID of the transaction to update.
Updated unit count.
Updated price per unit.
Updated date in
YYYY-MM-DD format.Absolute fee paid, in the transaction currency.
Fee as a percentage of the transaction total.
Updated marketplace name.
Free-text note for this transaction.
Updated transaction currency (ISO 4217).
DELETE /portfolio/:id/transactions/:tx_id
Permanently deletes a transaction from the portfolio ledger. Auth: API key requiredUUID of the portfolio.
UUID of the transaction to delete.
Historical valuation
GET /portfolio/:id/history
Rebuilds daily portfolio values from the transaction ledger. Returns a time series of portfolio worth over the selected date range. Auth: API key requiredUUID of the portfolio.
Inclusive start date in
YYYY-MM-DD format.Inclusive end date in
YYYY-MM-DD format. Defaults to today.Optional window such as
30d. When provided, it overrides start_date.Target output currency (ISO 4217).
Optional provider filter. Repeat to pass multiple values.
Maximum number of daily data points to return.
Opaque cursor from the previous page for cursor-based pagination.
Historical valuation is daily only. Each day’s value uses the best available price across your selected providers. If no price update exists for a given day, the most recent available price is used.
pagination.total is always -1 — use next_cursor to paginate.