---
title: "Get portable archive export status"
method: GET
path: "/projects/v1/{project_id}/archives/{archive_id}"
tags: ["Project Archives"]
---

# Get portable archive export status

`GET /projects/v1/{project_id}/archives/{archive_id}`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/projects/v1/{project_id}/archives/{archive_id}`
- Auth: one of:
  - API key in header `SIGN-IN-WITH-X`
  - HTTP bearer
  - HTTP bearer

Read archive export status. Authorization is checked on every read; unauthorized callers receive 403 without an existence oracle. For ready archives, this refreshes the short-lived `download_authorized_until` window and returns `download_url`.

## Path parameters

- `project_id` string, required: Run402 project ID. Public IDs are not UUIDs.
- `archive_id` string, required

## Response `200`

Archive status.

- ProjectArchive
  - `archive_id` string, required
  - `operation_id` string, required: Same value as archive_id in v1; archive generation is always operation-backed.
  - `project_id` string, required: Run402 project ID. Public IDs are not UUIDs.
  - `status` 'running' | 'ready' | 'failed' | 'expired', required
  - `format_version` 'run402-project-archive.v1', required
  - `scope` 'portable-runtime-v1', required
  - `auth_export` 'none' | 'stubs', required
  - `consistency_mode` 'cloud_write_pause_v1', required
  - `active_release_id` string, nullable, required
  - `consistency` object, required
  - `export_report` ArchiveExportReport, required
    - `schema_version` string
    - `export_scope` string
    - `auth_export` 'none' | 'stubs'
    - `consistency` string
    - `omitted_sensitive_resource_count` integer
    - `unsupported_resource_count` integer
    - `counts` object
    - `bytes` object
  - `portability_report` ArchivePortabilityReport, required
    - `schema_version` string
    - `summary` object
    - `entries` ArchiveDiagnostic[], required
      - `code` string, required
      - `severity` 'info' | 'warning' | 'blocking', required
      - `resource_type` string, required
      - `resource_id` string
      - `path` string
      - `message` string, required
      - `next_action` ArchiveNextAction, required
        - `type` 'run_command' | 'set_secret' | 'change_export_scope' | 'remove_unsupported_feature' | 'retry_later' | 'contact_support' | 'read_docs' | 'none', required
        - `command` string
        - `env_var` string
        - `docs_url` string, uri
        - `message` string
      - `retryable` boolean, required
      - `context` object: Safe structured context. Must not contain secret values or provider internals.
  - `error` object, nullable, required
  - `byte_count` integer, nullable, required
  - `sha256` string, nullable, required: Hex SHA-256 digest of the downloadable archive tar bytes.
  - `content_type` string, nullable, required
  - `download_url` string, nullable, required
  - `download_authorized_until` string, date-time, nullable, required: Short-lived download authorization timestamp. GET status refreshes it for ready archives.
  - `expires_at` string, date-time, required: Archive retention expiration timestamp, 24 hours after creation in v1.
  - `started_at` string, date-time, required
  - `completed_at` string, date-time, nullable, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `next_action` ArchiveNextAction, required
    - `type` 'run_command' | 'set_secret' | 'change_export_scope' | 'remove_unsupported_feature' | 'retry_later' | 'contact_support' | 'read_docs' | 'none', required
    - `command` string
    - `env_var` string
    - `docs_url` string, uri
    - `message` string

## Other responses

- `403`: Error envelope
- `404`: Error envelope

---

[API](https://skmtc.dev/run402/apis/run402-api.md) · [All operations](https://skmtc.dev/run402/apis/run402-api/llms.txt) · [OpenAPI document](https://skmtc.dev/run402/apis/run402-api/revisions/893607557f50?raw)
