---
title: "Get app download file"
method: GET
path: "/api/v1/apps/{identifier}/download/{jobId}"
tags: ["Apps"]
---

# Get app download file

`GET /api/v1/apps/{identifier}/download/{jobId}`

## Request

- Base URL: `https://omniapp.co` (the document declares no server; this is the origin it was published from)
- URL: `https://omniapp.co/api/v1/apps/{identifier}/download/{jobId}`
- Auth: HTTP bearer

Streams the finished file. Download permission is checked again here, so a user who lost it since the job started is refused.

## Path parameters

- `identifier` string, required: The identifier (short ID or UUID) of a published document that presents as an app.
- `jobId` string, uuid, required: Download job ID returned by the initiate call

## Query parameters

- `userId` string, uuid: Target user ID (for org-scoped API keys)

## Response `200`

The file, streamed

## Other responses

- `202`: Download job still in progress
- `400`: jobId is not a UUID
- `401`: Authentication required
- `403`: Permission denied - apps or app downloads are not enabled, or the user cannot download this app
- `404`: App or download job not found
- `410`: Download job failed
- `500`: Failed to retrieve download artifact

## Changes

- **2026-10-15** `eca5b7536a07`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/omniapp/apis/omni-api/changes/api/v1/apps/:identifier/download/:jobId/get.md)

---

[API](https://skmtc.dev/omniapp/apis/omni-api.md) - [All operations](https://skmtc.dev/omniapp/apis/omni-api/llms.txt) - [OpenAPI document](https://skmtc.dev/omniapp/apis/omni-api/revisions/76b40ebc2292?raw)
