Skip to Content
Canonical source of truth stays in the repository docs. This site is the polished presentation layer.
Surface Map

Resources, Workflows, And Surface Map

This page answers the practical question every user hits first:

Which part of the SDK should I use for this task?

The Main Layers

SurfaceUse It ForTypical User
new CsfloatSdk(...)Normal entrypoint that wires every resource togetherAlmost everyone
sdk.metaschema, bootstrap metadata, screenshot helpers, inspect lookupdashboards, research tools
sdk.listingspublic market reads plus listing writes, bids, buy-now, watchlist mutationsscanners, trading tools, sellers
sdk.accountauthenticated account workflows: trades, offers, watchlist, buy orders, tokens, payments, settingsbots, seller tools, operator panels
sdk.inventoryauthenticated inventory readssellers, dashboards
sdk.stallpublic seller stall reads and cursor iterationscanners, seller profile tools
sdk.userspublic user profile lookupdashboards, enrichers
sdk.historysales and graph history for market_hash_name-driven analysispricing tools, analytics
sdk.loadoutpublic loadout browse plus recommender-token companion flowsloadout tools
sdk.workflowshigher-level multi-call task helpersdashboards, scripts, CLI, quick automation
package-root helpersquery presets, builders, constants, schema helpers, pagination helpersusers who want less glue code
sdk.client / CsfloatHttpClientlow-level transport control and response metadataadvanced wrappers, operators

If You Want X, Use Y

TaskRecommended Surface
fetch the current public market pagesdk.listings.getListings(getPublicMarketPageParams())
fetch homepage-like public feedssdk.workflows.getPublicMarketFeeds() or getHomepageFeedParams()
read your own account snapshotsdk.account.getMe()
build a simple account dashboardsdk.workflows.getAccountWorkspace()
iterate a cursor-based watchlist or stallsdk.account.iterateWatchlist() / sdk.stall.iterateStall()
place or research buy orderssdk.account.*BuyOrder* plus buy-order builders
mutate listingssdk.listings.create*, update*, delete*
inspect a single item linksdk.meta.inspectItem()
work with schema or screenshot mediasdk.meta.getSchema() plus schema helpers
browse or mutate loadoutssdk.loadout.* plus recommender token flow
inspect raw headers or rate limitssdk.client.getWithMetadata() and friends

Public, Authenticated, And Companion Surfaces

The SDK spans three related but different surfaces:

  1. main CSFloat API https://csfloat.com/api/v1
  2. loadout companion API https://loadout-api.csfloat.com/v1
  3. inspect companion lookup https://api.csfloat.com/?url=<inspectLink>

What this means in practice:

  • sdk.meta, sdk.listings, sdk.users, sdk.stall, sdk.history, and most of sdk.account talk to the main API
  • sdk.loadout talks to the loadout companion surface
  • sdk.meta.inspectItem() uses the inspect companion surface with the headers the route expects

Authentication Model

There are two normal auth stories:

  1. your CSFloat API key Used when you instantiate CsfloatSdk
  2. a recommender token Minted via sdk.account.createRecommenderToken(), then used for token-auth loadout writes and recommendation flows

Typical loadout flow:

const recommender = await sdk.account.createRecommenderToken(); const recommendations = await sdk.loadout.recommendForSkin( recommender.token, 7, 72, { count: 5 }, );

Pagination Models

There are three patterns in the SDK:

  1. cursor pagination Used by public listings, public stalls, watchlists, and notifications
  2. page-based pagination Used by some account reads such as offers, trades, transactions, and buy orders
  3. plain limit-only reads Used by endpoints that do not expose a richer paginator

When a cursor route matters often enough, the SDK exposes an async iterator:

  • sdk.listings.iterateListings()
  • sdk.account.iterateWatchlist()
  • sdk.stall.iterateStall()

If you need to build your own iterator for a custom cursor endpoint, use paginateCursor() directly. See Helpers, Builders, And Constants.

  • sdk.listings The public market and listing mutation layer.
  • sdk.account.getWatchlist() An authenticated market-shaped feed of listings you care about.
  • sdk.stall.getStall(userId, ...) A public market-shaped feed of one seller’s inventory.

This is why many of the query patterns feel similar across those surfaces: they all revolve around listing-shaped payloads, but they are still distinct endpoints with distinct caveats.

When Workflows Are The Better API

Use sdk.workflows when the task is naturally multi-call and you do not want to rebuild the same orchestration each time.

  • getPublicMarketFeeds() Pull the public search page plus current top-deals/newest/unique homepage feeds.
  • getAccountWorkspace() Pull me, watchlist, stall, offers, trades, and auto-bids in one opinionated snapshot.
  • getSingleSkinBuyOrderInsights() Build an expression preview, fetch similar buy orders, and fetch matching listings.

If you need full control over every query param, use the underlying resource methods instead.

When Helpers And Builders Are The Better API

Use helper exports when the request shape is real but annoying to compose repeatedly:

  • buy-order expression builders
  • market presets and filter builders
  • loadout recommendation builders
  • schema lookup helpers
  • wear presets

Use the full reference here:

Last updated on