Usage Guide & Workflows
Authentication
All API requests require an API key passed as a header:
Required Headers:
Authorization: <your-api-key>
X-QCOM-TokenType: apikeyOptional 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:
| Parameter | Description | Default |
|---|---|---|
pageNumber | Zero-based page index | 0 |
pageSize | Number of items per page | varies |
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}/releasesPath parameter:
serviceRequestId— integer service request ID (e.g.214748364)
Optional query parameters:
pageNumber— zero-based page number (default0)pageSize— items per page (default20)
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 distroreleaseMetadata— 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,availableDiffsExample 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}/distrosReturns 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:
downloadType—FullorDiffdownloadEntity—ProductorImage
Optional query parameters:
imageName— required whendownloadEntityisImage(e.g.Example.XYZ.2.0)baseBuildId— required whendownloadTypeisDiff; 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=ProductExample 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.1Example 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}/changeRequestsExample 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}/changeRequestsMaximum 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/standardRequestsRequest 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 tochangeRequests— (required) list of CR numbers to onboard; maximum 20softwareProductFamily— (optional) software product family namecomments— (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:
| Value | Meaning |
|---|---|
Submitted | Request was accepted and submitted to PRMTS |
Failed | Submission 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:
| Value | Meaning |
|---|---|
Pending Review | CR is awaiting review |
Accepted | CR has been accepted for delivery |
Rejected | CR was rejected |
Delivered | CR has been delivered into the release |
Unknown | Status could not be determined from upstream |
Workflow: List Standard Requests
GET /chipSoftware/standardRequestsOptional query parameters:
pageNumber,pageSize— pagination (default page0, page size20, max100)sort— repeated parameter infield,directionformat. Supported fields:standardRequestId,requestedDate. Example:sort=requestedDate,descfilter— repeated parameter infield=valueformat. 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,descExample 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/deltaRequest body:
{
"softwareItemType": "ProductBuild",
"oldSoftwareItem": "Example.LA.1.0.r1-00100-STD.PROD-1",
"newSoftwareItem": "Example.LA.1.0.r1-00200-STD.PROD-1"
}Fields:
softwareItemType—ProductBuildorImageBuildoldSoftwareItem— the earlier (base) build IDnewSoftwareItem— 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}/statusPoll 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}/resultsOptional query parameters:
pageNumber,pageSize— recommended page size is 500, max is 1000sort— 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/knownIssuesRequest 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}/statusPoll 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}/resultsOptional query parameters:
pageNumber,pageSize— recommended page size is 500, max is 1000sort— supported fields:crNumber,fixStatus,softwareImage. Example:sort=fixStatus&sort=crNumber,descfixStatus— 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/detailsRequest 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/searchRequest body:
{
"softwareItemType": "ProductBuild",
"softwareItem": "Example.LA.1.0.r1-00200-STD.PROD-1",
"changeRequestIds": [12345, 67890]
}softwareItemType—ProductBuildorImageBuildchangeRequestIds— 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 /toolsOptional query parameters:
name— filter by tool namepageNumber,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}/releasesOptional query parameters:
targetOperatingSystem— e.g.Windows,Ubuntu,Linux,macOS,LinuxAndroid,QNX7,QNX8targetArchitecture— e.g.x64,x86,ARM64,ARM32,Anybranch— release branch namepageNumber,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}/downloadRequired query parameters:
version— version string from Step 2targetOperatingSystem— 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}/checkLicensePath parameters:
id— tool UUIDfeatureId— 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"
}| Code | Meaning |
|---|---|
| 400 | Invalid or missing request parameters |
| 401 | Missing or invalid Authorization header |
| 403 | Authenticated but not authorized for this resource |
| 404 | Requested resource does not exist |
| 500 | Unexpected server error |