Usage Guide & Workflows

Authentication

All API requests require an API key passed as a header:

Required Headers:

Authorization: <your-api-key>
X-QCOM-TokenType: apikey

Optional Headers:

X-QCOM-AppName: <Name of your application calling the API>
X-QCOM-ClientType: <Type of client making the API call (Web, CLI, etc)>
X-QCOM-TracingId: <New random UUID per request>

See the Getting Started page for how to generate an API key.

Pagination

Endpoints that return lists support pagination via query parameters:

ParameterDescriptionDefault
pageNumberZero-based page index0
pageSizeNumber of items per pagevaries

Paginated responses include pageNumber, pageSize, and total fields alongside the data array.


Chip Software - Service Requests

Service request APIs provide access to chip software builds, distros, and downloads associated with a service request (service task).

Workflow: Download a Chip Software Build

Use this sequence to navigate from a service request to downloadable software packages.

Step 1 — List builds for a service request

GET /chipSoftware/serviceRequests/{serviceRequestId}/releases

Path parameter:

  • serviceRequestId — integer service request ID (e.g. 214748364)

Optional query parameters:

  • pageNumber — zero-based page number (default 0)
  • pageSize — items per page (default 20)

Builds are ordered most-recent first.

Example response:

{
  "pageNumber": 0,
  "pageSize": 20,
  "total": 5,
  "data": [
    {
      "buildId": "Example.LA.1.0.r1-00760-STD.PROD-1.214748364.2",
      "releaseDate": "2026-06-01T09:00:00.000Z",
      "status": "Published"
    }
  ]
}

Note the buildId string — you'll use it in the following steps.

Step 2 — Get build details (optional)

GET /chipSoftware/serviceRequests/{serviceRequestId}/releases/{buildId}

Use the expand query parameter to include additional sections:

  • availableDiffs — available diff packages per distro
  • releaseMetadata — extra metadata associated with the build

Example with multiple expand values:

GET /chipSoftware/serviceRequests/214748364/releases/Example.LA.1.0.r1-00760-STD.PROD-1.214748364.2
?expand=releaseMetadata,availableDiffs

Example response:

{
  "buildId": "Example.LA.1.0.r1-00760-STD.PROD-1.214748364.2",
  "softwareProduct": "LA",
  "releaseTag": "Example.LA.1.0.r1-00760",
  "releaseDate": "2026-06-01T09:00:00.000Z",
  "distros": [
    {
      "distroId": "fdfb1636-36b3-40d9-8545-a712bb34f001",
      "distroName": "LA.VENDOR.1.0",
      "releaseComposition": {
        "images": [
          { "imageName": "Example.XYZ.2.0", "imageBuildId": "Example.XYZ.2.0-00345" }
        ]
      }
    }
  ]
}

Note the distroId (UUID) for each distro you want to download.

Step 3 — List distros for a build

GET /chipSoftware/serviceRequests/{serviceRequestId}/releases/{buildId}/distros

Returns all published distros associated with the build.

Example response:

[
  {
    "distroId": "fdfb1636-36b3-40d9-8545-a712bb34f001",
    "distroName": "LA.VENDOR.1.0"
  },
  {
    "distroId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "distroName": "LA.AMSS.1.0"
  }
]

Step 4 — Get download URLs

GET /chipSoftware/serviceRequests/{serviceRequestId}/releases/{buildId}/distros/{distroId}

Required query parameters:

  • downloadTypeFull or Diff
  • downloadEntityProduct or Image

Optional query parameters:

  • imageName — required when downloadEntity is Image (e.g. Example.XYZ.2.0)
  • baseBuildId — required when downloadType is Diff; the base build to diff against

Example — full product download:

GET /chipSoftware/serviceRequests/214748364/releases/Example.LA.1.0.r1-00760-STD.PROD-1.214748364.2
/distros/fdfb1636-36b3-40d9-8545-a712bb34f001?downloadType=Full&downloadEntity=Product

Example response (product download):

{
  "downloadEntityType": "Product",
  "buildId": "Example.LA.1.0.r1-00760-STD.PROD-1.214748364.2",
  "distroId": "fdfb1636-36b3-40d9-8545-a712bb34f001",
  "distroName": "LA.VENDOR.1.0",
  "downloadUrl": "https://...",
  "aboutUrl": "https://...",
  "images": [
    {
      "imageName": "Example.XYZ.2.0",
      "imageBuildId": "Example.XYZ.2.0-00345",
      "downloadUrl": "https://..."
    }
  ]
}

Example — diff image download:

GET /chipSoftware/serviceRequests/214748364/releases/Example.LA.1.0.r1-00760-STD.PROD-1.214748364.2
/distros/fdfb1636-36b3-40d9-8545-a712bb34f001?downloadType=Diff&downloadEntity=Image
&imageName=Example.XYZ.2.0&baseBuildId=Example.LA.1.0.r1-00760-STD.PROD-1.214748364.1

Example response (image download):

{
  "downloadEntityType": "Image",
  "buildId": "Example.LA.1.0.r1-00760-STD.PROD-1.214748364.2",
  "distroId": "fdfb1636-36b3-40d9-8545-a712bb34f001",
  "distroName": "LA.VENDOR.1.0",
  "baseBuildId": "Example.LA.1.0.r1-00760-STD.PROD-1.214748364.1",
  "imageName": "Example.XYZ.2.0",
  "imageBuildId": "Example.XYZ.2.0-00345",
  "downloadUrl": "https://..."
}

Workflow: Manage Change Requests on a Service Request

View CRs on a service request

GET /chipSoftware/serviceRequests/{serviceRequestId}/changeRequests

Example response:

{
  "spBuildCrDetails": [
    {
      "productBuild": "Example.LA.1.0.r1-00200-STD.PROD-1",
      "changeRequestDetails": [
        {
          "changeRequestId": 12345,
          "area": "WLAN",
          "problemDescription": "..."
        }
      ]
    }
  ]
}

Add CRs to a service request

POST /chipSoftware/serviceRequests/{serviceRequestId}/changeRequests

Maximum 30 CRs per request.

Request body:

{
  "changeRequestIds": [12345, 67890]
}

Example response:

{
  "changeRequests": [
    { "changeRequestId": 12345, "message": "Change request add in progress", "error": null },
    { "changeRequestId": 67890, "message": "Change request add in progress", "error": null }
  ]
}

Check each item's error field — a non-null value means that CR could not be added.


Chip Software - Standard Requests

Standard requests are used to onboard one or more change requests into the next official software release.

Workflow: Submit and Track a Standard Request

Step 1 — Create a standard request

POST /chipSoftware/standardRequests

Request body:

{
  "softwareProduct": "QCS9100.LE.2.0",
  "softwareProductFamily": "QCS9100",
  "changeRequests": [12345, 67890],
  "comments": "Required for upcoming release milestone"
}

Fields:

  • softwareProduct — (required) name of the software product the CRs belong to
  • changeRequests — (required) list of CR numbers to onboard; maximum 20
  • softwareProductFamily — (optional) software product family name
  • comments — (optional) free-text notes to include with the submission

On success the API returns 201 Created with a Location header pointing to the new resource, and a response body containing the created standard request:

Example response:

{
  "standardRequestId": 152301,
  "softwareProduct": "QCS9100.LE.2.0",
  "softwareProductFamily": "QCS9100",
  "requester": "jsmith",
  "requestedDate": "2026-08-26T10:00:00.000Z",
  "status": "Submitted",
  "changeRequests": [
    {
      "changeRequestNumber": 12345,
      "changeRequestTitle": "Fix audio glitch on call start",
      "status": "Pending Review",
      "estimatedDeliveryDate": null,
      "deliveredDate": null
    },
    {
      "changeRequestNumber": 67890,
      "changeRequestTitle": "WLAN TX queue buffer fix",
      "status": "Pending Review",
      "estimatedDeliveryDate": null,
      "deliveredDate": null
    }
  ]
}

Note the standardRequestId — use it to check status later.

Overall status values:

ValueMeaning
SubmittedRequest was accepted and submitted to PRMTS
FailedSubmission failed

Step 2 — Track per-CR delivery status

GET /chipSoftware/standardRequests/{standardRequestId}

Path parameter:

  • standardRequestId — integer ID from Step 1 (e.g. 152301)

Example response:

{
  "standardRequestId": 152301,
  "softwareProduct": "QCS9100.LE.2.0",
  "requester": "jsmith",
  "requestedDate": "2026-08-26T10:00:00.000Z",
  "status": "Submitted",
  "changeRequests": [
    {
      "changeRequestNumber": 12345,
      "changeRequestTitle": "Fix audio glitch on call start",
      "status": "Accepted",
      "estimatedDeliveryDate": "2026-09-15T00:00:00.000Z",
      "deliveredDate": null
    },
    {
      "changeRequestNumber": 67890,
      "changeRequestTitle": "WLAN TX queue buffer fix",
      "status": "Delivered",
      "estimatedDeliveryDate": "2026-09-10T00:00:00.000Z",
      "deliveredDate": "2026-09-09T14:30:00.000Z"
    }
  ]
}

Per-CR status values:

ValueMeaning
Pending ReviewCR is awaiting review
AcceptedCR has been accepted for delivery
RejectedCR was rejected
DeliveredCR has been delivered into the release
UnknownStatus could not be determined from upstream

Workflow: List Standard Requests

GET /chipSoftware/standardRequests

Optional query parameters:

  • pageNumber, pageSize — pagination (default page 0, page size 20, max 100)
  • sort — repeated parameter in field,direction format. Supported fields: standardRequestId, requestedDate. Example: sort=requestedDate,desc
  • filter — repeated parameter in field=value format. Supported fields: softwareProduct, requester, requestedDate, status. Example: filter=softwareProduct=QCS9100.LE.2.0

Example — filter by product, sorted by most recent:

GET /chipSoftware/standardRequests?filter=softwareProduct=QCS9100.LE.2.0&sort=requestedDate,desc

Example response:

{
  "pageNumber": 0,
  "pageSize": 20,
  "total": 3,
  "data": [
    {
      "standardRequestId": 152301,
      "softwareProduct": "QCS9100.LE.2.0",
      "softwareProductFamily": "QCS9100",
      "requester": "jsmith",
      "requestedDate": "2026-08-26T10:00:00.000Z",
      "status": "Submitted",
      "comments": "Required for upcoming release milestone"
    }
  ]
}

Chip Software - Change Requests

APIs for querying change request information across software builds.

Workflow: Get Delta Change Requests Between Two Builds

Find all CRs introduced between two software builds. This is an asynchronous operation.

Step 1 — Submit the delta CRs request

POST /chipSoftware/changeRequests/delta

Request body:

{
  "softwareItemType": "ProductBuild",
  "oldSoftwareItem": "Example.LA.1.0.r1-00100-STD.PROD-1",
  "newSoftwareItem": "Example.LA.1.0.r1-00200-STD.PROD-1"
}

Fields:

  • softwareItemTypeProductBuild or ImageBuild
  • oldSoftwareItem — the earlier (base) build ID
  • newSoftwareItem — the newer (target) build ID

Example response:

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "InProgress",
  "oldSoftwareItem": "Example.LA.1.0.r1-00100-STD.PROD-1",
  "newSoftwareItem": "Example.LA.1.0.r1-00200-STD.PROD-1"
}

Save the id as your requestId.

Step 2 — Poll for completion

GET /chipSoftware/changeRequests/delta/{requestId}/status

Poll until status is Complete (or Failed). This operation typically takes on the order of minutes; use a polling interval of at least 30 seconds to avoid unnecessary load.

Possible values: InProgress, Complete, Failed, Deleted

Step 3 — Retrieve results

GET /chipSoftware/changeRequests/delta/{requestId}/results

Optional query parameters:

  • pageNumber, pageSize — recommended page size is 500, max is 1000
  • sort — field and order, e.g. sort=changeRequestId,desc

Example response:

{
  "pageNumber": 0,
  "pageSize": 500,
  "total": 42,
  "data": [
    {
      "changeRequestId": 12345,
      "area": "WLAN",
      "subsystem": "Driver",
      "problemDescription": "Connection drops under high load",
      "changeDescription": "Fixed buffer overflow in TX queue"
    }
  ]
}

Workflow: Get Known Issues for a Software Build

Retrieve open CRs for a given software product and release tag. This is an asynchronous operation.

Step 1 — Submit the known issues request

POST /chipSoftware/knownIssues

Request body:

{
  "softwareProductName": "LA",
  "releaseTag": "Example.LA.1.0.r1-00200-STD.PROD-1"
}

Both fields are required.

Example response:

{
  "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
  "status": "InProgress",
  "softwareProduct": "LA",
  "releaseTag": "Example.LA.1.0.r1-00200-STD.PROD-1"
}

Save the id as your requestId.

Step 2 — Poll for completion

GET /chipSoftware/knownIssues/{requestId}/status

Poll until status is Complete. This operation typically takes on the order of minutes; use a polling interval of at least 30 seconds to avoid unnecessary load.

Step 3 — Retrieve results

GET /chipSoftware/knownIssues/{requestId}/results

Optional query parameters:

  • pageNumber, pageSize — recommended page size is 500, max is 1000
  • sort — supported fields: crNumber, fixStatus, softwareImage. Example: sort=fixStatus&sort=crNumber,desc
  • fixStatus — filter by status: Fixed, Not Fixed, Upon Request, Queued, NotApplicable, DefectFound

Example response:

{
  "pageNumber": 0,
  "pageSize": 500,
  "total": 15,
  "data": [
    {
      "changeRequestId": 98765,
      "title": "BT Audio glitch on call start",
      "fixStatus": "Not Fixed",
      "functionalArea": "Bluetooth",
      "problemDescription": "Audio artifact heard when a call starts",
      "isCrash": false
    }
  ]
}

Workflow: Look Up CR Details

Get details for specific CR numbers

POST /chipSoftware/changeRequests/details

Request body — array of integer CR IDs:

[12345, 67890, 11111]

Example response:

{
  "crDetails": [
    {
      "changeRequestId": 12345,
      "area": "WLAN",
      "subSystem": "Driver",
      "functionality": "TX Queue",
      "problemDescription": "Buffer overflow under high load",
      "changeDescription": "Fixed TX queue buffer sizing"
    }
  ]
}

Search for CRs within a software build

Check whether specific CRs are present in a given build.

Step 1 — Submit the search request:

POST /chipSoftware/changeRequests/search

Request body:

{
  "softwareItemType": "ProductBuild",
  "softwareItem": "Example.LA.1.0.r1-00200-STD.PROD-1",
  "changeRequestIds": [12345, 67890]
}
  • softwareItemTypeProductBuild or ImageBuild
  • changeRequestIds — max 20 CR IDs

Example response:

{
  "requestId": "c3d4e5f6-a7b8-9012-cdef-123456789012"
}

Step 2 — Get search results:

GET /chipSoftware/changeRequests/search/{requestId}

Check searchStatus: Pending (still processing) or Complete (results in data).

Example response:

{
  "requestId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
  "softwareItem": "Example.LA.1.0.r1-00200-STD.PROD-1",
  "searchStatus": "Complete",
  "data": [
    {
      "changeRequestId": 12345,
      "crStatus": "Fixed",
      "softwareImageBuild": "Example.XYZ.2.0-00345",
      "integratedSoftwareImageBuildId": "Example.XYZ.2.0-00345"
    }
  ]
}

Tools

Operations related to tools, tool releases, and tool download urls.

Workflow: Download a Tool

Step 1 — List available tools

GET /tools

Optional query parameters:

  • name — filter by tool name
  • pageNumber, pageSize — pagination

Example response:

{
  "pageNumber": 0,
  "pageSize": 20,
  "total": 5,
  "data": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "name": "qpm-cli",
      "displayName": "QPM CLI",
      "bisCvStatusTag": "COMPLIANT",
      "bisCvStatusDescription": "Meets BIS/CV requirements"
    }
  ]
}

Note the tool id (UUID).

Step 2 — Get releases for the tool

GET /tools/{id}/releases

Optional query parameters:

  • targetOperatingSystem — e.g. Windows, Ubuntu, Linux, macOS, LinuxAndroid, QNX7, QNX8
  • targetArchitecture — e.g. x64, x86, ARM64, ARM32, Any
  • branch — release branch name
  • pageNumber, pageSize — pagination

Example response:

{
  "pageNumber": 0,
  "pageSize": 20,
  "total": 3,
  "data": [
    {
      "releaseBranch": "main",
      "releaseDate": "2025-10-01",
      "version": "5.0.0",
      "targetOperatingSystem": "Ubuntu",
      "targetArchitecture": "x64",
      "operatingSystemDistributionType": "Debian"
    }
  ]
}

Note the version and targetOperatingSystem for the release you want.

Step 3 — Get the download URL

GET /tools/{id}/download

Required query parameters:

  • version — version string from Step 2
  • targetOperatingSystem — OS from Step 2

Optional query parameters:

  • targetArchitecture — architecture from Step 2

Example response:

{
  "downloadURL": "https://example.com/tools/qpm-cli-5.0.0-ubuntu-x64.tar.gz?token=..."
}

The downloadURL is a pre-signed URL ready for direct download.

Workflow: Check Tool License

Check license for a given tool feature.

GET /tools/{id}/features/{featureId}/checkLicense

Path parameters:

  • id — tool UUID
  • featureId — feature UUID

Example response:

{
  "entitled": true
}

If entitled is false, you do not have a license for the requested feature.


Error Handling

All endpoints return a consistent error response on 4XX and 5XX status codes:

{
  "traceId": "abc123def456",
  "message": "Resource not found for the given ID"
}
CodeMeaning
400Invalid or missing request parameters
401Missing or invalid Authorization header
403Authenticated but not authorized for this resource
404Requested resource does not exist
500Unexpected server error