{
  "openapi": "3.0.0",
  "info": {
    "title": "Ticker API",
    "description": "Live event ticket pricing data over HTTP: price, inventory and demand for an event, the same readings by day, name-to-id search, performer rank, saved views and screens. Authenticated with an API key.",
    "version": "1.0.0+3ee28420"
  },
  "servers": [
    {
      "url": "https://api.findticker.com"
    }
  ],
  "tags": [
    {
      "name": "Feed"
    }
  ],
  "paths": {
    "/api/feed/v1/events/{eventId}/shopping": {
      "get": {
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "tags": [
          "Feed"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "required": true,
            "name": "eventId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "7d",
                "14d",
                "28d",
                "90d"
              ],
              "default": "28d"
            },
            "required": false,
            "name": "range",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ],
              "default": "true",
              "description": "Omit the daily series and return only the current value."
            },
            "required": false,
            "name": "include_series",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Metric names to return, comma-separated. Omit for both. Valid: interest, sales.",
            "name": "columns",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Current interest and sales from the analytics row, plus the demand chart series. Values are as of computed_at and refresh with each pipeline run.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedEventShopping"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, an unknown `columns` name (the message lists the valid set), or a batch over the size bound.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The key's account is not entitled to the feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "No such event.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 404
                    },
                    "message": {
                      "type": "string",
                      "example": "Resource not found"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Burst or daily request budget exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/feed/v1/events/shopping": {
      "post": {
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "tags": [
          "Feed"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedShoppingBatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "One entry per known event id, in the order asked for. Unknown ids come back under meta.missing. Values are as of computed_at and refresh with each pipeline run.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedShoppingBatch"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, an unknown `columns` name (the message lists the valid set), or a batch over the size bound.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The key's account is not entitled to the feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Burst or daily request budget exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/feed/v1/events/{eventId}/analytics": {
      "get": {
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "tags": [
          "Feed"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "required": true,
            "name": "eventId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Current prices, inventory and demand for the event. Values are as of computed_at and refresh with each pipeline run. Costs one unit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedEventAnalytics"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, an unknown `columns` name (the message lists the valid set), or a batch over the size bound.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The key's account is not entitled to the feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "No such event.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 404
                    },
                    "message": {
                      "type": "string",
                      "example": "Resource not found"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Burst or daily request budget exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/feed/v1/events/analytics": {
      "post": {
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "tags": [
          "Feed"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedAnalyticsBatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "One entry per known event id, in the order asked for. Unknown ids come back under meta.missing. Costs one unit per entry returned, so a batch of 100 known ids costs 100. Values are as of computed_at and refresh with each pipeline run.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedAnalyticsBatch"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, an unknown `columns` name (the message lists the valid set), or a batch over the size bound.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The key's account is not entitled to the feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Burst or daily request budget exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/feed/v1/events/{eventId}/history": {
      "get": {
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "tags": [
          "Feed"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "required": true,
            "name": "eventId",
            "in": "path"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 30
            },
            "required": false,
            "description": "Days of history to return. Hard-capped at 30: a larger value returns 30 days with meta.days_capped true, never an error. Costs one unit whatever the value. Values are as of computed_at and refresh with each pipeline run.",
            "name": "days",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Price, inventory and demand per day, 30 days back at most. Values are as of computed_at and refresh with each pipeline run. Costs one unit whatever the days value.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedEventHistory"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, an unknown `columns` name (the message lists the valid set), or a batch over the size bound.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The key's account is not entitled to the feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "No such event.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 404
                    },
                    "message": {
                      "type": "string",
                      "example": "Resource not found"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Burst or daily request budget exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/feed/v1/search": {
      "get": {
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "tags": [
          "Feed"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 120
            },
            "required": true,
            "description": "A name to match. At least 2 letters or digits; wildcards (% _ *) are rejected. There is no way to list the catalog: search takes a name and returns at most 25 matches, with no cursor.",
            "name": "q",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 25,
              "default": 25
            },
            "required": false,
            "name": "limit",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Events and performers whose name matches. Ids here are what the reading routes take. Costs one unit: search returns ids, not readings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedSearchResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, an unknown `columns` name (the message lists the valid set), or a batch over the size bound.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The key's account is not entitled to the feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Burst or daily request budget exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/feed/v1/performers/{performerId}": {
      "get": {
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "tags": [
          "Feed"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "required": true,
            "name": "performerId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Current popularity rank, the raw aggregates behind it, the performer's raw X counts, its Kalshi probability, the Kalshi markets that map to it, and a 30-day rank series. Values are as of computed_at and refresh with each pipeline run. Costs one unit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedPerformer"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, an unknown `columns` name (the message lists the valid set), or a batch over the size bound.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The key's account is not entitled to the feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "No such performer.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 404
                    },
                    "message": {
                      "type": "string",
                      "example": "Resource not found"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Burst or daily request budget exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/feed/v1/views": {
      "get": {
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "tags": [
          "Feed"
        ],
        "responses": {
          "200": {
            "description": "The key holder's saved Views, most recently changed first, each with the columns its filter reads. Costs one unit: this route returns Views, not readings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedViews"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, an unknown `columns` name (the message lists the valid set), or a batch over the size bound.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The key's account is not entitled to the feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Burst or daily request budget exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/feed/v1/views/{viewId}/results": {
      "get": {
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "tags": [
          "Feed"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "required": true,
            "name": "viewId",
            "in": "path"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            },
            "required": false,
            "name": "page",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "required": false,
            "description": "Rows per page, at most 100. Every row costs one unit.",
            "name": "limit",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "The events this View matches right now, plus the predicate that ran. Values are as of computed_at and refresh with each pipeline run. Costs one unit per event returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedViewResults"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, an unknown `columns` name (the message lists the valid set), or a batch over the size bound.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The key's account is not entitled to the feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "404": {
            "description": "No such View on this account.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 404
                    },
                    "message": {
                      "type": "string",
                      "example": "Resource not found"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Burst or daily request budget exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/feed/v1/screen": {
      "post": {
        "security": [
          {
            "apiKeyAuth": []
          }
        ],
        "tags": [
          "Feed"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FeedScreenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The events matching a question asked in plain language, plus the predicate the question compiled to. Values are as of computed_at and refresh with each pipeline run. Costs one unit per event returned; the compile spends one request from the account's assist quota.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeedScreenResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation error, an unknown `columns` name (the message lists the valid set), or a batch over the size bound.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "The account's daily assist quota is spent, so the question cannot be compiled.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "The key's account is not entitled to the feed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Burst or daily request budget exhausted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          },
          "503": {
            "description": "Plain-language compiling is not configured.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "number",
                      "example": 400
                    },
                    "message": {
                      "type": "string",
                      "example": "Bad Request"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "FeedEventShopping": {
        "type": "object",
        "properties": {
          "event_id": {
            "type": "string",
            "nullable": true
          },
          "current": {
            "$ref": "#/components/schemas/FeedShoppingCurrent"
          },
          "series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedShoppingPoint"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/FeedShoppingMeta"
          }
        },
        "required": [
          "event_id",
          "current",
          "series",
          "meta"
        ]
      },
      "FeedShoppingCurrent": {
        "type": "object",
        "nullable": true,
        "properties": {
          "interest": {
            "type": "integer",
            "nullable": true
          },
          "sales": {
            "type": "integer",
            "nullable": true
          }
        }
      },
      "FeedShoppingPoint": {
        "type": "object",
        "properties": {
          "snapshot_date": {
            "type": "string",
            "example": "2026-08-31"
          },
          "interest": {
            "type": "integer",
            "nullable": true
          },
          "sales": {
            "type": "integer",
            "nullable": true
          }
        },
        "required": [
          "snapshot_date"
        ]
      },
      "FeedShoppingMeta": {
        "type": "object",
        "properties": {
          "range": {
            "type": "string",
            "enum": [
              "7d",
              "14d",
              "28d",
              "90d"
            ]
          },
          "coverage_start": {
            "type": "string",
            "nullable": true
          },
          "points": {
            "type": "integer"
          },
          "columns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "range",
          "coverage_start",
          "points",
          "columns"
        ]
      },
      "FeedShoppingBatchRequest": {
        "type": "object",
        "properties": {
          "event_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "minItems": 1,
            "maxItems": 1000
          },
          "range": {
            "type": "string",
            "enum": [
              "7d",
              "14d",
              "28d",
              "90d"
            ],
            "default": "28d"
          },
          "include_series": {
            "type": "boolean",
            "default": false
          },
          "columns": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "maxItems": 2,
            "description": "Metric names to return, comma-separated. Omit for both. Valid: interest, sales."
          }
        },
        "required": [
          "event_ids"
        ]
      },
      "FeedShoppingBatch": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedEventShopping"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "requested": {
                "type": "integer"
              },
              "returned": {
                "type": "integer"
              },
              "missing": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "batch_max": {
                "type": "integer",
                "example": 200
              }
            },
            "required": [
              "requested",
              "returned",
              "missing",
              "batch_max"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "FeedEventAnalytics": {
        "type": "object",
        "properties": {
          "event_id": {
            "type": "string",
            "nullable": true
          },
          "computed_at": {
            "type": "string",
            "nullable": true,
            "description": "Values are as of computed_at and refresh with each pipeline run.",
            "example": "2026-09-01T14:05:11.000Z"
          },
          "lowest_price_current": {
            "type": "number",
            "nullable": true
          },
          "median_price_current": {
            "type": "number",
            "nullable": true
          },
          "p25_price_current": {
            "type": "number",
            "nullable": true
          },
          "p75_price_current": {
            "type": "number",
            "nullable": true
          },
          "lowest_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "median_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "average_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "highest_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "p25_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "p75_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "listings_current": {
            "type": "number",
            "nullable": true
          },
          "tickets_current": {
            "type": "number",
            "nullable": true
          },
          "percent_remaining": {
            "type": "number",
            "nullable": true
          },
          "interest": {
            "type": "number",
            "nullable": true
          },
          "sales": {
            "type": "number",
            "nullable": true
          },
          "last_price_snapshot_date": {
            "type": "string",
            "nullable": true
          },
          "partial_row": {
            "type": "boolean",
            "nullable": true
          },
          "prediction_markets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedEventPredictionMarket"
            },
            "description": "Kalshi prediction markets that map to this row, from the latest market snapshot. Present only when at least one market maps; absent otherwise, and never on view results or screen rows. Probabilities describe market expectations, not advice."
          }
        },
        "required": [
          "event_id",
          "computed_at",
          "lowest_price_current",
          "median_price_current",
          "p25_price_current",
          "p75_price_current",
          "lowest_face_value_current",
          "median_face_value_current",
          "average_face_value_current",
          "highest_face_value_current",
          "p25_face_value_current",
          "p75_face_value_current",
          "listings_current",
          "tickets_current",
          "percent_remaining",
          "interest",
          "sales",
          "last_price_snapshot_date",
          "partial_row"
        ]
      },
      "FeedEventPredictionMarket": {
        "type": "object",
        "properties": {
          "seriesRef": {
            "type": "string",
            "example": "KXNFLGAME"
          },
          "seriesTitle": {
            "type": "string",
            "nullable": true,
            "example": "Pro Football Game Winner"
          },
          "marketRef": {
            "type": "string",
            "example": "KXNFLGAME-26AUG13DETCIN-DET"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "yesSubTitle": {
            "type": "string",
            "nullable": true,
            "example": "Detroit"
          },
          "occurrenceDate": {
            "type": "string",
            "nullable": true,
            "example": "2026-08-13"
          },
          "probability": {
            "type": "number",
            "nullable": true,
            "example": 0.62
          },
          "probabilityDate": {
            "type": "string",
            "nullable": true,
            "example": "2026-08-07"
          },
          "previousProbability": {
            "type": "number",
            "nullable": true,
            "example": 0.58
          },
          "previousProbabilityDate": {
            "type": "string",
            "nullable": true,
            "example": "2026-08-06"
          },
          "performerId": {
            "type": "string",
            "nullable": true,
            "example": "pfq4n8r2w6tz"
          },
          "performerName": {
            "type": "string",
            "nullable": true,
            "example": "Detroit Lions"
          }
        },
        "required": [
          "seriesRef",
          "seriesTitle",
          "marketRef",
          "title",
          "yesSubTitle",
          "occurrenceDate",
          "probability",
          "probabilityDate",
          "previousProbability",
          "previousProbabilityDate",
          "performerId",
          "performerName"
        ]
      },
      "FeedAnalyticsBatchRequest": {
        "type": "object",
        "properties": {
          "event_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "minItems": 1,
            "maxItems": 1000
          }
        },
        "required": [
          "event_ids"
        ]
      },
      "FeedAnalyticsBatch": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedEventAnalytics"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "requested": {
                "type": "integer"
              },
              "returned": {
                "type": "integer"
              },
              "missing": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "batch_max": {
                "type": "integer",
                "example": 200
              },
              "units_charged": {
                "type": "integer"
              }
            },
            "required": [
              "requested",
              "returned",
              "missing",
              "batch_max",
              "units_charged"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "FeedEventHistory": {
        "type": "object",
        "properties": {
          "event_id": {
            "type": "string",
            "nullable": true
          },
          "points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedHistoryPoint"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "days": {
                "type": "integer",
                "example": 30
              },
              "max_days": {
                "type": "integer",
                "example": 30
              },
              "days_capped": {
                "type": "boolean"
              },
              "points": {
                "type": "integer"
              }
            },
            "required": [
              "days",
              "max_days",
              "days_capped",
              "points"
            ]
          }
        },
        "required": [
          "event_id",
          "points",
          "meta"
        ]
      },
      "FeedHistoryPoint": {
        "type": "object",
        "properties": {
          "as_of_date": {
            "type": "string",
            "example": "2026-08-31"
          },
          "listings_current": {
            "type": "number",
            "nullable": true
          },
          "tickets_current": {
            "type": "number",
            "nullable": true
          },
          "interest": {
            "type": "number",
            "nullable": true
          },
          "sales": {
            "type": "number",
            "nullable": true
          },
          "last_price_snapshot_date": {
            "type": "string",
            "nullable": true
          },
          "partial_row": {
            "type": "boolean",
            "nullable": true
          },
          "lowest_price_current": {
            "type": "number",
            "nullable": true
          },
          "median_price_current": {
            "type": "number",
            "nullable": true
          },
          "p25_price_current": {
            "type": "number",
            "nullable": true
          },
          "p75_price_current": {
            "type": "number",
            "nullable": true
          },
          "lowest_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "median_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "average_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "highest_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "p25_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "p75_face_value_current": {
            "type": "number",
            "nullable": true
          },
          "percent_remaining": {
            "type": "number",
            "nullable": true
          },
          "computed_at": {
            "type": "string",
            "nullable": true
          },
          "event_id": {
            "type": "string"
          }
        }
      },
      "FeedSearchResponse": {
        "type": "object",
        "properties": {
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedSearchEvent"
            }
          },
          "performers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedSearchPerformer"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "q": {
                "type": "string"
              },
              "limit": {
                "type": "integer"
              },
              "enumeration": {
                "type": "string",
                "enum": [
                  "not supported"
                ]
              }
            },
            "required": [
              "q",
              "limit",
              "enumeration"
            ]
          }
        },
        "required": [
          "events",
          "performers",
          "meta"
        ]
      },
      "FeedSearchEvent": {
        "type": "object",
        "properties": {
          "event_id": {
            "type": "string",
            "nullable": true
          },
          "event_name": {
            "type": "string",
            "nullable": true
          },
          "local_date": {
            "type": "string",
            "nullable": true
          },
          "utc_date": {
            "type": "string",
            "nullable": true
          },
          "venue_name": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "event_id",
          "event_name",
          "local_date",
          "utc_date",
          "venue_name",
          "city"
        ]
      },
      "FeedSearchPerformer": {
        "type": "object",
        "properties": {
          "performer_id": {
            "type": "string",
            "example": "pfq4n8r2w6tz"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "performer_id",
          "name"
        ]
      },
      "FeedPerformer": {
        "type": "object",
        "properties": {
          "performer_id": {
            "type": "string",
            "example": "pfq4n8r2w6tz"
          },
          "computed_at": {
            "type": "string",
            "nullable": true
          },
          "popularity_rank": {
            "type": "number",
            "nullable": true
          },
          "event_count": {
            "type": "number",
            "nullable": true
          },
          "avg_lowest_price_current": {
            "type": "number",
            "nullable": true
          },
          "avg_median_price_current": {
            "type": "number",
            "nullable": true
          },
          "listings_current": {
            "type": "number",
            "nullable": true
          },
          "tickets_current": {
            "type": "number",
            "nullable": true
          },
          "posts_current": {
            "type": "number",
            "nullable": true
          },
          "likes_current": {
            "type": "number",
            "nullable": true
          },
          "retweets_current": {
            "type": "number",
            "nullable": true
          },
          "replies_current": {
            "type": "number",
            "nullable": true
          },
          "views_current": {
            "type": "number",
            "nullable": true
          },
          "avg_likes_current": {
            "type": "number",
            "nullable": true
          },
          "kalshi_prob_current": {
            "type": "number",
            "nullable": true
          },
          "kalshi_prob_asof_date": {
            "type": "string",
            "nullable": true
          },
          "prediction_markets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedPredictionMarket"
            },
            "description": "Kalshi prediction markets that map to this row, from the latest market snapshot. Present only when at least one market maps; absent otherwise, and never on view results or screen rows. Probabilities describe market expectations, not advice."
          },
          "history": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedPerformerRankPoint"
            }
          }
        },
        "required": [
          "performer_id",
          "computed_at",
          "popularity_rank",
          "event_count",
          "avg_lowest_price_current",
          "avg_median_price_current",
          "listings_current",
          "tickets_current",
          "posts_current",
          "likes_current",
          "retweets_current",
          "replies_current",
          "views_current",
          "avg_likes_current",
          "kalshi_prob_current",
          "kalshi_prob_asof_date",
          "history"
        ]
      },
      "FeedPredictionMarket": {
        "type": "object",
        "properties": {
          "seriesRef": {
            "type": "string",
            "example": "KXNFLGAME"
          },
          "seriesTitle": {
            "type": "string",
            "nullable": true,
            "example": "Pro Football Game Winner"
          },
          "marketRef": {
            "type": "string",
            "example": "KXNFLGAME-26AUG13DETCIN-DET"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "yesSubTitle": {
            "type": "string",
            "nullable": true,
            "example": "Detroit"
          },
          "occurrenceDate": {
            "type": "string",
            "nullable": true,
            "example": "2026-08-13"
          },
          "probability": {
            "type": "number",
            "nullable": true,
            "example": 0.62
          },
          "probabilityDate": {
            "type": "string",
            "nullable": true,
            "example": "2026-08-07"
          },
          "previousProbability": {
            "type": "number",
            "nullable": true,
            "example": 0.58
          },
          "previousProbabilityDate": {
            "type": "string",
            "nullable": true,
            "example": "2026-08-06"
          }
        },
        "required": [
          "seriesRef",
          "seriesTitle",
          "marketRef",
          "title",
          "yesSubTitle",
          "occurrenceDate",
          "probability",
          "probabilityDate",
          "previousProbability",
          "previousProbabilityDate"
        ]
      },
      "FeedPerformerRankPoint": {
        "type": "object",
        "properties": {
          "snapshot_date": {
            "type": "string",
            "example": "2026-08-31"
          },
          "popularity_rank": {
            "type": "integer",
            "nullable": true
          }
        },
        "required": [
          "snapshot_date",
          "popularity_rank"
        ]
      },
      "FeedViews": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedView"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "returned": {
                "type": "integer"
              }
            },
            "required": [
              "returned"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "FeedView": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "nullable": true
          },
          "enabled": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The columns this View filters on, as the screener names them.",
            "example": [
              "ea.listings_current",
              "ea.median_price_current"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "updated_at",
          "created_at",
          "enabled",
          "tags",
          "columns"
        ]
      },
      "FeedViewResults": {
        "type": "object",
        "properties": {
          "view_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "predicate": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "description": "The predicate that ran, in the screener's own filter language. Filters only, never an ordering."
          },
          "total": {
            "type": "integer",
            "nullable": true
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedEventAnalytics"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "page": {
                "type": "integer"
              },
              "limit": {
                "type": "integer"
              },
              "returned": {
                "type": "integer"
              },
              "units_charged": {
                "type": "integer"
              },
              "count_capped": {
                "type": "boolean",
                "nullable": true
              },
              "applied_floor": {
                "type": "boolean"
              }
            },
            "required": [
              "page",
              "limit",
              "returned",
              "units_charged",
              "count_capped",
              "applied_floor"
            ]
          }
        },
        "required": [
          "view_id",
          "name",
          "predicate",
          "total",
          "rows",
          "meta"
        ]
      },
      "FeedScreenRequest": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 3,
            "maxLength": 500,
            "description": "The question, in plain language. It is compiled to a screener predicate by the same model the product's own screener uses.",
            "example": "concerts under $80 next month with lots of listings"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "default": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          }
        },
        "required": [
          "query"
        ]
      },
      "FeedScreenResponse": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "predicate": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "description": "The predicate that ran, in the screener's own filter language. Filters only, never an ordering."
          },
          "sort": {
            "type": "object",
            "nullable": true,
            "properties": {
              "col": {
                "type": "string"
              },
              "dir": {
                "type": "string",
                "enum": [
                  "asc",
                  "desc"
                ]
              }
            },
            "required": [
              "col",
              "dir"
            ]
          },
          "note": {
            "type": "string",
            "nullable": true,
            "description": "What the compile could not do with the question, when it could not do all of it."
          },
          "total": {
            "type": "integer",
            "nullable": true
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeedEventAnalytics"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "page": {
                "type": "integer"
              },
              "limit": {
                "type": "integer"
              },
              "returned": {
                "type": "integer"
              },
              "units_charged": {
                "type": "integer"
              },
              "count_capped": {
                "type": "boolean",
                "nullable": true
              },
              "applied_floor": {
                "type": "boolean"
              }
            },
            "required": [
              "page",
              "limit",
              "returned",
              "units_charged",
              "count_capped",
              "applied_floor"
            ]
          }
        },
        "required": [
          "query",
          "predicate",
          "total",
          "rows",
          "meta"
        ]
      }
    },
    "securitySchemes": {
      "apiKeyAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "A Ticker API key, created in Settings. Send it as `Authorization: Bearer tk_live_...`."
      }
    }
  }
}
