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

# List Agent Picks runs

> List project-owned run history, newest first by created_at then id. Includes starter and paid runs. No cloned public tests, GTM source runs or Storage artifacts. Operational records only; use the summary for rates. Requires Agent Picks and visibility.read. limit defaults to 50, maximum 100. Pass the returned next_cursor verbatim as cursor with the same filters until has_more is false. Detail pagination is inside evidence; list pagination is at the top level. Invalid parameters or a cursor for another scope return 400. Reads cannot start, cancel or change a run.



## OpenAPI

````yaml /openapi.json get /projects/{projectId}/agent-picks/runs
openapi: 3.1.0
info:
  title: DevTune API
  version: 2.0.0
  description: >-
    API for programmatic access to your AI visibility data, webhook
    subscriptions, and automation workflows. Use this API to integrate DevTune
    data into CI/CD pipelines, BI tools, AI agents, and operational systems.
servers:
  - url: https://devtune.ai/api/v2
    description: Production
security:
  - bearerAuth: []
paths:
  /projects/{projectId}/agent-picks/runs:
    get:
      summary: List Agent Picks runs
      description: >-
        List project-owned run history, newest first by created_at then id.
        Includes starter and paid runs. No cloned public tests, GTM source runs
        or Storage artifacts. Operational records only; use the summary for
        rates. Requires Agent Picks and visibility.read. limit defaults to 50,
        maximum 100. Pass the returned next_cursor verbatim as cursor with the
        same filters until has_more is false. Detail pagination is inside
        evidence; list pagination is at the top level. Invalid parameters or a
        cursor for another scope return 400. Reads cannot start, cancel or
        change a run.
      operationId: listAgentPicksRuns
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: test_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: Narrow to an owned test.
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
        - name: cursor
          in: query
          schema:
            type: string
            maxLength: 2000
      responses:
        '200':
          description: Agent Picks operational evidence
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AgentPicksRunList'
                  meta:
                    $ref: '#/components/schemas/Meta'
                required:
                  - data
                  - meta
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/RateLimitExceededError'
components:
  schemas:
    AgentPicksRunList:
      type: object
      additionalProperties: false
      required:
        - items
        - pagination
      properties:
        items:
          type: array
          items:
            type: object
            additionalProperties: false
            required:
              - id
              - test_id
              - test_kind
              - test_status
              - agent
              - model
              - repetition
              - status
              - created_at
              - started_at
              - completed_at
            properties:
              id:
                type: string
                format: uuid
              test_id:
                type: string
                format: uuid
              test_kind:
                type: string
              test_status:
                type: string
                enum:
                  - queued
                  - running
                  - failed
                  - cancelled
                  - completed
              agent:
                type: string
              model:
                type: string
              repetition:
                type: integer
              status:
                type: string
                enum:
                  - queued
                  - running
                  - failed
                  - cancelled
                  - completed
              created_at:
                type: string
                format: date-time
              started_at:
                type:
                  - string
                  - 'null'
              completed_at:
                type:
                  - string
                  - 'null'
        pagination:
          type: object
          additionalProperties: false
          required:
            - has_more
            - next_cursor
            - limit
          properties:
            has_more:
              type: boolean
            next_cursor:
              type:
                - string
                - 'null'
            limit:
              type: integer
              minimum: 1
              maximum: 100
    Meta:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        projectId:
          type: string
          format: uuid
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        reason:
          type: string
          description: >-
            Why the request was refused, for an error with more than one cause,
            such as a refused content-draft start.
        status:
          type: integer
      required:
        - error
        - message
        - status
  responses:
    BadRequestError:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnauthorizedError:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ForbiddenError:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFoundError:
      description: Not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimitExceededError:
      description: Rate limit exceeded
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  headers:
    X-RateLimit-Limit:
      description: Maximum requests per window
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests remaining in current window
      schema:
        type: integer
    X-RateLimit-Reset:
      description: Unix timestamp when the window resets
      schema:
        type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key with dtk_live_ prefix. Obtain it from API Keys in the account
        sidebar. New keys start with all supported scopes selected for the
        chosen project, and you can narrow them to specific read/write scopes as
        needed.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.