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

# List debates

> Returns a paginated list of debates with their answer options and current voting percentages.
Supports filtering by category and status, and sorting.




## OpenAPI

````yaml /openapi.yaml get /debates
openapi: 3.1.0
info:
  title: Thinkbase Data API
  version: 1.0.0
  description: >
    Structured opinion data, arguments, and voting percentages via REST API.


    Thinkbase captures **what** people think (voting percentages) and **why**
    they think it (structured arguments tied to positions). This data is
    available across 14 categories including Politics, Ethics, Technology, and
    more.


    ## Authentication

    All endpoints require an API key passed in the `X-API-Key` header.


    ## Tiers

    Usage-based pricing at $0.003/call with no base fees. Tiers auto-graduate
    based on lifetime spend.

    - **Free** ($0 spent, 100 calls/day): Debates, categories, trending, live
    percentages

    - **Tier 1** ($5 spent, 1K calls/day): + Arguments, search, historical
    snapshots

    - **Tier 2** ($50 spent, 10K calls/day): Higher rate limits

    - **Tier 3** ($250 spent, 100K calls/day): Production-scale access

    - **Tier 4** ($1,000 spent, 1M calls/day): Maximum throughput
servers:
  - url: https://api.trythinkbase.com/v1
    description: Production
security:
  - apiKey: []
tags:
  - name: Debates
    description: Browse and filter debates with live voting percentages.
  - name: Arguments
    description: >-
      Access structured arguments — the reasoning behind opinions. Requires
      **Tier 1+**.
  - name: History
    description: View prediction percentage changes over time. Requires **Tier 1+**.
  - name: Categories
    description: List debate categories.
  - name: Trending
    description: Get currently trending debates.
  - name: Search
    description: Search debates by keyword. Requires **Tier 1+**.
paths:
  /debates:
    get:
      tags:
        - Debates
      summary: List debates
      description: >
        Returns a paginated list of debates with their answer options and
        current voting percentages.

        Supports filtering by category and status, and sorting.
      operationId: listDebates
      parameters:
        - $ref: '#/components/parameters/PageParam'
        - $ref: '#/components/parameters/LimitParam'
        - name: category
          in: query
          schema:
            type: string
          description: Filter by category slug (e.g., `politics`, `ethics`, `technology`).
          example: politics
        - name: status
          in: query
          schema:
            type: string
            enum:
              - open
              - closing_soon
              - closed
              - resolved
          description: Filter by debate status.
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - recent
              - popular
              - ending_soon
            default: recent
          description: Sort order.
      responses:
        '200':
          description: Paginated list of debates.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Debate'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    PageParam:
      name: page
      in: query
      schema:
        type: integer
        default: 1
        minimum: 1
      description: Page number.
    LimitParam:
      name: limit
      in: query
      schema:
        type: integer
        default: 50
      description: >-
        Results per page. Maximum depends on your tier (free=100, tier_1=250,
        tier_2=500, tier_3=1000, tier_4=1000).
  schemas:
    Debate:
      type: object
      properties:
        id:
          type: string
          format: uuid
        title:
          type: string
          example: Should the United States ban TikTok over national security concerns?
        slug:
          type: string
          example: should-the-us-ban-tiktok
        description:
          type: string
          nullable: true
        category:
          type: string
          nullable: true
          example: Politics
        category_slug:
          type: string
          nullable: true
          example: politics
        status:
          type: string
          enum:
            - open
            - closing_soon
            - closed
            - resolved
          example: open
        total_predictions:
          type: integer
          example: 142
        options:
          type: array
          items:
            $ref: '#/components/schemas/Option'
        starts_at:
          type: string
          format: date-time
        ends_at:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
      required:
        - id
        - title
        - slug
        - status
        - total_predictions
        - options
        - starts_at
        - ends_at
        - created_at
    Pagination:
      type: object
      properties:
        page:
          type: integer
          example: 1
        limit:
          type: integer
          example: 50
        total:
          type: integer
          example: 1648
        has_more:
          type: boolean
          example: true
      required:
        - page
        - limit
        - total
        - has_more
    Option:
      type: object
      properties:
        id:
          type: string
          format: uuid
        text:
          type: string
          example: 'Yes'
        emoji:
          type: string
          nullable: true
          example: ✅
        vote_percentage:
          type: number
          format: float
          description: Percentage of predictors who chose this option (0-100).
          example: 62.5
        predictor_count:
          type: integer
          description: Number of people who predicted this option.
          example: 89
        display_order:
          type: integer
          example: 0
      required:
        - id
        - text
        - vote_percentage
        - predictor_count
        - display_order
    AuthError:
      type: object
      properties:
        error:
          type: string
          example: Missing API key
        message:
          type: string
          example: Include your API key in the X-API-Key header.
        docs:
          type: string
          example: https://docs.trythinkbase.com/authentication
    RateLimitError:
      type: object
      properties:
        error:
          type: string
          example: Rate limit exceeded
        message:
          type: string
          example: Daily limit of 10000 requests exceeded.
        limit:
          type: integer
          example: 10000
        upgrade_url:
          type: string
          example: https://docs.trythinkbase.com/pricing
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AuthError'
    RateLimited:
      description: Daily rate limit exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitError'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: Your Thinkbase API key. Get one at https://platform.trythinkbase.com.
      x-default: your-api-key-here

````