> ## Documentation Index
> Fetch the complete documentation index at: https://skinshark.gg/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# SkinShark API

> Programmatic access to merchant accounts, sub-users, wallets, deposits, and trades on the SkinShark CS2 marketplace.

The SkinShark API is a server-to-server interface that lets your backend manage
merchant accounts, provision sub-users, fund wallets, list trades, and execute
purchases on cross-marketplace inventory. It's the same surface the SkinShark
dashboard runs on.

## What you can do with it

<CardGroup cols={2}>
  <Card title="Provision sub-users" href="/docs/guides/on-behalf-of">
    Create end-user accounts under your merchant. Each gets its own wallet,
    Steam trade URLs, and trade history.
  </Card>

  <Card title="Fund wallets" href="/docs/integration/full-platform">
    Move balance from your merchant account to any sub-user with idempotent
    transfers, or accept deposits via Gate Pay, on-ramp cards, or self-hosted
    EVM crypto.
  </Card>

  <Card title="Buy items" href="/docs/api-reference/buymarketitems">
    Buy specific listings or hand the server a target item and let it pick
    cheapest-fill across marketplaces.
  </Card>

  <Card title="React in real time" href="/docs/guides/websocket">
    Subscribe to deposit and trade events over a per-user WebSocket, or set
    up signed HTTPS webhooks.
  </Card>
</CardGroup>

## Base URL

```http theme={null}
https://api.skinshark.gg
```

## Authentication

Send your merchant API key on every request:

```http theme={null}
api-key: sk_live_...
```

Keys are hashed at rest, optionally bound to source IPs, and revocable from
the dashboard. To act as a specific sub-user, add an `On-Behalf-Of` header.
See [Authentication](/docs/guides/authentication) and [Acting on behalf of a sub-user](/docs/guides/on-behalf-of).

## Response envelope

Every JSON response is wrapped:

```json theme={null}
{
  "requestId": "01900b3f-1ad0-7ab1-9d8a-7b2f54e1d14c",
  "success": true,
  "data": { }
}
```

Error responses replace `data` with `error`:

```json theme={null}
{
  "requestId": "01900b3f-...",
  "success": false,
  "error": {
    "code": 1500,
    "key": "INSUFFICIENT_BALANCE",
    "message": "Insufficient balance"
  }
}
```

The schemas in the [API reference](/docs/api-reference) describe the inner `data`
shape only; the envelope is implicit. See [Response envelope](/docs/guides/envelope)
for handling patterns.

## TypeScript-first

Every endpoint in this site is typed in TypeScript via the OpenAPI spec.
[Generate types](/docs/guides/sdk) with `openapi-typescript` and pair them
with a small `fetch` wrapper — full IntelliSense, zero runtime
dependencies, drift-free with the spec.

```ts theme={null}
import type { paths } from "./skinshark-api";

type CreateSubUserBody =
  paths["/merchant/users"]["post"]["requestBody"]["content"]["application/json"];

type CreateSubUserResponse =
  paths["/merchant/users"]["post"]["responses"]["201"]["content"]["application/json"]["data"];
```

## Where to start

<Steps>
  <Step title="Make your first authenticated call">
    [Quickstart](/docs/quickstart) — search items, fetch live listings, place a buy
    order in under 5 minutes.
  </Step>

  <Step title="Pick an integration mode">
    [Core API](/docs/integration/core-api) for one shared merchant account, or
    [Full Platform](/docs/integration/full-platform) for one merchant with isolated
    sub-users.
  </Step>

  <Step title="Wire real-time events">
    [WebSocket](/docs/guides/websocket) for low-latency in-app updates,
    [Webhooks](/docs/guides/webhooks) for durable server-side delivery.
  </Step>
</Steps>
