> ## 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 starter test

> Returns the project’s latest Agent Picks starter test as it runs: its status (queued, running, completed, failed or cancelled), when it was created and completed, planned vs completed runs, and each run’s request, agent and model, status, recorded sandbox attempts and, once classified, its pick (a tool_key, or built_its_own and the other outcomes). A failed or cancelled test keeps its runs. A project with no starter test returns test null and empty runs. These are per-run results, not rates; install rates come from the summary once the test completes. Any parameter is refused with 400. Needs the Agent Picks feature; without it the request is refused with 403.



## OpenAPI

````yaml /openapi.json get /projects/{projectId}/agent-picks/starter-test
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/starter-test:
    get:
      summary: Get Agent Picks starter test
      description: >-
        Returns the project’s latest Agent Picks starter test as it runs: its
        status (queued, running, completed, failed or cancelled), when it was
        created and completed, planned vs completed runs, and each run’s
        request, agent and model, status, recorded sandbox attempts and, once
        classified, its pick (a tool_key, or built_its_own and the other
        outcomes). A failed or cancelled test keeps its runs. A project with no
        starter test returns test null and empty runs. These are per-run
        results, not rates; install rates come from the summary once the test
        completes. Any parameter is refused with 400. Needs the Agent Picks
        feature; without it the request is refused with 403.
      operationId: getAgentPicksStarterTest
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Agent Picks starter test
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/AgentPicksStarterTestData'
                  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:
    AgentPicksStarterTestData:
      type: object
      properties:
        test:
          type:
            - object
            - 'null'
          description: The project’s latest starter test; null when it has none.
          properties:
            id:
              type: string
              format: uuid
            status:
              type: string
              enum:
                - queued
                - running
                - completed
                - failed
                - cancelled
            category_id:
              type: string
              format: uuid
            created_at:
              type: string
              format: date-time
            completed_at:
              type:
                - string
                - 'null'
              format: date-time
            planned_runs:
              type: integer
              minimum: 0
              description: Every run the test queued.
            completed_runs:
              type: integer
              minimum: 0
              description: Runs with status completed.
            environment:
              type:
                - object
                - 'null'
              properties:
                name:
                  type: string
                framework:
                  type:
                    - string
                    - 'null'
              required:
                - name
                - framework
          required:
            - id
            - status
            - category_id
            - created_at
            - completed_at
            - planned_runs
            - completed_runs
            - environment
        runs:
          type: array
          description: >-
            The test’s runs by request (add, recommend, hosted) then agent.
            Empty when there is no test. A failed or cancelled test keeps its
            runs.
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
              intent:
                type: string
                description: >-
                  add (build it), recommend (recommend one) or hosted (hosted
                  service).
              request:
                type: string
                description: The request the agent was given.
              agent:
                type: string
              model:
                type: string
              status:
                type: string
                enum:
                  - queued
                  - running
                  - completed
                  - failed
                  - cancelled
              outcome:
                type:
                  - string
                  - 'null'
                description: >-
                  installed, built_its_own, no_provider, other_tool, none or
                  unclassified; null until the run is classified.
              tool_key:
                type:
                  - string
                  - 'null'
                description: >-
                  The installed tool; null for every other outcome and before
                  classification.
              other_tools:
                type: array
                items:
                  type: string
                description: >-
                  For other_tool: the packages and hosts the run added that no
                  tool in the test names.
              sandbox_attempts:
                type: integer
                minimum: 0
                description: >-
                  Sandboxes the run started, as recorded; 0 before its first
                  starts.
            required:
              - id
              - intent
              - request
              - agent
              - model
              - status
              - outcome
              - tool_key
              - other_tools
              - sandbox_attempts
        tools:
          type:
            - array
            - 'null'
          description: >-
            The tools the test ran with, as recorded when it was queued, with a
            display name and logo domain to label each tool_key. The labels can
            reflect catalogue edits made since; the list of tools does not. Null
            for a test queued before tests recorded their tools, whose tool list
            is unknown; empty when there is no test.
          items:
            type: object
            properties:
              tool_key:
                type: string
              display_name:
                type: string
              brand_domain:
                type:
                  - string
                  - 'null'
            required:
              - tool_key
              - display_name
              - brand_domain
      required:
        - test
        - runs
        - tools
    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.