# Scanna Open Interest

> Scanna Open Interest is a paid API for AI agents from api.scanna.xyz, paid per call via x402, $0.010016/call, status unknown (last checked 2026-09-14).

Returns Polymarket open interest in USD, either platform-wide or scoped to a single market by its condition ID

## Facts

- Endpoint: GET https://api.scanna.xyz/open-interest
- Price: $0.010016/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/scanna-open-interest-08e49da4
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap__mqyEw3oApAYMuRWja73X

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability scanna-open-interest-08e49da4
```

Example prompt: What's the current total open interest across all of Polymarket right now, and can you also tell me the open interest specifically for the market with condition ID 0x4bec3c72f4abe4f4f73df38d8eae37ad5b30b95a211b29df0e6b2e49ba87e3c4?

## When to prefer this

Use this endpoint when you need Polymarket open interest figures — either platform-wide or per-market — with clear error semantics (400 for bad input, 404 for unknown valid IDs, never a silent empty 200). Prefer it over scraping Polymarket directly when you need structured USD open interest data with caching and error transparency. It is purpose-built for Polymarket condition IDs and will not silently accept ambiguous inputs.

## Known failure modes

- 400 Bad Request: market_id provided but not a valid 0x + 64 hex Polymarket condition ID (e.g. passing 'GLOBAL', whitespace, or malformed IDs)
- 404 Not Found: well-formed condition ID supplied but not recognized by upstream Polymarket data
- Stale data: response served from 60-second cache, disclosed via X-Data-Freshness header
- Upstream unavailability causing propagation delays or errors

## How this service works

Open interest in USD. Omit market_id for the platform-wide aggregate, or pass a Polymarket condition id (0x + 64 hex) to scope it to one market. Anything else - empty, whitespace, a repeated or bracketed parameter, or the literal GLOBAL - is 400, not silently answered as an aggregate. A well-formed id upstream does not know is 404, never an empty 200. 60-second shared cache; a stale read is disclosed on X-Data-Freshness and still served.

## Output

A JSON object containing open_interest_usd (a number representing total open interest in USD) and market_id (null for platform-wide aggregate, or the echoed condition ID for a scoped request). The response also includes an X-Data-Freshness header indicating whether data is fresh or served from the 60-second shared cache.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "market_id": {
       "type": "string",
       "pattern": "^0[xX][0-9a-fA-F]{64}$",
       "description": "Polymarket condition id. OMIT for the platform-wide aggregate. A value that is not a condition id is 400 — including the literal GLOBAL, which upstream uses to label its own aggregate row."
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "open_interest_usd",
      "market_id"
     ],
     "properties": {
      "market_id": {
       "type": [
        "string",
        "null"
       ],
       "description": "The condition id this figure describes, echoed back. NULL means the platform-wide aggregate — a scoped request always echoes its own id, never null."
      },
      "open_interest_usd": {
       "type": "number",
       "description": "Open interest in USD"
      }
     }
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/scanna-open-interest-08e49da4/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scanna.xyz](https://www.zero.xyz/host/api.scanna.xyz/llms.txt)
