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

> ## Agent Instructions
> To integrate AGG, start with Quickstart: REST (https://docs.agg.market/quickstart/rest), then Order lifecycle & statuses (https://docs.agg.market/concepts/order-lifecycle).
> Track every trade until it reaches a terminal status. Before retrying a failed or timed-out call, read Errors, retries & idempotency (https://docs.agg.market/concepts/errors).
> The API reference is generated from https://docs.agg.market/openapi/openapi.json.

# List venue events

> Returns paginated venue events with optional filters for venue, status, category, and search. DEPRECATION: the per-item `description` field is deprecated and will be removed from list responses — fetch the full event (including `description`) via GET /venue-events/:id. The embedded `venueMarkets` on each item are a top-N preview only; for the full market list use GET /venue-markets?venueEventId=.



## OpenAPI

````yaml /openapi/openapi.json get /venue-events
openapi: 3.0.2
info:
  title: AGG API
  version: 1.0.0
  description: >-
    Prediction market aggregator REST API — authentication, users, venue events,
    venue markets, orderbooks, charts, and execution workflows.
servers:
  - url: https://api.agg.market
    description: Production
security: []
tags:
  - name: Authentication
    description: Sign users in and manage their session tokens.
  - name: Markets
    description: Find events, markets and outcomes to trade.
  - name: Market Data
    description: Live orderbooks, prices, charts and scores for those markets.
  - name: Trading
    description: Quote, place, sign, track and cancel orders.
  - name: Portfolio
    description: A user's orders, positions, balances and activity.
  - name: Funding
    description: Deposit addresses, withdrawals, balance refills and fiat on-ramp.
  - name: Users
    description: The signed-in user's profile, linked accounts, KYC and venue keys.
  - name: Hosted Venue Accounts
    description: Provision, fund and withdraw from venue accounts hosted for the user.
  - name: Webhooks
    description: Configure and operate webhook delivery to your server.
  - name: Partner Admin
    description: Server-side reads across your app's users, orders and analytics.
  - name: Paper Trading
    description: Simulated accounts and orders for testing without real funds.
  - name: News
    description: News feeds linked to markets.
  - name: Correlated Markets
    description: Markets related to a given market and the effect of its resolution.
paths:
  /venue-events:
    get:
      tags:
        - Markets
      summary: List venue events
      description: >-
        Returns paginated venue events with optional filters for venue, status,
        category, and search. DEPRECATION: the per-item `description` field is
        deprecated and will be removed from list responses — fetch the full
        event (including `description`) via GET /venue-events/:id. The embedded
        `venueMarkets` on each item are a top-N preview only; for the full
        market list use GET /venue-markets?venueEventId=.
      operationId: listVenueEvents
      parameters:
        - name: venues
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  anyOf:
                    - $ref: '#/components/schemas/Venue'
                    - type: string
                      enum:
                        - ''
              - $ref: '#/components/schemas/Venue'
              - type: string
                enum:
                  - ''
              - type: string
        - name: search
          in: query
          required: false
          schema:
            pattern: ^[^\u0000]*$
            description: Search text must not contain null characters.
            type: string
        - name: matchStatus
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                  enum:
                    - pending
                    - unmatched
                    - review
                    - matched
                    - verified
                    - rejected
              - type: string
                enum:
                  - pending
                  - unmatched
                  - review
                  - matched
                  - verified
                  - rejected
        - name: categoryIds
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
              - type: string
        - name: status
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                  enum:
                    - open
                    - closed
                    - resolved
                    - unopened
                    - paused
              - type: string
                enum:
                  - open
                  - closed
                  - resolved
                  - unopened
                  - paused
        - name: sortDir
          in: query
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - name: sortBy
          in: query
          required: false
          schema:
            type: string
            enum:
              - volume
              - volume24hr
              - createdAt
              - endDate
              - arbReturn
        - name: limit
          in: query
          required: false
          schema:
            minimum: 1
            maximum: 100
            type: number
        - name: cursor
          in: query
          required: false
          schema:
            type: string
        - name: grouped
          in: query
          required: false
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
        - name: aggKey
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
              - type: string
        - name: externalIdentifier
          in: query
          required: false
          schema:
            anyOf:
              - maxItems: 20
                type: array
                items:
                  type: string
              - type: string
        - name: venue
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/Venue'
        - name: recurrence
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                  enum:
                    - PT5M
                    - PT10M
                    - PT15M
                    - PT30M
                    - PT1H
                    - PT4H
                    - P1D
                    - P1W
                    - P1M
                    - P1Y
                    - 'null'
              - type: string
                enum:
                  - PT5M
                  - PT10M
                  - PT15M
                  - PT30M
                  - PT1H
                  - PT4H
                  - P1D
                  - P1W
                  - P1M
                  - P1Y
                  - 'null'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                  - nextCursor
                  - hasMore
                properties:
                  data:
                    description: This page of results.
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - externalIdentifier
                        - title
                        - image
                        - venue
                        - categories
                      properties:
                        id:
                          description: >-
                            Event id. List responses return one row per matched
                            cluster, and for a matched event this id is the
                            cluster anchor — the handle to use for cross-venue
                            lookups. Re-resolve it from discovery rather than
                            storing it as a permanent key: clusters can merge,
                            after which the id remains a valid event but is no
                            longer the cluster head. See the Matched Clusters
                            guide.
                          type: string
                        externalIdentifier:
                          type: string
                        title:
                          type: string
                        description:
                          type: string
                          nullable: true
                        image:
                          type: string
                          nullable: true
                        venue:
                          $ref: '#/components/schemas/Venue'
                        deployerVenue:
                          type: string
                          nullable: true
                        volume:
                          minimum: 0
                          type: number
                          nullable: true
                        status:
                          type: string
                          enum:
                            - open
                            - closed
                            - resolved
                            - unopened
                            - paused
                        startDate:
                          type: string
                          nullable: true
                        endDate:
                          type: string
                          nullable: true
                        creationDate:
                          type: string
                          nullable: true
                        gameStartTime:
                          type: string
                          nullable: true
                        categories:
                          type: array
                          items:
                            type: object
                            required:
                              - id
                              - category
                            properties:
                              id:
                                type: string
                              category:
                                type: object
                                required:
                                  - id
                                  - name
                                  - displayName
                                  - parentId
                                  - eventCount
                                  - volume24hr
                                  - volume
                                properties:
                                  id:
                                    type: string
                                  name:
                                    type: string
                                  displayName:
                                    type: string
                                    nullable: true
                                  parentId:
                                    type: string
                                    nullable: true
                                  eventCount:
                                    type: number
                                  volume24hr:
                                    type: number
                                  volume:
                                    type: number
                        slug:
                          type: string
                          nullable: true
                        subtitle:
                          type: string
                          nullable: true
                        venues:
                          description: >-
                            Venues this row's matched cluster spans — use it for
                            venue badges. On a cluster anchor this is the
                            cluster-wide set; a non-anchor member usually
                            reports the same set, but narrows to its own venue
                            when none of its markets have cross-venue
                            counterparts.
                          type: array
                          items:
                            $ref: '#/components/schemas/Venue'
                        marketCount:
                          minimum: 0
                          description: >-
                            Number of markets on this event. Use this rather
                            than the length of an embedded venueMarkets array,
                            which is a preview on list responses. On GET
                            /venue-events/:id this counts the whole matched
                            cluster (send cluster=false to scope it to the
                            single venue event); on list responses it counts the
                            row's own event.
                          type: integer
                        venueCount:
                          minimum: 0
                          description: >-
                            Length of `venues` — the size of the matched
                            cluster.
                          type: integer
                        groupMarketCount:
                          minimum: 0
                          type: integer
                        groupParentId:
                          description: >-
                            Same-venue companion grouping: the id of this
                            event's group base. NULL means the event IS the
                            base, or is standalone. A venue splits one game into
                            several events (`… - More Markets`, `… : Spread`),
                            and same-venue events never share a matched cluster
                            (the sole exception is Hyperliquid HIP-4 deployers,
                            see /recipes/hyperliquid-deployers) — so on a
                            companion, `matchedVenueEvents[]` lists the other
                            venues' EQUIVALENT companions, not the game's
                            cluster. Use this id (or the shared `aggKey`) to
                            reach the base. See /recipes/sports-market-detail.
                          type: string
                          nullable: true
                        updatedAt:
                          type: string
                          nullable: true
                        venueMarkets:
                          description: >-
                            Embedded markets. On list responses this is a
                            preview of up to three markets chosen to represent
                            the event on a card — not the complete set, and not
                            necessarily the largest; use marketCount for totals.
                            On the by-id response it is uncapped. Deprecated on
                            both — fetch markets from GET
                            /venue-markets?venueEventId=.
                          type: array
                          items:
                            type: object
                            required:
                              - id
                              - venue
                              - externalIdentifier
                              - question
                              - venueMarketOutcomes
                            properties:
                              id:
                                type: string
                              venue:
                                $ref: '#/components/schemas/Venue'
                              deployerVenue:
                                type: string
                                nullable: true
                              marketId:
                                type: string
                                nullable: true
                              externalIdentifier:
                                type: string
                              venueEventId:
                                type: string
                                nullable: true
                              question:
                                type: string
                              description:
                                type: string
                                nullable: true
                              rulesPrimary:
                                type: string
                                nullable: true
                              rulesSecondary:
                                type: string
                                nullable: true
                              conditionId:
                                type: string
                                nullable: true
                              volume:
                                minimum: 0
                                type: number
                                nullable: true
                              volume24hr:
                                minimum: 0
                                type: number
                                nullable: true
                              image:
                                type: string
                                nullable: true
                              venueMarketOutcomes:
                                type: array
                                items:
                                  type: object
                                  required:
                                    - id
                                    - venueMarketId
                                    - label
                                  properties:
                                    id:
                                      type: string
                                    venueMarketId:
                                      type: string
                                    externalIdentifier:
                                      type: string
                                      nullable: true
                                    label:
                                      type: string
                                    title:
                                      type: string
                                      nullable: true
                                    price:
                                      minimum: 0
                                      maximum: 1
                                      deprecated: true
                                      description: >-
                                        No longer returned. Fetch live prices
                                        from GET /midpoints (pass this outcome's
                                        parent venueMarketId in `ids` and match
                                        on `outcomes[].venueMarketOutcomeId`),
                                        or subscribe to the WebSocket midpoint
                                        stream.
                                      type: number
                                    winner:
                                      type: boolean
                                      nullable: true
                                    payoutPerShare:
                                      minimum: 0
                                      maximum: 1
                                      description: >-
                                        Per-share USDC payout of this outcome in
                                        [0, 1] once the market settles. Source
                                        of truth over `winner` when set: a
                                        Polymarket UMA 50/50 stores 0.5 on both
                                        sides, a Novig void stores its refund
                                        prices (e.g. 0.155 / 0.845). `null` =
                                        unknown; clients fall back to `winner ?
                                        1/winnerCount : 0`.
                                      type: number
                                      nullable: true
                                    refundAtCost:
                                      description: >-
                                        True when the venue voided the market
                                        and returns every holder their stake
                                        (ProphetX). `winner` is true on every
                                        outcome and `payoutPerShare` is null;
                                        the per-share refund is the holder's own
                                        average entry price. Check this BEFORE
                                        `payoutPerShare` / `winner ?
                                        1/winnerCount : 0`.
                                      type: boolean
                                    matchedVenueMarketOutcomes:
                                      type: array
                                      items:
                                        type: object
                                        required:
                                          - venueMarketId
                                          - venueMarketOutcomeId
                                        properties:
                                          venueMarketId:
                                            type: string
                                          venueMarketOutcomeId:
                                            type: string
                              status:
                                type: string
                                enum:
                                  - open
                                  - closed
                                  - resolved
                                  - unopened
                                  - paused
                              startDate:
                                type: string
                                nullable: true
                              endDate:
                                type: string
                                nullable: true
                              creationDate:
                                type: string
                                nullable: true
                              createdAt:
                                type: string
                                nullable: true
                              resolutionDate:
                                type: string
                                nullable: true
                              negRisk:
                                type: boolean
                              venues:
                                type: array
                                items:
                                  $ref: '#/components/schemas/Venue'
                              venueCount:
                                minimum: 0
                                type: integer
                              arbReturn:
                                type: number
                                nullable: true
                              aggKey:
                                description: >-
                                  Deterministic canonical key computed from this
                                  venue's own data; null when not
                                  canonicalizable. This is a fetch filter, not a
                                  cross-venue join key — it is guaranteed
                                  identical across venues only for sports
                                  head-to-head and crypto up/down markets, and
                                  two members of the same matched cluster can
                                  carry different keys. Use the event id and
                                  matchedVenueMarkets for identity.
                                type: string
                                nullable: true
                              sportsMarketType:
                                type: string
                                nullable: true
                              sectionRank:
                                type: integer
                                nullable: true
                              period:
                                type: string
                                nullable: true
                              marketCategory:
                                type: string
                                nullable: true
                              marketGroup:
                                type: string
                                nullable: true
                              marketSubtype:
                                type: string
                                nullable: true
                              lineValue:
                                type: number
                                nullable: true
                              minOrderSize:
                                description: >-
                                  Per-market minimum order size in
                                  shares/contracts. Populated for Polymarket
                                  (the market's own floor) and PRED (0.001);
                                  null elsewhere. POST /execution/limit-orders
                                  validates `sizeRaw` against this value on
                                  Polymarket. `null` means AGG ingested no value
                                  for this market — NOT that the market has no
                                  minimum; other venues enforce their own floors
                                  this field does not carry.
                                type: number
                                nullable: true
                              tickSize:
                                description: >-
                                  Price increment from the venue's market
                                  metadata. A seed value — prefer the
                                  runtime-inferred `tick` from GET /orderbooks
                                  or GET /orderbook/outcome/:outcomeId when
                                  aligning a limit price, since the live grid
                                  can be finer than this.
                                type: number
                                nullable: true
                              feeRate:
                                description: >-
                                  The venue's published taker fee rate for this
                                  market. `null` means we do not have it — fall
                                  back to your own table; `0` is a real rate
                                  meaning the venue charges nothing. Excludes
                                  our builder and clearinghouse fees, which
                                  appear in the quote's `feeBreakdown`. See
                                  /recipes/venue-fees.
                                type: number
                                nullable: true
                              feeExponent:
                                description: >-
                                  Exponent paired with `feeRate`: `0` = flat
                                  fraction of notional, `>= 1` = quadratic
                                  family. `null` when `feeBasis` is `winnings`,
                                  which has no price curve. See
                                  /recipes/venue-fees.
                                type: number
                                nullable: true
                              feeBasis:
                                description: >-
                                  When the fee is charged: `fill` at execution,
                                  `fill_in_game_only` only on fills matched
                                  while the event is live, `winnings` at
                                  settlement on net profit per market, `exit`
                                  only when a position is closed or settles as a
                                  winner (opening trades are free). See
                                  /recipes/venue-fees.
                                type: string
                                enum:
                                  - fill
                                  - fill_in_game_only
                                  - winnings
                                  - exit
                                nullable: true
                              matchedVenueMarkets:
                                description: >-
                                  The same market on other venues, as linked by
                                  AGG's matching pipeline. This is the
                                  cross-venue linkage — it hangs off each
                                  market, not off the event, and is complete
                                  regardless of which cluster member you
                                  queried.
                                type: array
                                items:
                                  type: object
                                  required:
                                    - id
                                    - venue
                                    - externalIdentifier
                                    - question
                                  properties:
                                    id:
                                      type: string
                                    venue:
                                      $ref: '#/components/schemas/Venue'
                                    deployerVenue:
                                      type: string
                                      nullable: true
                                    externalIdentifier:
                                      type: string
                                    question:
                                      type: string
                                    description:
                                      type: string
                                      nullable: true
                                    rulesPrimary:
                                      type: string
                                      nullable: true
                                    rulesSecondary:
                                      type: string
                                      nullable: true
                                    volume:
                                      minimum: 0
                                      type: number
                                      nullable: true
                                    volume24hr:
                                      minimum: 0
                                      type: number
                                      nullable: true
                                    status:
                                      type: string
                                      enum:
                                        - open
                                        - closed
                                        - resolved
                                        - unopened
                                        - paused
                                    conditionId:
                                      type: string
                                      nullable: true
                                    arbReturn:
                                      type: number
                                      nullable: true
                                    shortTitle:
                                      type: string
                                      nullable: true
                                    image:
                                      type: string
                                      nullable: true
                                    venueEvent:
                                      type: object
                                      required:
                                        - id
                                        - externalIdentifier
                                      properties:
                                        id:
                                          type: string
                                        externalIdentifier:
                                          type: string
                                        slug:
                                          type: string
                                          nullable: true
                                        title:
                                          type: string
                                          nullable: true
                                        series:
                                          type: object
                                          required:
                                            - id
                                            - venue
                                            - externalIdentifier
                                          properties:
                                            id:
                                              type: string
                                            name:
                                              type: string
                                              nullable: true
                                            venue:
                                              type: string
                                            externalIdentifier:
                                              type: string
                                          nullable: true
                                      nullable: true
                                    venueMarketOutcomes:
                                      type: array
                                      items:
                                        type: object
                                        required:
                                          - id
                                          - venueMarketId
                                          - label
                                        properties:
                                          id:
                                            type: string
                                          venueMarketId:
                                            type: string
                                          externalIdentifier:
                                            type: string
                                            nullable: true
                                          label:
                                            type: string
                                          title:
                                            type: string
                                            nullable: true
                                          price:
                                            deprecated: true
                                            description: >-
                                              No longer returned. Fetch live prices
                                              from GET /midpoints — sibling outcomes
                                              are covered by the `matched[]` entries
                                              of the parent market's midpoint item.
                                            type: number
                                          winner:
                                            type: boolean
                                            nullable: true
                                          payoutPerShare:
                                            minimum: 0
                                            maximum: 1
                                            description: >-
                                              Per-share USDC payout of this outcome in
                                              [0, 1] once the market settles. Source
                                              of truth over `winner` when set: a
                                              Polymarket UMA 50/50 stores 0.5 on both
                                              sides, a Novig void stores its refund
                                              prices (e.g. 0.155 / 0.845). `null` =
                                              unknown; clients fall back to `winner ?
                                              1/winnerCount : 0`.
                                            type: number
                                            nullable: true
                                          refundAtCost:
                                            description: >-
                                              True when the venue voided the market
                                              and returns every holder their stake
                                              (ProphetX). `winner` is true on every
                                              outcome and `payoutPerShare` is null;
                                              the per-share refund is the holder's own
                                              average entry price. Check this BEFORE
                                              `payoutPerShare` / `winner ?
                                              1/winnerCount : 0`.
                                            type: boolean
                        arbReturn:
                          type: number
                          nullable: true
                        series:
                          type: object
                          required:
                            - externalIdentifier
                          properties:
                            externalIdentifier:
                              type: string
                          nullable: true
                        recurrence:
                          type: string
                          nullable: true
                        aggKey:
                          description: >-
                            Deterministic canonical key computed from this
                            venue's own data; null when not canonicalizable.
                            This is a fetch filter, not a cross-venue join key —
                            it is guaranteed identical across venues only for
                            sports head-to-head and crypto up/down markets, and
                            two members of the same matched cluster can carry
                            different keys. Use the event id and
                            matchedVenueMarkets for identity.
                          type: string
                          nullable: true
                        structureType:
                          type: string
                          enum:
                            - candidate
                            - sport
                            - axis
                            - dates
                          nullable: true
                        sport:
                          type: string
                          nullable: true
                        settlementDiff:
                          type: object
                          required:
                            - sharedSummary
                            - differences
                          properties:
                            sharedSummary:
                              type: string
                            differences:
                              type: array
                              items:
                                type: object
                                required:
                                  - type
                                  - title
                                  - perVenue
                                properties:
                                  type:
                                    type: string
                                  title:
                                    type: string
                                  perVenue:
                                    type: object
                                    additionalProperties:
                                      type: string
                                  summary:
                                    type: string
                          nullable: true
                        matchedVenueEvents:
                          type: array
                          items:
                            type: object
                            required:
                              - id
                              - venue
                              - externalIdentifier
                              - title
                            properties:
                              id:
                                description: >-
                                  Sibling event id. Re-resolve from discovery
                                  rather than persisting: cluster merges
                                  re-point members onto the surviving root,
                                  after which this id remains a valid event but
                                  is no longer the cluster head.
                                type: string
                              venue:
                                $ref: '#/components/schemas/Venue'
                              externalIdentifier:
                                type: string
                              title:
                                type: string
                              slug:
                                type: string
                                nullable: true
                              status:
                                type: string
                                enum:
                                  - open
                                  - closed
                                  - resolved
                                  - unopened
                                  - paused
                              series:
                                type: object
                                required:
                                  - externalIdentifier
                                properties:
                                  externalIdentifier:
                                    type: string
                                nullable: true
                  nextCursor:
                    description: >-
                      Pass as `cursor` to fetch the next page; `null` on the
                      last page.
                    type: string
                    nullable: true
                  hasMore:
                    description: '`true` when another page exists.'
                    type: boolean
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '401':
          description: '401'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      security:
        - appId: []
components:
  schemas:
    Venue:
      type: string
      enum:
        - kalshi
        - polymarket
        - limitless
        - opinion
        - predict
        - pred
        - tiprun
        - probable
        - myriad
        - hyperliquid
        - novig
        - prophetx
        - betdex
    ErrorMessage:
      type: object
      required:
        - message
      properties:
        message:
          type: string
  securitySchemes:
    appId:
      type: apiKey
      in: header
      name: x-app-id
      description: Your application ID. Required for all app-tier and user-tier routes.

````