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

# Demand & Intent — Console endpoints reference

> Console demand leaderboards and individual console profiles showing buyer intent and momentum by platform. Scope: demand-intent.read.

The console demand endpoints show which retro gaming platforms are attracting the most buyer activity — measured by purchase-intent clicks and unique user reach. Use them to decide which platforms to focus your sourcing on: if SNES demand is outpacing N64 this week, that's where your inventory dollars have the highest chance of turning over. All endpoints on this page require the `demand-intent.read` scope and a valid `Authorization: Bearer <token>` header.

## Console demand vs. game demand

Console demand rows share the same `intent` and `momentum` structure as game demand rows, but they **exclude** `watch` and `pricing` fields. A console is a platform category, not a sellable item, so there are no watchlist alerts or price points at the console level. Use the [game demand endpoints](/api/demand-games) to get pricing and watch data for individual titles on a given platform.

## Console demand score

The console `demand_score` is a 0–100 index that blends intent and reach into one comparable number. Intent (redirect volume) is the primary signal; reach (distinct users) is the secondary signal. There is no watch component — a console is not a sellable item, so there are no watchlist alerts at the platform level. The highest-ranked console in the result set always scores 100; all others are scaled relative to it.

## Common query parameters

All list endpoints on this page share the following query parameters.

<ParamField query="period" type="string" default="7d">
  The time window to aggregate over. One of `day`, `7d`, or `30d`.
</ParamField>

<ParamField query="date" type="string">
  Override the target date. Defaults to the latest computed date for the selected period. Format: `YYYY-MM-DD`.
</ParamField>

<ParamField query="limit" type="integer" default="25">
  Page size. Capped by your plan's `max_page_size`.
</ParamField>

<ParamField query="page" type="integer" default="1">
  Page number (page-mode pagination).
</ParamField>

<ParamField query="cursor" type="string">
  Cursor token for cursor-mode pagination. Pass `paginate=cursor` to opt in.
</ParamField>

<ParamField query="paginate" type="string" default="page">
  Pagination mode. Set to `cursor` to use cursor-based pagination.
</ParamField>

***

## GET /api/v1/demand-intent/consoles

Returns a ranked leaderboard of consoles by buyer demand for the selected period. Use this to identify which platforms are hottest right now and align your sourcing accordingly.

```bash theme={null}
curl -s "https://api.8bitedge.com/api/v1/demand-intent/consoles" \
  -H "Authorization: Bearer $TOKEN" | jq
```

### Query parameters

In addition to the [common parameters](#common-query-parameters):

<ParamField query="sort" type="string" default="intent">
  Sort order for the leaderboard. One of:

  * `intent` — by redirect volume (default)
  * `momentum` — by the momentum ratio descending (fastest-rising first)
</ParamField>

### Response

Returns a paginated array of console leaderboard rows. The `meta` object includes the resolved `period`, `period_date`, and `sort`.

<ResponseField name="data" type="array">
  Array of console leaderboard rows.

  <ResponseField name="rank" type="integer">
    The console's rank within the current period and sort. Precomputed from the demand metrics tables.
  </ResponseField>

  <ResponseField name="console" type="object">
    Console identity fields.

    <ResponseField name="id" type="integer">Unique console ID.</ResponseField>
    <ResponseField name="name" type="string">Display name of the console.</ResponseField>
  </ResponseField>

  <ResponseField name="intent" type="object">
    Purchase-intent signals derived from redirect clicks to eBay listings for games on this platform.

    <ResponseField name="redirects" type="integer">Total purchase-intent clicks across all games on this console in the period.</ResponseField>
    <ResponseField name="distinct_users" type="integer">Number of unique users who clicked through.</ResponseField>
    <ResponseField name="mobile_share" type="float">Fraction of clicks from mobile devices (0.0–1.0).</ResponseField>
  </ResponseField>

  <ResponseField name="momentum" type="object">
    Acceleration of platform-wide intent relative to the 30-day baseline.

    <ResponseField name="value" type="float">Computed ratio. `null` when no 30-day baseline exists.</ResponseField>
    <ResponseField name="label" type="string">`rising`, `steady`, `cooling`, or `unknown`.</ResponseField>
  </ResponseField>

  <ResponseField name="demand_score" type="integer">
    Composite 0–100 demand index. The highest-ranked console in the result set always scores 100.
  </ResponseField>
</ResponseField>

<ResponseField name="meta" type="object">
  <ResponseField name="period" type="string">The resolved period (`day`, `7d`, or `30d`).</ResponseField>
  <ResponseField name="period_date" type="string">The date the data was computed for (YYYY-MM-DD).</ResponseField>
  <ResponseField name="sort" type="string">The active sort (`intent` or `momentum`).</ResponseField>
  <ResponseField name="pagination" type="object">Standard pagination metadata.</ResponseField>
</ResponseField>

**Example response:**

```json theme={null}
{
  "data": [
    {
      "rank": 1,
      "console": { "id": 19, "name": "Nintendo SNES" },
      "intent": { "redirects": 5400, "distinct_users": 3200, "mobile_share": 0.38 },
      "momentum": { "value": 1.1, "label": "steady" },
      "demand_score": 100
    }
  ],
  "meta": {
    "period": "7d",
    "period_date": "2026-06-16",
    "sort": "intent",
    "pagination": { "mode": "page", "page": 1, "per_page": 25, "total": 48, "last_page": 2 }
  },
  "links": { "next": "https://api.8bitedge.com/api/v1/demand-intent/consoles?page=2", "prev": null }
}
```

***

## GET /api/v1/demand-intent/consoles/{console_id}

Returns a full demand profile for one console, with metrics shown side-by-side across all three periods (`day`, `7d`, `30d`). Use this to understand whether platform-wide interest in a specific system is growing, stable, or declining over time.

```bash theme={null}
curl -s "https://api.8bitedge.com/api/v1/demand-intent/consoles/19" \
  -H "Authorization: Bearer $TOKEN" | jq
```

### Path parameters

<ParamField path="console_id" type="integer" required>
  The numeric ID of the console. You can resolve IDs from the [Consoles catalog endpoint](/api/consoles).
</ParamField>

### Response

<ResponseField name="data" type="object">
  <ResponseField name="console" type="object">
    <ResponseField name="id" type="integer">Console ID.</ResponseField>
    <ResponseField name="name" type="string">Display name of the console.</ResponseField>
  </ResponseField>

  <ResponseField name="periods" type="object">
    Demand metrics for each time window.

    <ResponseField name="day" type="object">
      <ResponseField name="redirects" type="integer">Purchase-intent clicks in the last day.</ResponseField>
      <ResponseField name="distinct_users" type="integer">Unique users in the last day.</ResponseField>
      <ResponseField name="rank" type="integer">Console leaderboard rank for the day period.</ResponseField>
    </ResponseField>

    <ResponseField name="7d" type="object">
      <ResponseField name="redirects" type="integer">Purchase-intent clicks in the last 7 days.</ResponseField>
      <ResponseField name="distinct_users" type="integer">Unique users in the last 7 days.</ResponseField>
      <ResponseField name="rank" type="integer">Console leaderboard rank for the 7-day period.</ResponseField>
    </ResponseField>

    <ResponseField name="30d" type="object">
      <ResponseField name="redirects" type="integer">Purchase-intent clicks in the last 30 days.</ResponseField>
      <ResponseField name="distinct_users" type="integer">Unique users in the last 30 days.</ResponseField>
      <ResponseField name="rank" type="integer">Console leaderboard rank for the 30-day period.</ResponseField>
    </ResponseField>
  </ResponseField>

  <ResponseField name="momentum" type="object">
    <ResponseField name="value" type="float">Momentum ratio (7-day pace vs. 30-day baseline). `null` if no baseline.</ResponseField>
    <ResponseField name="label" type="string">`rising`, `steady`, `cooling`, or `unknown`.</ResponseField>
  </ResponseField>
</ResponseField>

**Example response:**

```json theme={null}
{
  "data": {
    "console": { "id": 19, "name": "Nintendo SNES" },
    "periods": {
      "day":  { "redirects": 770,   "distinct_users": 510,   "rank": 1 },
      "7d":   { "redirects": 5400,  "distinct_users": 3200,  "rank": 1 },
      "30d":  { "redirects": 21000, "distinct_users": 12800, "rank": 1 }
    },
    "momentum": { "value": 1.1, "label": "steady" }
  }
}
```

<Note>
  Returns `404 not_found` if the `console_id` does not correspond to an enabled console in the catalog.
</Note>

<Tip>
  To drill down from a console profile into the specific games driving its demand, use `GET /api/v1/demand-intent/games?console_id={console_id}`.
</Tip>
