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

# Get app download status

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

## 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}/status`
- Auth: HTTP bearer

Poll until status is complete or error. A job is visible only to the user it runs as, so pass the same userId the job was started with.

## 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`

Download job status

- AppsDownloadStatusResponse
  - `created_at` string, required: When the job was created (ISO 8601)
  - `error` string: Why the job failed. Present only when status is error.
  - `format` 'link_only' | 'pdf' | 'png' | 'csv' | 'xlsx' | 'json' | 'ai_prompt' | 'ai_summary_text': Output format. Omitted when status is error.
  - `job_id` string: Download job ID. Omitted when status is error.
  - `status` 'in_progress' | 'complete' | 'error', required: in_progress while the app renders, complete once the file can be fetched, error if the job failed

## Other responses

- `400`: jobId is not a UUID
- `401`: Authentication required
- `403`: A personal access token named another user
- `404`: App or download job not found

## 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/status/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)
