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

# List Builds

> Retrieve a paginated list of builds for your project.

<Info>
  **Permission Required**: `project:manage-build-storage`
</Info>

Retrieve a paginated list of builds for your project.

## Query Parameters

<ParamField query="status" type="string">
  Filter by build status (e.g., `OK`, `UNHEALTHY`)
</ParamField>

<ParamField query="pinned" type="boolean">
  Filter by pinned status: `true` for pinned builds only, `false` for non-pinned only
</ParamField>

<ParamField query="nunu_sdk" type="boolean">
  Filter by nunu SDK integration: `true` for SDK builds only, `false` for non-SDK only
</ParamField>

<ParamField query="platform" type="string">
  Filter by platform: `windows`, `android`, `ios-native`
</ParamField>

<ParamField query="tags" type="string">
  Filter by tags (comma-separated). All specified tags must match. Example: `tags=release,candidate`
</ParamField>

<ParamField query="page" type="integer" default="0">
  Page number (0-indexed)
</ParamField>

<ParamField query="page_size" type="integer" default="20">
  Results per page (1-100)
</ParamField>

## Response

<ResponseField name="data" type="Build[]" required>
  Array of build objects
</ResponseField>

<ResponseField name="pagination" type="object" required>
  Pagination information

  <Expandable title="pagination properties">
    <ResponseField name="pagination.page" type="integer">
      Current page number
    </ResponseField>

    <ResponseField name="pagination.page_size" type="integer">
      Results per page
    </ResponseField>

    <ResponseField name="pagination.total_count" type="integer">
      Total number of builds
    </ResponseField>

    <ResponseField name="pagination.total_pages" type="integer">
      Total number of pages
    </ResponseField>
  </Expandable>
</ResponseField>

### Build Object

<ResponseField name="id" type="string" required>
  Unique identifier for the build (UUID)
</ResponseField>

<ResponseField name="name" type="string" required>
  Build name
</ResponseField>

<ResponseField name="platform" type="string" required>
  Target platform
</ResponseField>

<ResponseField name="status" type="string" required>
  Build status: `uploading`, `ready`, `failed`
</ResponseField>

<ResponseField name="file_name" type="string" required>
  Original file name
</ResponseField>

<ResponseField name="file_size" type="integer" required>
  File size in bytes
</ResponseField>

<ResponseField name="pinned" type="boolean" required>
  Whether the build is pinned (protected from auto-deletion)
</ResponseField>

<ResponseField name="nunu_sdk" type="boolean" required>
  Whether the build includes nunu SDK integration
</ResponseField>

<ResponseField name="tags" type="string[]" required>
  Tags associated with this build
</ResponseField>

<ResponseField name="created_at" type="string" required>
  ISO 8601 timestamp when the build was created
</ResponseField>

<ResponseField name="last_used" type="string">
  ISO 8601 timestamp when the build was last used in a run
</ResponseField>

<ResponseField name="description" type="string">
  Build description
</ResponseField>

<RequestExample>
  ```bash cURL theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  curl -X GET "https://nunu.ai/api/v1/project/your-project-id/builds?status=ready&platform=android&page=0&page_size=10" \
    -H "X-Api-Key: YOUR_API_TOKEN"
  ```

  ```typescript JavaScript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  const response = await fetch(
    "https://nunu.ai/api/v1/project/your-project-id/builds?status=ready&platform=android&page=0&page_size=10",
    {
      headers: {
        "X-Api-Key": process.env.NUNU_API_TOKEN,
      },
    }
  );
  const data = await response.json();
  ```

  ```python Python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import requests
  import os

  response = requests.get(
      "https://nunu.ai/api/v1/project/your-project-id/builds",
      headers={"X-Api-Key": os.environ["NUNU_API_TOKEN"]},
      params={"status": "ready", "platform": "android", "page": 0, "page_size": 10}
  )
  data = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  {
    "data": [
      {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "name": "Production Build v1.2.3",
        "platform": "android",
        "status": "OK",
        "file_name": "app-release.apk",
        "file_size": 52428800,
        "pinned": true,
        "nunu_sdk": true,
        "tags": ["version:1.2.3", "env:production"],
        "created_at": "2026-03-03T15:50:19.544603+00:00",
        "last_used": "2026-03-10T10:30:00.000000+00:00",
        "description": "Release build for production"
      }
    ],
    "pagination": {
      "page": 0,
      "page_size": 10,
      "total_count": 25,
      "total_pages": 3
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml GET /project/{projectId}/builds
openapi: 3.1.0
info:
  title: nunu.ai API
  description: >-
    The nunu.ai Public API allows you to programmatically interact with your
    projects, manage test runs, and upload builds.
  version: 1.0.0
servers:
  - url: https://nunu.ai/api/v1
security:
  - apiKeyAuth: []
paths:
  /project/{projectId}/builds:
    parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
        description: >-
          The project ID. You can copy it from the project settings page or the
          project URL in the dashboard.
    get:
      tags:
        - Builds
      summary: List Builds
      description: Retrieve a paginated list of builds for your project.
      operationId: listBuilds
      parameters:
        - name: status
          in: query
          description: Filter by build status (e.g., OK, UNHEALTHY)
          schema:
            type: string
        - name: pinned
          in: query
          description: Filter by pinned status
          schema:
            type: boolean
        - name: nunu_sdk
          in: query
          description: Filter by nunu SDK integration
          schema:
            type: boolean
        - name: platform
          in: query
          description: Filter by platform
          schema:
            type: string
            enum:
              - windows
              - macos
              - linux
              - android
              - ios-native
              - ios-simulator
              - xbox
              - playstation
        - name: tags
          in: query
          description: Filter by tags (comma-separated). All specified tags must match.
          schema:
            type: string
        - name: page
          in: query
          description: Page number (0-indexed)
          schema:
            type: integer
            default: 0
        - name: page_size
          in: query
          description: Results per page (1-100)
          schema:
            type: integer
            default: 20
            minimum: 1
            maximum: 100
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListBuildsResponse'
        '400':
          description: Bad Request - Invalid query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden - API key lacks required permission
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ListBuildsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Build'
        pagination:
          type: object
          properties:
            page:
              type: integer
            page_size:
              type: integer
            total_count:
              type: integer
            total_pages:
              type: integer
    Error:
      type: object
      properties:
        error:
          type: string
        code:
          type: string
        details:
          type: object
    Build:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the build
        name:
          type: string
          description: Build name
        platform:
          type: string
          description: Target platform
        status:
          type: string
          description: Build status (e.g., OK, UNHEALTHY)
        file_name:
          type: string
          description: Original file name
        file_size:
          type: integer
          description: File size in bytes
        pinned:
          type: boolean
          description: Whether the build is pinned (protected from auto-deletion)
        nunu_sdk:
          type: boolean
          description: Whether the build includes nunu SDK integration
        tags:
          type: array
          items:
            type: string
          description: Tags associated with this build
        created_at:
          type: string
          format: date-time
          description: Timestamp when the build was created
        last_used:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the build was last used in a run
        description:
          type: string
          nullable: true
          description: Build description
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: API key for authentication

````