{
 "openapi": "3.1.0",
 "info": {
  "title": "Full Port",
  "version": "1.0.0",
  "summary": "The Full Port show and live markets, open to agents and developers.",
  "description": "Full Port is the markets, crypto and AI show hosted by gmoney and Hunter Orrell. Live every Tuesday and Thursday at 10:30 AM ET. Every episode with the hosts' calls (priced by Indeix when said, with the move since) and full transcripts, plus live market data. No key or sign up. Free to read, quote and build on. Credit Full Port and link back to fullportshow.com. Nothing here is investment advice. For MCP clients (Claude, ChatGPT, Grok, Cursor), connect to https://fullportshow.com/mcp. Setup: https://fullportshow.com/agents/ Developer docs: https://fullportshow.com/developers/ Versioning: market endpoints live under /api/v1/ (unversioned /api/ paths are aliases); breaking changes ship as /api/v2/ with 90 days of notice and Deprecation and Sunset headers. Errors are RFC 9457 problems. Rate limit: 240 requests a minute per address.",
  "contact": {
   "name": "Full Port",
   "email": "hello@fullportshow.com",
   "url": "https://fullportshow.com/developers/"
  },
  "x-versioning": "The live market endpoints are versioned in the path: /api/v1/. Unversioned /api/ paths are aliases of the current version. A breaking change ships as /api/v2/ with at least 90 days of notice, announced on v1 answers with Deprecation and Sunset headers. Every answer carries API-Version.",
  "x-rate-limit": "240 requests a minute per address, counted per edge location. RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset on every answer; 429 with Retry-After past the limit.",
  "x-errors": "Errors are RFC 9457 problems (application/problem+json) with type, title, status and detail."
 },
 "servers": [
  {
   "url": "https://fullportshow.com"
  }
 ],
 "security": [],
 "externalDocs": {
  "description": "Developer docs: quickstart, endpoints, errors, rate limits and versioning",
  "url": "https://fullportshow.com/developers/"
 },
 "tags": [
  {
   "name": "Show",
   "description": "Episodes, calls and transcripts"
  },
  {
   "name": "Markets",
   "description": "Live market data from Indeix"
  },
  {
   "name": "Markdown",
   "description": "Pages as Markdown for reading"
  }
 ],
 "paths": {
  "/data/episodes.json": {
   "get": {
    "operationId": "listEpisodes",
    "summary": "Every episode",
    "description": "The show, its schedule, the next show time, and every episode newest first with links to its full data.",
    "responses": {
     "200": {
      "description": "The show and its episodes",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Episodes"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Show"
    ]
   }
  },
  "/data/latest.json": {
   "get": {
    "operationId": "getLatestEpisode",
    "summary": "The newest episode",
    "description": "The newest episode: summary, calls with prices, chapters, clips and the transcript.",
    "responses": {
     "200": {
      "description": "One episode",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Episode"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Show"
    ]
   }
  },
  "/data/episodes/{date}.json": {
   "get": {
    "operationId": "getEpisode",
    "summary": "One episode",
    "description": "Any episode by show date.",
    "parameters": [
     {
      "name": "date",
      "in": "path",
      "required": true,
      "description": "Show date, YYYY-MM-DD",
      "schema": {
       "type": "string",
       "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "One episode",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Episode"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Show"
    ]
   }
  },
  "/data/calls.json": {
   "get": {
    "operationId": "listCalls",
    "summary": "Every call",
    "description": "Every buy, sell or avoid call the hosts made, newest first, with the quote, the moment, the price then, the price now, the move since and the scoreboard.",
    "responses": {
     "200": {
      "description": "Calls and totals",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Calls"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Show"
    ]
   }
  },
  "/data/transcripts.txt": {
   "get": {
    "operationId": "getTranscripts",
    "summary": "Every transcript",
    "description": "Every episode's transcript, one paragraph per line: date, second, text, tab separated.",
    "responses": {
     "200": {
      "description": "Transcripts: date, second and text, tab separated, one paragraph per line",
      "content": {
       "text/plain": {
        "schema": {
         "type": "string",
         "description": "Transcripts: date, second and text, tab separated, one paragraph per line"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Show"
    ]
   }
  },
  "/api/v1/prices": {
   "get": {
    "operationId": "getPrices",
    "summary": "Live prices",
    "description": "Price, 1 hour and 24 hour change, market cap, liquidity and volume from Indeix. Without ids, the site's market strip.",
    "parameters": [
     {
      "name": "ids",
      "in": "query",
      "required": false,
      "description": "Comma separated token ids from the site, up to 32, for example btc,eth,sol,hype,nvda",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Prices",
      "headers": {
       "RateLimit-Limit": {
        "$ref": "#/components/headers/RateLimitLimit"
       },
       "RateLimit-Remaining": {
        "$ref": "#/components/headers/RateLimitRemaining"
       },
       "RateLimit-Reset": {
        "$ref": "#/components/headers/RateLimitReset"
       },
       "API-Version": {
        "$ref": "#/components/headers/ApiVersion"
       }
      },
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Prices"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/E400"
     },
     "404": {
      "$ref": "#/components/responses/E404"
     },
     "429": {
      "$ref": "#/components/responses/E429"
     },
     "500": {
      "$ref": "#/components/responses/E500"
     },
     "502": {
      "$ref": "#/components/responses/E502"
     },
     "503": {
      "$ref": "#/components/responses/E503"
     }
    },
    "tags": [
     "Markets"
    ]
   }
  },
  "/api/v1/chart": {
   "get": {
    "operationId": "getChart",
    "summary": "Price history",
    "description": "Candles for one token.",
    "parameters": [
     {
      "name": "id",
      "in": "query",
      "required": true,
      "description": "A token id, for example btc or nvda",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "range",
      "in": "query",
      "required": false,
      "description": "Window",
      "schema": {
       "type": "string",
       "enum": [
        "1d",
        "1w",
        "1m",
        "3m",
        "1y"
       ],
       "default": "1m"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Candles",
      "headers": {
       "RateLimit-Limit": {
        "$ref": "#/components/headers/RateLimitLimit"
       },
       "RateLimit-Remaining": {
        "$ref": "#/components/headers/RateLimitRemaining"
       },
       "RateLimit-Reset": {
        "$ref": "#/components/headers/RateLimitReset"
       },
       "API-Version": {
        "$ref": "#/components/headers/ApiVersion"
       }
      },
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Chart"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/E400"
     },
     "404": {
      "$ref": "#/components/responses/E404"
     },
     "429": {
      "$ref": "#/components/responses/E429"
     },
     "500": {
      "$ref": "#/components/responses/E500"
     },
     "502": {
      "$ref": "#/components/responses/E502"
     },
     "503": {
      "$ref": "#/components/responses/E503"
     }
    },
    "tags": [
     "Markets"
    ]
   }
  },
  "/api/v1/stocks": {
   "get": {
    "operationId": "getTokenizedStocks",
    "summary": "Tokenized stocks",
    "description": "Every stock token from Robinhood, xStocks, Backpack, Coinbase, Binance, Ondo: price, value onchain, supply, liquidity, volume, trades, wallets and holders. Add part=pools or part=trades with an issuer for every pool or trade sizes.",
    "parameters": [
     {
      "name": "part",
      "in": "query",
      "required": false,
      "description": "What to return",
      "schema": {
       "type": "string",
       "enum": [
        "core",
        "pools",
        "trades"
       ],
       "default": "core"
      }
     },
     {
      "name": "i",
      "in": "query",
      "required": false,
      "description": "Issuer, for pools and trades",
      "schema": {
       "type": "string",
       "enum": [
        "rh",
        "xs",
        "bp",
        "cb",
        "bs",
        "on"
       ]
      }
     },
     {
      "name": "p",
      "in": "query",
      "required": false,
      "description": "Page of 25 tokens, for issuers with more",
      "schema": {
       "type": "integer",
       "minimum": 0,
       "default": 0
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Stock tokens",
      "headers": {
       "RateLimit-Limit": {
        "$ref": "#/components/headers/RateLimitLimit"
       },
       "RateLimit-Remaining": {
        "$ref": "#/components/headers/RateLimitRemaining"
       },
       "RateLimit-Reset": {
        "$ref": "#/components/headers/RateLimitReset"
       },
       "API-Version": {
        "$ref": "#/components/headers/ApiVersion"
       }
      },
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Stocks"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/E400"
     },
     "404": {
      "$ref": "#/components/responses/E404"
     },
     "429": {
      "$ref": "#/components/responses/E429"
     },
     "500": {
      "$ref": "#/components/responses/E500"
     },
     "502": {
      "$ref": "#/components/responses/E502"
     },
     "503": {
      "$ref": "#/components/responses/E503"
     }
    },
    "tags": [
     "Markets"
    ]
   }
  },
  "/api/v1/stablecoins": {
   "get": {
    "operationId": "getStablecoins",
    "summary": "Stablecoins",
    "description": "The biggest dollar stablecoins: supply, price, and DEX volume and pool liquidity on each chain.",
    "responses": {
     "200": {
      "description": "Stablecoins",
      "headers": {
       "RateLimit-Limit": {
        "$ref": "#/components/headers/RateLimitLimit"
       },
       "RateLimit-Remaining": {
        "$ref": "#/components/headers/RateLimitRemaining"
       },
       "RateLimit-Reset": {
        "$ref": "#/components/headers/RateLimitReset"
       },
       "API-Version": {
        "$ref": "#/components/headers/ApiVersion"
       }
      },
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Stablecoins"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/E400"
     },
     "404": {
      "$ref": "#/components/responses/E404"
     },
     "429": {
      "$ref": "#/components/responses/E429"
     },
     "500": {
      "$ref": "#/components/responses/E500"
     },
     "502": {
      "$ref": "#/components/responses/E502"
     },
     "503": {
      "$ref": "#/components/responses/E503"
     }
    },
    "tags": [
     "Markets"
    ]
   }
  },
  "/api/v1/chain": {
   "get": {
    "operationId": "getChain",
    "summary": "One chain today",
    "description": "DEX volume, trades and fees over 24 hours with the change on the day before, volume by venue, and the most traded tokens.",
    "parameters": [
     {
      "name": "c",
      "in": "query",
      "required": true,
      "description": "Chain",
      "schema": {
       "type": "string",
       "enum": [
        "solana",
        "base",
        "robinhood"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Chain activity",
      "headers": {
       "RateLimit-Limit": {
        "$ref": "#/components/headers/RateLimitLimit"
       },
       "RateLimit-Remaining": {
        "$ref": "#/components/headers/RateLimitRemaining"
       },
       "RateLimit-Reset": {
        "$ref": "#/components/headers/RateLimitReset"
       },
       "API-Version": {
        "$ref": "#/components/headers/ApiVersion"
       }
      },
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Chain"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/E400"
     },
     "404": {
      "$ref": "#/components/responses/E404"
     },
     "429": {
      "$ref": "#/components/responses/E429"
     },
     "500": {
      "$ref": "#/components/responses/E500"
     },
     "502": {
      "$ref": "#/components/responses/E502"
     },
     "503": {
      "$ref": "#/components/responses/E503"
     }
    },
    "tags": [
     "Markets"
    ]
   }
  },
  "/api/v1/launchpads": {
   "get": {
    "operationId": "getLaunchpads",
    "summary": "Launchpad wars",
    "description": "Coins launched and graduated in the last 24 hours per launchpad and chain.",
    "responses": {
     "200": {
      "description": "Launchpads",
      "headers": {
       "RateLimit-Limit": {
        "$ref": "#/components/headers/RateLimitLimit"
       },
       "RateLimit-Remaining": {
        "$ref": "#/components/headers/RateLimitRemaining"
       },
       "RateLimit-Reset": {
        "$ref": "#/components/headers/RateLimitReset"
       },
       "API-Version": {
        "$ref": "#/components/headers/ApiVersion"
       }
      },
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Launchpads"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/E400"
     },
     "404": {
      "$ref": "#/components/responses/E404"
     },
     "429": {
      "$ref": "#/components/responses/E429"
     },
     "500": {
      "$ref": "#/components/responses/E500"
     },
     "502": {
      "$ref": "#/components/responses/E502"
     },
     "503": {
      "$ref": "#/components/responses/E503"
     }
    },
    "tags": [
     "Markets"
    ]
   }
  },
  "/api/v1/perps": {
   "get": {
    "operationId": "getPerps",
    "summary": "Perps venues",
    "description": "Hyperliquid and Lighter side by side: 24 hour volume, open interest and live markets.",
    "responses": {
     "200": {
      "description": "Perps venues",
      "headers": {
       "RateLimit-Limit": {
        "$ref": "#/components/headers/RateLimitLimit"
       },
       "RateLimit-Remaining": {
        "$ref": "#/components/headers/RateLimitRemaining"
       },
       "RateLimit-Reset": {
        "$ref": "#/components/headers/RateLimitReset"
       },
       "API-Version": {
        "$ref": "#/components/headers/ApiVersion"
       }
      },
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Perps"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/E400"
     },
     "404": {
      "$ref": "#/components/responses/E404"
     },
     "429": {
      "$ref": "#/components/responses/E429"
     },
     "500": {
      "$ref": "#/components/responses/E500"
     },
     "502": {
      "$ref": "#/components/responses/E502"
     },
     "503": {
      "$ref": "#/components/responses/E503"
     }
    },
    "tags": [
     "Markets"
    ]
   }
  },
  "/api/v1/tokenstats": {
   "get": {
    "operationId": "getTokenStats",
    "summary": "Token head to head",
    "description": "Price, value, liquidity, volume, trades, wallets, holders and the top 10 wallets' share for up to 4 tokens.",
    "parameters": [
     {
      "name": "ids",
      "in": "query",
      "required": true,
      "description": "Comma separated token ids, up to 4, for example cards,tcg",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Token stats",
      "headers": {
       "RateLimit-Limit": {
        "$ref": "#/components/headers/RateLimitLimit"
       },
       "RateLimit-Remaining": {
        "$ref": "#/components/headers/RateLimitRemaining"
       },
       "RateLimit-Reset": {
        "$ref": "#/components/headers/RateLimitReset"
       },
       "API-Version": {
        "$ref": "#/components/headers/ApiVersion"
       }
      },
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/TokenStats"
        }
       }
      }
     },
     "400": {
      "$ref": "#/components/responses/E400"
     },
     "404": {
      "$ref": "#/components/responses/E404"
     },
     "429": {
      "$ref": "#/components/responses/E429"
     },
     "500": {
      "$ref": "#/components/responses/E500"
     },
     "502": {
      "$ref": "#/components/responses/E502"
     },
     "503": {
      "$ref": "#/components/responses/E503"
     }
    },
    "tags": [
     "Markets"
    ]
   }
  },
  "/latest.md": {
   "get": {
    "operationId": "readLatestEpisode",
    "summary": "The newest episode as Markdown",
    "description": "Summary, calls, chapters, clips and the full transcript. The address never changes.",
    "responses": {
     "200": {
      "description": "Markdown",
      "content": {
       "text/markdown": {
        "schema": {
         "type": "string",
         "description": "Markdown"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Markdown"
    ]
   }
  },
  "/episodes/{date}.md": {
   "get": {
    "operationId": "readEpisode",
    "summary": "An episode as Markdown",
    "description": "Any episode by show date.",
    "parameters": [
     {
      "name": "date",
      "in": "path",
      "required": true,
      "description": "Show date, YYYY-MM-DD",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Markdown",
      "content": {
       "text/markdown": {
        "schema": {
         "type": "string",
         "description": "Markdown"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Markdown"
    ]
   }
  },
  "/markets.md": {
   "get": {
    "operationId": "readMarkets",
    "summary": "Every dashboard as Markdown",
    "description": "All the markets dashboards in one file, from the latest build.",
    "responses": {
     "200": {
      "description": "Markdown",
      "content": {
       "text/markdown": {
        "schema": {
         "type": "string",
         "description": "Markdown"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Markdown"
    ]
   }
  },
  "/{dashboard}.md": {
   "get": {
    "operationId": "readDashboard",
    "summary": "One dashboard as Markdown, live",
    "description": "The numbers behind one dashboard, written live.",
    "parameters": [
     {
      "name": "dashboard",
      "in": "path",
      "required": true,
      "description": "Dashboard",
      "schema": {
       "type": "string",
       "enum": [
        "big4",
        "ai",
        "tokenized-stocks",
        "stablecoins",
        "solana-chain",
        "base-chain",
        "robinhood-chain",
        "launchpads",
        "hype-vs-lit",
        "cards-vs-tcg"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Markdown",
      "content": {
       "text/markdown": {
        "schema": {
         "type": "string",
         "description": "Markdown"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Markdown"
    ]
   }
  },
  "/calls/{id}.md": {
   "get": {
    "operationId": "readCall",
    "summary": "One call as Markdown",
    "description": "One call with its quote, the moment and how it has moved, live.",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "description": "Call id, for example 2026-10-20-04",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Markdown",
      "content": {
       "text/markdown": {
        "schema": {
         "type": "string",
         "description": "Markdown"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Markdown"
    ]
   }
  },
  "/tokens/{key}.md": {
   "get": {
    "operationId": "readToken",
    "summary": "One token as Markdown",
    "description": "The live price and every call the hosts made on it.",
    "parameters": [
     {
      "name": "key",
      "in": "path",
      "required": true,
      "description": "Token key, for example nvda or hype",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Markdown",
      "content": {
       "text/markdown": {
        "schema": {
         "type": "string",
         "description": "Markdown"
        }
       }
      }
     },
     "404": {
      "$ref": "#/components/responses/E404"
     }
    },
    "tags": [
     "Markdown"
    ]
   }
  }
 },
 "components": {
  "schemas": {
   "Problem": {
    "type": "object",
    "properties": {
     "type": {
      "type": "string",
      "format": "uri",
      "description": "Link to what the error means"
     },
     "title": {
      "type": "string",
      "description": "Short summary of the error"
     },
     "status": {
      "type": "integer",
      "description": "HTTP status"
     },
     "detail": {
      "type": "string",
      "description": "What went wrong and what to do"
     },
     "instance": {
      "type": "string",
      "description": "The path that was requested"
     },
     "error": {
      "type": "string",
      "description": "Same as detail, kept for older clients"
     }
    },
    "required": [
     "type",
     "title",
     "status",
     "detail"
    ]
   },
   "Episodes": {
    "type": "object",
    "properties": {
     "show": {
      "type": "object",
      "properties": {
       "name": {
        "type": "string"
       },
       "url": {
        "type": "string"
       },
       "description": {
        "type": "string"
       },
       "hosts": {
        "type": "array",
        "items": {
         "type": "string"
        }
       },
       "schedule": {
        "type": "object",
        "properties": {
         "days": {
          "type": "string"
         },
         "time": {
          "type": "string"
         },
         "timezone": {
          "type": "string"
         }
        }
       },
       "youtube": {
        "type": "string"
       },
       "live": {
        "type": "string"
       },
       "spotify": {
        "type": "string"
       },
       "apple": {
        "type": "string"
       },
       "x": {
        "type": "string"
       },
       "contact": {
        "type": "string"
       },
       "nextShow": {
        "type": "string",
        "format": "date-time"
       }
      }
     },
     "generated": {
      "type": "string",
      "format": "date-time"
     },
     "pricesAsOf": {
      "type": [
       "string",
       "null"
      ]
     },
     "latest": {
      "type": "string"
     },
     "calls": {
      "type": "string"
     },
     "episodes": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "slug": {
         "type": "string"
        },
        "date": {
         "type": "string"
        },
        "title": {
         "type": "string"
        },
        "teaser": {
         "type": [
          "string",
          "null"
         ]
        },
        "url": {
         "type": "string"
        },
        "markdown": {
         "type": "string"
        },
        "json": {
         "type": "string"
        },
        "published": {
         "type": "string",
         "format": "date-time"
        },
        "calls": {
         "type": "integer"
        },
        "mentions": {
         "type": "integer"
        },
        "hasTranscript": {
         "type": "boolean"
        }
       },
       "required": [
        "slug",
        "date",
        "title",
        "url"
       ]
      }
     },
     "terms": {
      "type": "string"
     }
    },
    "required": [
     "show",
     "episodes"
    ]
   },
   "Episode": {
    "type": "object",
    "properties": {
     "show": {
      "type": "string"
     },
     "slug": {
      "type": "string"
     },
     "date": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "hosts": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "published": {
      "type": "string",
      "format": "date-time"
     },
     "durationSeconds": {
      "type": [
       "integer",
       "null"
      ]
     },
     "links": {
      "type": "object",
      "properties": {
       "page": {
        "type": "string"
       },
       "youtube": {
        "type": "string"
       },
       "livestream": {
        "type": [
         "string",
         "null"
        ]
       },
       "spotify": {
        "type": [
         "string",
         "null"
        ]
       },
       "apple": {
        "type": [
         "string",
         "null"
        ]
       },
       "audio": {
        "type": [
         "string",
         "null"
        ]
       },
       "markdown": {
        "type": "string"
       },
       "json": {
        "type": "string"
       }
      }
     },
     "thumbnail": {
      "type": [
       "string",
       "null"
      ]
     },
     "summary": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "chapters": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "at": {
         "type": "integer"
        },
        "clock": {
         "type": "string"
        },
        "title": {
         "type": "string"
        }
       }
      }
     },
     "calls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Call"
      }
     },
     "mentions": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "asset": {
         "type": "string"
        },
        "name": {
         "type": "string"
        },
        "assetUrl": {
         "type": "string"
        },
        "quote": {
         "type": "string"
        },
        "thesis": {
         "type": [
          "string",
          "null"
         ]
        },
        "at": {
         "type": "integer"
        },
        "clock": {
         "type": "string"
        },
        "moment": {
         "type": "string"
        }
       }
      }
     },
     "clips": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "title": {
         "type": "string"
        },
        "url": {
         "type": "string"
        },
        "at": {
         "type": "integer"
        },
        "clock": {
         "type": "string"
        },
        "published": {
         "type": "string"
        },
        "views": {
         "type": "integer"
        }
       }
      }
     },
     "pricesAsOf": {
      "type": [
       "string",
       "null"
      ]
     },
     "transcript": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "at": {
         "type": "integer"
        },
        "text": {
         "type": "string"
        }
       }
      }
     },
     "terms": {
      "type": "string"
     }
    },
    "required": [
     "slug",
     "date",
     "title"
    ]
   },
   "Call": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "url": {
      "type": "string"
     },
     "asset": {
      "type": "string",
      "description": "Token key on the site"
     },
     "name": {
      "type": "string"
     },
     "assetUrl": {
      "type": "string"
     },
     "direction": {
      "type": "string",
      "description": "buy, sell or avoid"
     },
     "conviction": {
      "type": [
       "string",
       "null"
      ]
     },
     "horizon": {
      "type": [
       "string",
       "null"
      ]
     },
     "instrument": {
      "type": [
       "string",
       "null"
      ]
     },
     "position": {
      "type": [
       "string",
       "null"
      ]
     },
     "levels": {
      "type": [
       "object",
       "array",
       "string",
       "null"
      ]
     },
     "quote": {
      "type": "string",
      "description": "What the host said"
     },
     "thesis": {
      "type": [
       "string",
       "null"
      ]
     },
     "at": {
      "type": "integer",
      "description": "Second of the episode"
     },
     "clock": {
      "type": "string"
     },
     "moment": {
      "type": "string",
      "description": "Link to that second on YouTube"
     },
     "saidAt": {
      "type": "string",
      "format": "date-time"
     },
     "priceAtCall": {
      "type": [
       "number",
       "null"
      ]
     },
     "priceNow": {
      "type": [
       "number",
       "null"
      ]
     },
     "changeSinceCallPct": {
      "type": [
       "number",
       "null"
      ]
     },
     "resultPct": {
      "type": [
       "number",
       "null"
      ],
      "description": "Change in the call's favor"
     },
     "pricedWith": {
      "type": [
       "string",
       "null"
      ]
     },
     "episode": {
      "type": "object",
      "description": "The episode the call came from",
      "properties": {
       "slug": {
        "type": "string"
       },
       "date": {
        "type": "string"
       },
       "title": {
        "type": "string"
       },
       "url": {
        "type": "string"
       }
      }
     }
    },
    "required": [
     "id",
     "asset",
     "direction",
     "quote"
    ]
   },
   "Calls": {
    "type": "object",
    "properties": {
     "show": {
      "type": "string"
     },
     "pricesAsOf": {
      "type": [
       "string",
       "null"
      ]
     },
     "totals": {
      "type": "object",
      "properties": {
       "calls": {
        "type": "integer"
       },
       "scored": {
        "type": "integer"
       },
       "inProfit": {
        "type": "integer"
       },
       "episodes": {
        "type": "integer"
       },
       "assets": {
        "type": "integer"
       }
      }
     },
     "calls": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Call"
      }
     },
     "terms": {
      "type": "string"
     }
    },
    "required": [
     "calls"
    ]
   },
   "Prices": {
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "const": "Indeix"
     },
     "fetchedAt": {
      "type": "string",
      "format": "date-time"
     },
     "slowestMs": {
      "type": "integer"
     },
     "items": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "id": {
         "type": "string"
        },
        "label": {
         "type": "string"
        },
        "blockchain": {
         "type": "string"
        },
        "priceUSD": {
         "type": [
          "number",
          "null"
         ]
        },
        "change1h": {
         "type": [
          "number",
          "null"
         ]
        },
        "change24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "marketCapUSD": {
         "type": [
          "number",
          "null"
         ]
        },
        "liquidityUSD": {
         "type": [
          "number",
          "null"
         ]
        },
        "volume24hUSD": {
         "type": [
          "number",
          "null"
         ]
        },
        "symbol": {
         "type": [
          "string",
          "null"
         ]
        },
        "name": {
         "type": [
          "string",
          "null"
         ]
        },
        "asOf": {
         "type": [
          "string",
          "null"
         ]
        },
        "error": {
         "type": "string",
         "description": "Set when this token could not be priced"
        },
        "ms": {
         "type": "integer"
        }
       },
       "required": [
        "id",
        "label"
       ]
      }
     }
    },
    "required": [
     "items"
    ]
   },
   "Chart": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "label": {
      "type": "string"
     },
     "range": {
      "type": [
       "string",
       "null"
      ]
     },
     "from": {
      "type": [
       "string",
       "null"
      ]
     },
     "period": {
      "type": "string"
     },
     "source": {
      "type": "string"
     },
     "candles": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "t": {
         "type": "integer",
         "description": "Unix seconds"
        },
        "o": {
         "type": [
          "number",
          "null"
         ]
        },
        "h": {
         "type": [
          "number",
          "null"
         ]
        },
        "l": {
         "type": [
          "number",
          "null"
         ]
        },
        "c": {
         "type": [
          "number",
          "null"
         ]
        },
        "v": {
         "type": [
          "number",
          "null"
         ]
        }
       }
      }
     }
    },
    "required": [
     "id",
     "candles"
    ]
   },
   "Stocks": {
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "const": "Indeix"
     },
     "fetchedAt": {
      "type": "string",
      "format": "date-time"
     },
     "tokens": {
      "type": "object",
      "description": "Core part: every stock token by id",
      "additionalProperties": {
       "type": "object",
       "properties": {
        "symbol": {
         "type": [
          "string",
          "null"
         ]
        },
        "price": {
         "type": [
          "number",
          "null"
         ]
        },
        "change1h": {
         "type": [
          "number",
          "null"
         ]
        },
        "change24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "marketCap": {
         "type": [
          "number",
          "null"
         ]
        },
        "liquidity": {
         "type": [
          "number",
          "null"
         ]
        },
        "volume24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "trades24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "traders24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "holders": {
         "type": [
          "number",
          "null"
         ]
        }
       }
      }
     },
     "answered": {
      "type": "integer"
     },
     "asked": {
      "type": "integer"
     },
     "issuer": {
      "type": "string",
      "description": "Pools and trades parts"
     },
     "page": {
      "type": "integer"
     },
     "pages": {
      "type": "integer"
     },
     "pools": {
      "type": "object",
      "description": "Pools part: every pool for each token on this page",
      "additionalProperties": true
     },
     "trades": {
      "type": "object",
      "description": "Trades part: trade sizes for each token on this page",
      "additionalProperties": true
     }
    }
   },
   "Stablecoins": {
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "const": "Indeix"
     },
     "fetchedAt": {
      "type": "string",
      "format": "date-time"
     },
     "coins": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "id": {
         "type": "string"
        },
        "supply": {
         "type": [
          "number",
          "null"
         ]
        },
        "price": {
         "type": [
          "number",
          "null"
         ]
        },
        "chains": {
         "type": "object",
         "additionalProperties": {
          "type": "object",
          "properties": {
           "volume24h": {
            "type": [
             "number",
             "null"
            ]
           },
           "liquidity": {
            "type": [
             "number",
             "null"
            ]
           }
          }
         }
        }
       },
       "required": [
        "id"
       ]
      }
     },
     "answered": {
      "type": "integer"
     },
     "asked": {
      "type": "integer"
     }
    },
    "required": [
     "coins"
    ]
   },
   "Chain": {
    "type": "object",
    "properties": {
     "volume24h": {
      "type": [
       "number",
       "null"
      ]
     },
     "volumeChange": {
      "type": [
       "number",
       "null"
      ]
     },
     "trades24h": {
      "type": [
       "number",
       "null"
      ]
     },
     "tradesChange": {
      "type": [
       "number",
       "null"
      ]
     },
     "fees24h": {
      "type": [
       "number",
       "null"
      ]
     },
     "feesChange": {
      "type": [
       "number",
       "null"
      ]
     },
     "buys24h": {
      "type": [
       "number",
       "null"
      ]
     },
     "sells24h": {
      "type": [
       "number",
       "null"
      ]
     },
     "venues": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "name": {
         "type": "string"
        },
        "volume": {
         "type": [
          "number",
          "null"
         ]
        },
        "trades": {
         "type": [
          "number",
          "null"
         ]
        }
       }
      }
     },
     "venueCoverage": {
      "type": [
       "number",
       "null"
      ]
     },
     "tokens": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "symbol": {
         "type": "string"
        },
        "name": {
         "type": "string"
        },
        "address": {
         "type": [
          "string",
          "null"
         ]
        },
        "price": {
         "type": [
          "number",
          "null"
         ]
        },
        "change24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "volume24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "marketCap": {
         "type": [
          "number",
          "null"
         ]
        },
        "liquidity": {
         "type": [
          "number",
          "null"
         ]
        },
        "launchpad": {
         "type": [
          "string",
          "null"
         ]
        },
        "createdAt": {
         "type": [
          "string",
          "null"
         ]
        }
       }
      }
     },
     "washed": {
      "type": "integer",
      "description": "Tokens left out for cycling volume"
     },
     "totalsError": {
      "type": "string"
     },
     "tokensError": {
      "type": "string"
     }
    }
   },
   "Launchpads": {
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "const": "Indeix"
     },
     "fetchedAt": {
      "type": "string",
      "format": "date-time"
     },
     "window": {
      "type": "string"
     },
     "chains": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "id": {
         "type": "string"
        },
        "name": {
         "type": "string"
        },
        "launched": {
         "type": [
          "integer",
          "null"
         ]
        },
        "graduated": {
         "type": [
          "integer",
          "null"
         ]
        },
        "pads": {
         "type": "array",
         "items": {
          "type": "object",
          "properties": {
           "id": {
            "type": "string"
           },
           "name": {
            "type": "string"
           },
           "launched": {
            "type": [
             "integer",
             "null"
            ]
           },
           "graduated": {
            "type": [
             "integer",
             "null"
            ]
           }
          }
         }
        },
        "error": {
         "type": "string"
        }
       },
       "required": [
        "id",
        "name"
       ]
      }
     }
    },
    "required": [
     "chains"
    ]
   },
   "Perps": {
    "type": "object",
    "properties": {
     "fetchedAt": {
      "type": "string",
      "format": "date-time"
     },
     "venues": {
      "type": "object",
      "properties": {
       "hyperliquid": {
        "$ref": "#/components/schemas/PerpsVenue"
       },
       "lighter": {
        "$ref": "#/components/schemas/PerpsVenue"
       }
      }
     }
    },
    "required": [
     "venues"
    ]
   },
   "PerpsVenue": {
    "type": "object",
    "properties": {
     "volume24h": {
      "type": [
       "number",
       "null"
      ]
     },
     "openInterest": {
      "type": [
       "number",
       "null"
      ]
     },
     "markets": {
      "type": "integer"
     },
     "btcVolume24h": {
      "type": [
       "number",
       "null"
      ]
     },
     "builderVolume24h": {
      "type": [
       "number",
       "null"
      ]
     },
     "error": {
      "type": "string"
     }
    }
   },
   "TokenStats": {
    "type": "object",
    "properties": {
     "source": {
      "type": "string",
      "const": "Indeix"
     },
     "fetchedAt": {
      "type": "string",
      "format": "date-time"
     },
     "tokens": {
      "type": "object",
      "description": "Stats for each token that answered, by token id",
      "additionalProperties": {
       "type": "object",
       "properties": {
        "symbol": {
         "type": [
          "string",
          "null"
         ]
        },
        "name": {
         "type": [
          "string",
          "null"
         ]
        },
        "price": {
         "type": [
          "number",
          "null"
         ]
        },
        "change1h": {
         "type": [
          "number",
          "null"
         ]
        },
        "change24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "marketCap": {
         "type": [
          "number",
          "null"
         ]
        },
        "fdv": {
         "type": [
          "number",
          "null"
         ]
        },
        "supply": {
         "type": [
          "number",
          "null"
         ]
        },
        "totalSupply": {
         "type": [
          "number",
          "null"
         ]
        },
        "liquidity": {
         "type": [
          "number",
          "null"
         ]
        },
        "volume24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "buyVolume24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "sellVolume24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "trades24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "traders24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "buyers24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "sellers24h": {
         "type": [
          "number",
          "null"
         ]
        },
        "holders": {
         "type": [
          "number",
          "null"
         ]
        },
        "top10": {
         "type": [
          "number",
          "null"
         ],
         "description": "Share held by the top 10 wallets, percent"
        },
        "createdAt": {
         "type": [
          "string",
          "null"
         ]
        }
       }
      }
     }
    },
    "required": [
     "tokens"
    ]
   }
  },
  "headers": {
   "RateLimitLimit": {
    "description": "Requests allowed per window (240 a minute per address)",
    "schema": {
     "type": "integer"
    }
   },
   "RateLimitRemaining": {
    "description": "Requests left in this window",
    "schema": {
     "type": "integer"
    }
   },
   "RateLimitReset": {
    "description": "Seconds until the window resets",
    "schema": {
     "type": "integer"
    }
   },
   "RetryAfter": {
    "description": "Seconds to wait before trying again",
    "schema": {
     "type": "integer"
    }
   },
   "ApiVersion": {
    "description": "The API version that answered",
    "schema": {
     "type": "string",
     "const": "1"
    }
   }
  },
  "responses": {
   "E400": {
    "description": "Bad request: a missing or unknown parameter",
    "content": {
     "application/problem+json": {
      "schema": {
       "$ref": "#/components/schemas/Problem"
      }
     }
    }
   },
   "E404": {
    "description": "Not found",
    "content": {
     "application/problem+json": {
      "schema": {
       "$ref": "#/components/schemas/Problem"
      }
     }
    }
   },
   "E429": {
    "description": "Rate limited: wait Retry-After seconds",
    "headers": {
     "Retry-After": {
      "$ref": "#/components/headers/RetryAfter"
     },
     "RateLimit-Limit": {
      "$ref": "#/components/headers/RateLimitLimit"
     },
     "RateLimit-Remaining": {
      "$ref": "#/components/headers/RateLimitRemaining"
     },
     "RateLimit-Reset": {
      "$ref": "#/components/headers/RateLimitReset"
     },
     "API-Version": {
      "$ref": "#/components/headers/ApiVersion"
     }
    },
    "content": {
     "application/problem+json": {
      "schema": {
       "$ref": "#/components/schemas/Problem"
      }
     }
    }
   },
   "E500": {
    "description": "The endpoint failed",
    "content": {
     "application/problem+json": {
      "schema": {
       "$ref": "#/components/schemas/Problem"
      }
     }
    }
   },
   "E502": {
    "description": "Market data failed upstream; safe to retry",
    "content": {
     "application/problem+json": {
      "schema": {
       "$ref": "#/components/schemas/Problem"
      }
     }
    }
   },
   "E503": {
    "description": "Market data is not available right now",
    "content": {
     "application/problem+json": {
      "schema": {
       "$ref": "#/components/schemas/Problem"
      }
     }
    }
   }
  }
 }
}