> ## 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.

# Get Agent Picks test cells

> Read per-model cells for up to eight distinct project-owned tests from history, with coverage, shared loss verdicts, fallback and outcome counts, and per-tool rates and Wilson ranges. Each test includes status; non-completed tests retain coverage only, with all tools unmeasured and null measurement counts, rates, ranges and verdicts. Each test includes comparison_key for its recorded category and requests; compare equal keys only and break history lines when keys change. Each test includes outcome_counts_available; the three outcome run counts are null when completed run detail is unavailable. Displayed coverage includes fallback guesses; loss decisions exclude them. Unmeasured tools have measured false and null rates. Requires Agent Picks.



## OpenAPI

````yaml /openapi.json get /projects/{projectId}/agent-picks/cells
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/cells:
    get:
      summary: Get Agent Picks test cells
      description: >-
        Read per-model cells for up to eight distinct project-owned tests from
        history, with coverage, shared loss verdicts, fallback and outcome
        counts, and per-tool rates and Wilson ranges. Each test includes status;
        non-completed tests retain coverage only, with all tools unmeasured and
        null measurement counts, rates, ranges and verdicts. Each test includes
        comparison_key for its recorded category and requests; compare equal
        keys only and break history lines when keys change. Each test includes
        outcome_counts_available; the three outcome run counts are null when
        completed run detail is unavailable. Displayed coverage includes
        fallback guesses; loss decisions exclude them. Unmeasured tools have
        measured false and null rates. Requires Agent Picks.
      operationId: getAgentPicksCells
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: test_ids
          in: query
          required: true
          description: >-
            Comma-separated project-owned test UUIDs, limited to 1 to 8 distinct
            IDs. Duplicates are returned once, in first-requested order.
          schema:
            type: string
            minLength: 36
            maxLength: 2048
      responses:
        '200':
          description: Per-model test cells
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AgentPicksCellsData'
                  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:
    AgentPicksCellsData:
      type: object
      required:
        - tests
      properties:
        tests:
          type: array
          maxItems: 8
          items:
            type: object
            required:
              - test_id
              - status
              - comparison_key
              - completed_at
              - outcome_counts_available
              - cells
            properties:
              test_id:
                type: string
                format: uuid
              status:
                type: string
                enum:
                  - queued
                  - running
                  - completed
                  - failed
                  - cancelled
                description: >-
                  Only completed tests expose measurements. Other statuses
                  retain coverage with measured false and null counts, rates,
                  ranges and verdicts.
              comparison_key:
                type: string
                description: >-
                  Opaque hash of category_id and the recorded request snapshot:
                  sorted distinct prompt ids/intents/text, job_line and
                  job_signals. Execution settings are excluded. When request
                  metadata is absent, only category_id is covered; edits absent
                  from the snapshot cannot be detected. Compare only equal keys
                  and break history lines when they change.
              completed_at:
                type:
                  - string
                  - 'null'
                format: date-time
              outcome_counts_available:
                type: boolean
                description: >-
                  True only for a completed test whose completed run detail
                  covers every cell. The three outcome run counts are null when
                  false.
              cells:
                type: array
                items:
                  $ref: '#/components/schemas/AgentPicksModelCell'
    Meta:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        projectId:
          type: string
          format: uuid
    AgentPicksModelCell:
      type: object
      required:
        - environment_id
        - framework
        - intent
        - agent
        - model
        - planned
        - completed
        - own_picks
        - fallback_runs
        - top_outcome
        - top_tool_key
        - top_picks
        - is_loss
        - own_led
        - none_runs
        - unclassified_runs
        - other_tool_runs
        - tools
      properties:
        environment_id:
          type: string
          format: uuid
        framework:
          type: string
        intent:
          type: string
          enum:
            - add
            - recommend
            - hosted
        agent:
          type: string
          enum:
            - claude_code
            - codex
            - cursor
            - pi
            - opencode
        model:
          type: string
        planned:
          type: integer
          minimum: 0
        completed:
          type: integer
          minimum: 0
          description: >-
            Coverage including unmatched-code guesses; displayed rates retain
            these runs.
        own_picks:
          type:
            - integer
            - 'null'
          minimum: 0
        fallback_runs:
          type:
            - integer
            - 'null'
          minimum: 0
        top_outcome:
          type:
            - string
            - 'null'
          enum:
            - installed
            - built_its_own
            - no_provider
            - null
        top_tool_key:
          type:
            - string
            - 'null'
        top_picks:
          type:
            - integer
            - 'null'
          minimum: 0
          description: >-
            Top pick count after excluding unmatched-code guesses, as the loss
            generator does.
        is_loss:
          type:
            - boolean
            - 'null'
          description: >-
            The shared loss Action rule, excluding unmatched-code guesses. Null
            unless the test completed.
        own_led:
          type:
            - boolean
            - 'null'
          description: >-
            Own tool is the strict top pick or was installed in a majority of
            completed runs. Null unless the test completed.
        none_runs:
          type:
            - integer
            - 'null'
          minimum: 0
        unclassified_runs:
          type:
            - integer
            - 'null'
          minimum: 0
        other_tool_runs:
          type:
            - integer
            - 'null'
          minimum: 0
        tools:
          type: array
          items:
            $ref: '#/components/schemas/AgentPicksCellTool'
    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
    AgentPicksCellTool:
      type: object
      required:
        - outcome
        - tool_key
        - runs
        - picks
        - rate
        - rate_low
        - rate_high
        - measured
        - is_own
        - is_competitor
      properties:
        outcome:
          type: string
          enum:
            - installed
            - built_its_own
            - no_provider
        tool_key:
          type:
            - string
            - 'null'
        runs:
          type:
            - integer
            - 'null'
          minimum: 0
        picks:
          type:
            - integer
            - 'null'
          minimum: 0
        rate:
          type:
            - number
            - 'null'
          minimum: 0
          maximum: 1
        rate_low:
          type:
            - number
            - 'null'
          minimum: 0
          maximum: 1
        rate_high:
          type:
            - number
            - 'null'
          minimum: 0
          maximum: 1
        measured:
          type: boolean
          description: >-
            False when the test is not completed or the tool was not recognised.
            Rates are null; counts and verdicts are also null for non-completed
            tests.
        is_own:
          type: boolean
        is_competitor:
          type: boolean
  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.