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

# Get build upload URL

> Step 1 of 2 for attaching a mobile build (.apk/.ipa) to a run. Returns a presigned `uploadUrl` and a `buildToken`. Next, upload the raw build file to `uploadUrl` with an HTTP PUT request (request body = the raw file bytes, `Content-Type` = the file's MIME type such as `application/octet-stream`; no auth header — the URL is presigned), then call `create_application_build` with the same `buildToken`.



## OpenAPI

````yaml /api-reference/api.json post /v1/applications/{applicationShortId}/builds/upload-url
openapi: 3.0.0
info:
  title: QA.tech API
  version: 1.0.0
  contact:
    name: QA.tech
    url: https://qa.tech
    email: support@qa.tech
  description: API for triggering and managing AI-powered test runs
servers:
  - url: https://api.qa.tech
    description: Production
    variables: {}
security:
  - BearerAuth: []
tags:
  - name: Runs
  - name: Infrastructure
  - name: Test Cases
  - name: Application Builds
  - name: Status badge
  - name: Remote Tunnels
  - name: Chat
  - name: Applications
  - name: Features
  - name: Metrics
  - name: Release Checks
  - name: Projects
paths:
  /v1/applications/{applicationShortId}/builds/upload-url:
    post:
      tags:
        - Application Builds
      summary: Get build upload URL
      description: >-
        Step 1 of 2 for attaching a mobile build (.apk/.ipa) to a run. Returns a
        presigned `uploadUrl` and a `buildToken`. Next, upload the raw build
        file to `uploadUrl` with an HTTP PUT request (request body = the raw
        file bytes, `Content-Type` = the file's MIME type such as
        `application/octet-stream`; no auth header — the URL is presigned), then
        call `create_application_build` with the same `buildToken`.
      operationId: ApplicationBuildUploadUrl
      parameters:
        - name: applicationShortId
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/ApplicationShortId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationBuildUploadUrlRequest'
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationBuildUploadUrlResponse'
components:
  schemas:
    ApplicationShortId:
      type: string
      pattern: ^app(-.+_.+|_.+)$
    ApplicationBuildUploadUrlRequest:
      type: object
      required:
        - fileName
      properties:
        fileName:
          type: string
          description: >-
            Original file name (e.g. 'my-app.apk'). Preserved in storage for
            display and file type detection.
        projectShortId:
          allOf:
            - $ref: '#/components/schemas/ProjectShortId'
          description: >-
            Target a specific project by its prefixed short ID
            (proj-slug_shortId or proj_shortId), as returned by the projects
            API. Required for organization-scoped API keys; project-scoped keys
            may only pass their own project's short ID.
      description: Request body for getting a presigned upload URL
    ApplicationBuildUploadUrlResponse:
      type: object
      required:
        - uploadUrl
        - buildToken
        - nextStep
      properties:
        uploadUrl:
          type: string
          description: >-
            Presigned URL to upload the raw build file to via HTTP PUT (request
            body = raw file bytes, `Content-Type` = the file's MIME type such as
            `application/octet-stream`). No auth header is required.
        buildToken:
          type: string
          description: >-
            Opaque token identifying this upload. Pass it unchanged to
            `create_application_build` once the PUT upload succeeds.
        nextStep:
          type: string
          description: Human-readable hint describing the next step in the upload chain.
      description: >-
        Presigned upload URL response. Upload the file to `uploadUrl`, then call
        `create_application_build` with `buildToken`.
    ProjectShortId:
      type: string
      pattern: ^proj(-.+_.+|_.+)$
  securitySchemes:
    BearerAuth:
      type: http
      scheme: Bearer

````