{
  "info": {
    "name": "PinnFeed API",
    "description": "Generated from https://pinnfeed.io/openapi.json. Set collection variable apiKey to a ps_live_ key from https://pinnfeed.io/signup. WebSocket wss://pinnfeed.io/v1/stream is not included (use a WS client). Educational, 18+.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "apiKey",
      "value": "ps_live_..."
    },
    {
      "key": "baseUrl",
      "value": "https://pinnfeed.io"
    }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "x-api-key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{apiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "item": [
    {
      "name": "Account and plan limits",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "x-api-key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "https://pinnfeed.io/v1/account",
          "host": [
            "pinnfeed.io"
          ],
          "path": [
            "v1",
            "account"
          ],
          "query": []
        },
        "description": "Returns plan id, key metadata, limits and today's REST usage for the authenticated key (`svc.account`)."
      }
    },
    {
      "name": "List sports",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "x-api-key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "https://pinnfeed.io/v1/sports",
          "host": [
            "pinnfeed.io"
          ],
          "path": [
            "v1",
            "sports"
          ],
          "query": []
        },
        "description": "Sports with live/prematch event counts and whether each sport is in the key's plan (`svc.sports`)."
      }
    },
    {
      "name": "List events",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "x-api-key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "https://pinnfeed.io/v1/events",
          "host": [
            "pinnfeed.io"
          ],
          "path": [
            "v1",
            "events"
          ],
          "query": []
        },
        "description": "Events without markets. Default `limit` 500, max 1000. Optional text filter `q`."
      }
    },
    {
      "name": "Events with markets",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "x-api-key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "https://pinnfeed.io/v1/odds?",
          "host": [
            "pinnfeed.io"
          ],
          "path": [
            "v1",
            "odds"
          ],
          "query": [
            {
              "key": "withMarkets",
              "value": "",
              "description": "If truthy, only events that currently have matching markets (and upcoming/live).",
              "disabled": true
            }
          ]
        },
        "description": "Events including filtered markets \u2014 REST equivalent of a WebSocket snapshot. **`sport` (or `sports`) is required.** Default `limit` 200, max 1000. Optional `withMarkets` (truthy) is used by MCP to drop events with empty market lists."
      }
    },
    {
      "name": "Single event with markets",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "x-api-key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "https://pinnfeed.io/v1/events/{id}",
          "host": [
            "pinnfeed.io"
          ],
          "path": [
            "v1",
            "events",
            "{id}"
          ],
          "query": []
        },
        "description": "One event plus its markets subject to filters and plan (`svc.event`)."
      }
    },
    {
      "name": "Recent price drops",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "x-api-key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "https://pinnfeed.io/v1/drops?",
          "host": [
            "pinnfeed.io"
          ],
          "path": [
            "v1",
            "drops"
          ],
          "query": [
            {
              "key": "minutes",
              "value": "",
              "description": "Window 1\u201360; default 15.",
              "disabled": true
            },
            {
              "key": "min_pct",
              "value": "",
              "description": "Minimum drop % (alias minPct); default 3; clamped 0.5\u201390.",
              "disabled": true
            },
            {
              "key": "minPct",
              "value": "",
              "description": "Alias of min_pct.",
              "disabled": true
            },
            {
              "key": "limit",
              "value": "",
              "description": "Default 50, max 200.",
              "disabled": true
            }
          ]
        },
        "description": "Biggest shortening moves per market outcome over a rolling window (`svc.drops` / DropTracker)."
      }
    },
    {
      "name": "Closing lines for one event",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "x-api-key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "https://pinnfeed.io/v1/closing/{eventId}",
          "host": [
            "pinnfeed.io"
          ],
          "path": [
            "v1",
            "closing",
            "{eventId}"
          ],
          "query": []
        },
        "description": "Requires plan.history (Builder and above). `svc.closing`."
      }
    },
    {
      "name": "Closing lines by UTC day",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "x-api-key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "https://pinnfeed.io/v1/closing?",
          "host": [
            "pinnfeed.io"
          ],
          "path": [
            "v1",
            "closing"
          ],
          "query": [
            {
              "key": "date",
              "value": "",
              "description": "UTC day YYYY-MM-DD",
              "disabled": true
            }
          ]
        },
        "description": "Requires plan.history. Query `date=YYYY-MM-DD` (default today UTC). Filters: sport/sports, main. Default limit 500, max 2000."
      }
    },
    {
      "name": "MCP Streamable HTTP endpoint",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "x-api-key",
            "value": "{{apiKey}}",
            "type": "text"
          },
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "https://pinnfeed.io/mcp",
          "host": [
            "pinnfeed.io"
          ],
          "path": [
            "mcp"
          ],
          "query": []
        },
        "description": "JSON-RPC over Streamable HTTP. Authenticate with the same API key schemes as REST. Tool list and shapes: https://pinnfeed.io/docs/mcp. Request/response bodies are not fully enumerated here (JSON-RPC envelope).",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"get_account\",\n    \"arguments\": {}\n  }\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    }
  ]
}