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

# Perps Daily Activity

> Chart complete UTC-day perps notional and taker flow for the platform and selected instruments.

`GET /v3/perps/activity/daily` returns one UTC-day row for the complete perps
trade archive, plus matching rows for any instruments you select. One request
can therefore power a platform-total chart and up to 20 instrument series.

Trade coverage begins on `2026-07-08`. The current UTC day has
`complete: false` because more trades can still arrive.

## Request

```text theme={null}
GET /v3/perps/activity/daily
```

### Query parameters

| Parameter     | Type   | Default | Description                                                                         |
| ------------- | ------ | ------- | ----------------------------------------------------------------------------------- |
| `period`      | string | `30d`   | `1d`, `7d`, or `30d`. Do not combine it with explicit dates.                        |
| `start_date`  | date   | none    | Inclusive UTC date in `YYYY-MM-DD` format. Requires `end_date`.                     |
| `end_date`    | date   | none    | Inclusive UTC date in `YYYY-MM-DD` format. Requires `start_date`.                   |
| `interval`    | string | `day`   | Only `day` is supported.                                                            |
| `instruments` | CSV    | none    | Up to 20 instrument IDs, full symbols, or bare assets, for example `6,ETH-USD,sol`. |

An explicit range can contain at most 30 days, including both endpoints. It
cannot begin before `2026-07-08` or end after the current UTC date.

## Examples

Get the platform total for the last seven UTC days:

```bash theme={null}
curl "https://api.polynode.dev/v3/perps/activity/daily?period=7d" \
  -H "x-api-key: $POLYNODE_API_KEY"
```

Add selected instrument series:

```bash theme={null}
curl "https://api.polynode.dev/v3/perps/activity/daily?period=7d&instruments=BTC-USD,ETH-USD" \
  -H "x-api-key: $POLYNODE_API_KEY"
```

```json theme={null}
{
  "interval": "day",
  "timezone": "UTC",
  "period": "7d",
  "start_date": "2026-08-23",
  "end_date": "2026-08-29",
  "coverage_start": "2026-07-08",
  "complete_through": "2026-08-28",
  "first_returned_date": "2026-08-23",
  "last_returned_date": "2026-08-29",
  "latest_trade_at": 1788000000,
  "notional_unit": "pUSD",
  "side_semantics": "taker direction; long is taker buy and short is taker sell",
  "total": {
    "label": "All perps",
    "days": [
      {
        "date": "2026-08-23",
        "complete": true,
        "trade_count": 3812,
        "taker_buy_trade_count": 2010,
        "taker_sell_trade_count": 1802,
        "notional_volume_pusd": "12845000.25",
        "taker_buy_notional_pusd": "6740000.25",
        "taker_sell_notional_pusd": "6105000",
        "net_taker_notional_pusd": "635000.25"
      }
    ]
  },
  "instruments": [
    {
      "instrument_id": 6,
      "symbol": "BTC-USD",
      "days": [
        {
          "date": "2026-08-23",
          "complete": true,
          "trade_count": 1250,
          "taker_buy_trade_count": 700,
          "taker_sell_trade_count": 550,
          "notional_volume_pusd": "5100000.25",
          "taker_buy_notional_pusd": "2900000.25",
          "taker_sell_notional_pusd": "2200000",
          "net_taker_notional_pusd": "700000.25",
          "base_quantity": "79.25",
          "taker_buy_base_quantity": "45.75",
          "taker_sell_base_quantity": "33.5"
        }
      ]
    }
  ]
}
```

With explicit dates, `period` is returned as `custom`. Every requested day is
present even when its counts and decimal strings are zero.

## Metric semantics

| Fields                          | Meaning                                                                       |
| ------------------------------- | ----------------------------------------------------------------------------- |
| `trade_count`                   | Archived executions across all instruments or within the selected instrument. |
| `notional_volume_pusd`          | Sum of price × base quantity, returned as an exact decimal pUSD string.       |
| `taker_buy_*`                   | Trades where the taker side is `long`.                                        |
| `taker_sell_*`                  | Trades where the taker side is `short`.                                       |
| `net_taker_notional_pusd`       | Taker-buy notional minus taker-sell notional. It can be negative.             |
| `base_quantity` and side splits | Base-asset units for one selected instrument only.                            |

The platform `total` deliberately has no base-quantity fields. BTC, ETH, gold,
and other base units are not additive, while pUSD notional is.

## Completeness and freshness

* `complete_through` is yesterday in UTC. The current UTC day has
  `complete: false`.
* `first_returned_date` and `last_returned_date` describe days with archived
  trades; they are `null` for an entirely empty range. The `days` arrays still
  contain the requested zero-filled rectangle.
* `latest_trade_at` is Unix seconds for the newest archived trade in the
  response, or `null` for an empty range.
* When a requested window includes today, the whole request returns `503` if
  the market trade archive tip is more than 15 minutes old. A stale current
  window is never presented as complete or as zero activity.

## No-go interpretations

* Taker BUY/SELL is market-side direction, not maker direction and not a
  wallet-attributed action.
* The trade archive does not attribute these rows to wallets. Do not derive a
  trader leaderboard, wallet flow, or wallet P\&L from this route.
* Notional is pUSD, not base quantity. Base quantities can be compared only
  within the same instrument.
* This route is trade activity, not open interest, funding, positions, or
  liquidations.

## Errors

| Status | Error                                         | When it occurs                                                                                                                                                                   |
| ------ | --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | descriptive request error                     | Unsupported period/interval, conflicting or incomplete dates, a future/reversed/over-30-day range, a date before coverage, empty instrument values, or more than 20 instruments. |
| `400`  | unknown parameter                             | A query parameter is not in this route's allowlist.                                                                                                                              |
| `401`  | authentication error                          | The API key is missing or invalid.                                                                                                                                               |
| `404`  | `unknown instrument`                          | An instrument ID, symbol, or asset cannot be resolved.                                                                                                                           |
| `503`  | `warming up` with `missing: "daily activity"` | A current window cannot pass the 15-minute archive-freshness gate, or the archive is unavailable.                                                                                |

Retry a `503`; do not render it as a zero-activity window.


## OpenAPI

````yaml GET /v3/perps/activity/daily
openapi: 3.1.0
info:
  title: PolyNode API
  description: >-
    Real-time Polymarket data API with decoded mempool settlements, OHLCV
    candles, and full Polygon JSON-RPC proxy.
  contact:
    name: PolyNode
    url: https://polynode.dev
  license:
    name: ''
  version: 2.0.0
servers:
  - url: https://api.polynode.dev
    description: Production
security:
  - api_key: []
paths:
  /v3/perps/activity/daily:
    get:
      tags:
        - Perps
      summary: Perps daily activity
      description: >-
        Complete zero-filled UTC-day pUSD notional and taker-flow series for all
        perps and up to 20 selected instruments. Base quantities are returned
        only within instrument series.
      operationId: perps_activity_daily
      parameters:
        - name: period
          in: query
          required: false
          description: Rolling UTC window. Do not combine with start_date or end_date.
          schema:
            type: string
            enum:
              - 1d
              - 7d
              - 30d
            default: 30d
        - name: start_date
          in: query
          required: false
          description: >-
            Inclusive UTC start date. Requires end_date; coverage begins
            2026-07-08.
          schema:
            type: string
            format: date
        - name: end_date
          in: query
          required: false
          description: >-
            Inclusive UTC end date. Requires start_date; the range can contain
            at most 30 days.
          schema:
            type: string
            format: date
        - name: interval
          in: query
          required: false
          description: Bucket interval. Only day is supported.
          schema:
            type: string
            enum:
              - day
            default: day
        - name: instruments
          in: query
          required: false
          description: >-
            Comma-separated instrument ids, full symbols, or bare assets. At
            most 20 values.
          style: form
          explode: false
          schema:
            type: array
            maxItems: 20
            items:
              type: string
      responses:
        '200':
          description: Complete bounded platform and selected-instrument UTC-day series.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V3PerpsActivityDailyResponse'
        '400':
          description: >-
            Invalid parameter, period, interval, date combination, coverage
            bound, range width, or instrument list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
        '404':
          description: An instrument cannot be resolved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V3PerpsUnknownInstrumentError'
        '503':
          description: >-
            A current window fails closed when the market archive tip is more
            than 15 minutes stale, or the archive is unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V3PerpsActivityUnavailable'
              example:
                error: warming up
                missing: daily activity
      security:
        - api_key: []
components:
  schemas:
    V3PerpsActivityDailyResponse:
      type: object
      additionalProperties: false
      required:
        - interval
        - timezone
        - period
        - start_date
        - end_date
        - coverage_start
        - complete_through
        - first_returned_date
        - last_returned_date
        - latest_trade_at
        - notional_unit
        - side_semantics
        - total
        - instruments
      properties:
        interval:
          type: string
          enum:
            - day
        timezone:
          type: string
          enum:
            - UTC
        period:
          type: string
          enum:
            - 1d
            - 7d
            - 30d
            - custom
        start_date:
          type: string
          format: date
        end_date:
          type: string
          format: date
        coverage_start:
          type: string
          format: date
          enum:
            - '2026-07-08'
        complete_through:
          type: string
          format: date
        first_returned_date:
          type:
            - string
            - 'null'
          format: date
        last_returned_date:
          type:
            - string
            - 'null'
          format: date
        latest_trade_at:
          type:
            - integer
            - 'null'
          format: int64
          description: Newest archived trade timestamp in Unix seconds.
        notional_unit:
          type: string
          enum:
            - pUSD
        side_semantics:
          type: string
        total:
          $ref: '#/components/schemas/V3PerpsActivityTotal'
        instruments:
          type: array
          maxItems: 20
          items:
            $ref: '#/components/schemas/V3PerpsInstrumentActivitySeries'
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
    V3PerpsUnknownInstrumentError:
      type: object
      additionalProperties: false
      required:
        - error
        - instrument
      properties:
        error:
          type: string
          enum:
            - unknown instrument
        instrument:
          type: string
    V3PerpsActivityUnavailable:
      type: object
      additionalProperties: false
      required:
        - error
        - missing
      properties:
        error:
          type: string
          enum:
            - warming up
        missing:
          type: string
          enum:
            - daily activity
    V3PerpsActivityTotal:
      type: object
      additionalProperties: false
      required:
        - label
        - days
      properties:
        label:
          type: string
          enum:
            - All perps
        days:
          type: array
          minItems: 1
          maxItems: 30
          items:
            $ref: '#/components/schemas/V3PerpsActivityDay'
    V3PerpsInstrumentActivitySeries:
      type: object
      additionalProperties: false
      required:
        - instrument_id
        - symbol
        - days
      properties:
        instrument_id:
          type: integer
          format: int32
          minimum: 0
        symbol:
          type:
            - string
            - 'null'
        days:
          type: array
          minItems: 1
          maxItems: 30
          items:
            $ref: '#/components/schemas/V3PerpsInstrumentActivityDay'
    V3PerpsActivityDay:
      type: object
      additionalProperties: false
      required:
        - date
        - complete
        - trade_count
        - taker_buy_trade_count
        - taker_sell_trade_count
        - notional_volume_pusd
        - taker_buy_notional_pusd
        - taker_sell_notional_pusd
        - net_taker_notional_pusd
      properties:
        date:
          type: string
          format: date
        complete:
          type: boolean
        trade_count:
          type: integer
          format: int64
          minimum: 0
        taker_buy_trade_count:
          type: integer
          format: int64
          minimum: 0
        taker_sell_trade_count:
          type: integer
          format: int64
          minimum: 0
        notional_volume_pusd:
          $ref: '#/components/schemas/V3NonNegativeDecimalString'
        taker_buy_notional_pusd:
          $ref: '#/components/schemas/V3NonNegativeDecimalString'
        taker_sell_notional_pusd:
          $ref: '#/components/schemas/V3NonNegativeDecimalString'
        net_taker_notional_pusd:
          $ref: '#/components/schemas/V3SignedDecimalString'
    V3PerpsInstrumentActivityDay:
      type: object
      additionalProperties: false
      required:
        - date
        - complete
        - trade_count
        - taker_buy_trade_count
        - taker_sell_trade_count
        - notional_volume_pusd
        - taker_buy_notional_pusd
        - taker_sell_notional_pusd
        - net_taker_notional_pusd
        - base_quantity
        - taker_buy_base_quantity
        - taker_sell_base_quantity
      properties:
        date:
          type: string
          format: date
        complete:
          type: boolean
        trade_count:
          type: integer
          format: int64
          minimum: 0
        taker_buy_trade_count:
          type: integer
          format: int64
          minimum: 0
        taker_sell_trade_count:
          type: integer
          format: int64
          minimum: 0
        notional_volume_pusd:
          $ref: '#/components/schemas/V3NonNegativeDecimalString'
        taker_buy_notional_pusd:
          $ref: '#/components/schemas/V3NonNegativeDecimalString'
        taker_sell_notional_pusd:
          $ref: '#/components/schemas/V3NonNegativeDecimalString'
        net_taker_notional_pusd:
          $ref: '#/components/schemas/V3SignedDecimalString'
        base_quantity:
          $ref: '#/components/schemas/V3NonNegativeDecimalString'
        taker_buy_base_quantity:
          $ref: '#/components/schemas/V3NonNegativeDecimalString'
        taker_sell_base_quantity:
          $ref: '#/components/schemas/V3NonNegativeDecimalString'
    V3NonNegativeDecimalString:
      type: string
      pattern: ^[0-9]+(?:[.][0-9]+)?$
      description: An exact non-negative decimal encoded as a string.
    V3SignedDecimalString:
      type: string
      pattern: ^-?[0-9]+(?:[.][0-9]+)?$
      description: An exact signed decimal encoded as a string.
  securitySchemes:
    api_key:
      type: apiKey
      in: header
      name: x-api-key

````