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

# List Captures

> Returns a paginated list of captures (sessions) for the organization with optional filters.

### Query parameters

All query parameters are optional. See the operation above for types and constraints.

| Parameter        | Purpose                                                                                                               |
| ---------------- | --------------------------------------------------------------------------------------------------------------------- |
| **`athlete_id`** | UUID; restrict to sessions for that athlete in your organization.                                                     |
| **`source`**     | When set to **`api`**, only sessions with `configdata.source` equal to **`api`** are returned.                        |
| **`status`**     | One of **`awaiting_upload`**, **`processing`**, **`completed`**, **`error`** (mapped from session `analysis_status`). |
| **`activity`**   | Case-insensitive match on presets activity (trimmed and lowercased).                                                  |
| **`movement`**   | Case-insensitive match on presets movement (trimmed and lowercased).                                                  |
| **`limit`**      | Page size; default **100**, clamped to **1–500**.                                                                     |
| **`offset`**     | Rows to skip; default **0**.                                                                                          |

Successful **`200`** responses include **`captures`** (array of `Capture`), **`total_count`**, **`offset`**, and **`limit`** as documented in the OpenAPI response schema.


## OpenAPI

````yaml GET /captures
openapi: 3.0.0
info:
  title: Uplift SQL API
  version: v1
  description: >-
    API for submitting SQL queries and retrieving job IDs for the Uplift
    platform.
servers:
  - url: https://api.uplift.ai/v1
security: []
paths:
  /captures:
    get:
      tags:
        - Captures
      summary: List captures
      description: >-
        Returns a paginated list of captures (sessions) for the organization
        with optional filters.
      parameters:
        - name: athlete_id
          in: query
          required: false
          description: >-
            Restrict to sessions for this athlete. Must exist in the
            organization.
          schema:
            type: string
            format: uuid
        - name: source
          in: query
          required: false
          description: >-
            When `api`, only sessions whose `configdata.source` equals `api` are
            returned.
          schema:
            type: string
            enum:
              - api
        - name: status
          in: query
          required: false
          description: >-
            Filter by API capture status (mapped from session
            `analysis_status`).
          schema:
            type: string
            enum:
              - awaiting_upload
              - processing
              - completed
              - error
        - name: activity
          in: query
          required: false
          description: Case-insensitive match on presets activity (trimmed and lowercased).
          schema:
            type: string
            maxLength: 128
        - name: movement
          in: query
          required: false
          description: Case-insensitive match on presets movement (trimmed and lowercased).
          schema:
            type: string
            maxLength: 128
        - name: limit
          in: query
          required: false
          description: Page size; default 100, clamped to 1–500.
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 100
        - name: offset
          in: query
          required: false
          description: Rows to skip; default 0.
          schema:
            type: integer
            minimum: 0
            default: 0
      responses:
        '200':
          description: Page of captures matching filters.
          content:
            application/json:
              schema:
                type: object
                properties:
                  captures:
                    type: array
                    items:
                      $ref: '#/components/schemas/Capture'
                  total_count:
                    type: integer
                    description: Total rows matching filters (not just this page).
                  offset:
                    type: integer
                    description: Effective offset after clamping.
                  limit:
                    type: integer
                    description: Effective page size after clamping.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  schemas:
    Capture:
      type: object
      description: >-
        Capture (session) record. Published movement dimension fields may appear
        as additional top-level properties.
      properties:
        session_id:
          type: string
          description: Session entity id.
        athlete_id:
          type: string
          nullable: true
          description: Athlete id when linked via athletes_sessions.
        activity:
          type: string
          nullable: true
          description: From presets.activity.
        movement:
          type: string
          nullable: true
          description: From presets.movement.
        status:
          type: string
          enum:
            - awaiting_upload
            - processing
            - completed
            - error
          description: API status derived from session analysis_status.
        error:
          type: string
          nullable: true
          description: Error or QA failure summary when applicable.
        capture_time:
          type: string
          format: date-time
          nullable: true
          description: ISO 8601 from created_at when present.
        fps_detected:
          type: number
          nullable: true
          description: >-
            From session metadata (e.g. primary_frameRate or frameRate) when
            available.
      additionalProperties: true
    Error:
      type: object
      properties:
        error:
          type: string
          description: A short error code representing the type of error.
        message:
          type: string
          description: A detailed message explaining the error.
  responses:
    BadRequest:
      description: Invalid request parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: BadRequest
            message: >-
              The request parameters are invalid. Please review the request and
              try again.
    Unauthorized:
      description: Unauthorized. Bearer token is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Unauthorized
            message: Bearer token is missing or invalid.
    Forbidden:
      description: Forbidden. You do not have permission to access this resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Forbidden
            message: You do not have permission to access this resource.
    TooManyRequests:
      description: Too Many Requests. The rate limit has been exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: TooManyRequests
            message: The rate limit has been exceeded. Please wait and try again later.
    InternalServerError:
      description: Internal Server Error. Something went wrong on the server.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: InternalServerError
            message: >-
              An unexpected error occurred on the server. Please try again
              later.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````