---
title: "Get revision details"
method: GET
path: "/v2/revisions/{revision}"
tags: ["revisions"]
---

# Get revision details

`GET /v2/revisions/{revision}`

Get revision details.

Revision IDs are globally unique. The response includes `layers`, `env_vars`, and `config` when available.

Status lifecycle (one of):
- queued -> building -> succeeded (success)
- queued -> failed (build error, cancelled, or timeout)
- queued -> skipped (e.g., commit message contains [skip-ci])

The `timelines` field is an eventually consistent view of routing: after a deploy or a domain change it may briefly reflect the previous state (typically for a few seconds at most).

## Path parameters

- `revision` string, required

## Response `200`

OK

- Revision
  - `id` string, required — Unique revision identifier
  - `status` 'skipped' | 'queued' | 'building' | 'succeeded' | 'failed', required — Current revision lifecycle status
  - `failure_reason` 'error' | 'cancelled' | 'timed_out' | 'skipped', nullable, required — Reason for failure, or null if not failed
  - `failure_detail` RevisionFailureDetail, required
    - `stage` string, required — Deployment stage that failed. Currently always "warmup" — the post-build boot check of the deployed application. New stages may be added; clients must tolerate unknown values.
    - `code` string, required — Machine-readable failure code. Currently "boot_failed" (the deployed application failed to start — check the application logs for the startup error) or "internal" (a platform-side failure). New codes may be added; clients must tolerate unknown values.
    - `message` string, required — Human-readable description of the failure
  - `labels` Labels
  - `layers` LayerRef[], required — Layers referenced by this revision, in priority order (later overrides earlier)
    - `id` string, required — Unique layer identifier
    - `slug` string, required — Human-readable layer slug
  - `env_vars` RevisionEnvVar[], required — Revision-specific environment variables (immutable once created)
    - `key` string, required — The environment variable name
    - `value` string, required — The environment variable value
  - `config` ConfigOutput
    - `framework` '' | 'nextjs' | 'astro' | 'nuxt' | 'remix' | 'solidstart' | 'tanstackstart' | 'sveltekit' | 'fresh' | 'lume' — Framework preset used for this build
    - `install` string, nullable — Install command. Null if skipped
    - `build` string, nullable — Build command. Null if skipped
    - `predeploy` string, nullable — Pre-deploy command. Null if skipped
    - `runtime` Runtime
      - `type` 'dynamic' | 'static', required — `dynamic` runs a Deno process; `static` serves pre-built files
      - `entrypoint` string — Main module path. Required when `type` is `dynamic`
      - `args` string[] — Additional CLI arguments passed to the entrypoint
      - `cwd` string — Working directory or static file root. Required when `type` is `static`
      - `spa` boolean — Enable single-page application mode (fallback to index.html). Only for `static` type
    - `crons` boolean — Whether cron jobs are enabled for revisions of the app. When false, revisions that register cron jobs using Deno.cron fail to build. Defaults to true
  - `created_at` string, required — ISO 8601 timestamp of creation
  - `cancellation_requested_at` string, nullable, required — ISO 8601 timestamp when cancellation was requested, or null
  - `build_finished_at` string, nullable, required — ISO 8601 timestamp when the build completed, or null if still building
  - `deleted_at` string, nullable, required — ISO 8601 timestamp of deletion, or null if active
  - `retention` 'auto' | 'indefinite' — Garbage-collection policy for this revision. `auto` follows the normal inactivity-based cleanup; `indefinite` exempts the revision from automatic deletion. Only available to enterprise organizations that have opted in to revision retention — contact Deno support to enable it. Absent for organizations without the feature, which cannot set it. Retention only guards against automatic deletion: explicitly deleting the revision, or deleting its app, always succeeds regardless.
  - `timelines` RevisionTimeline[], required — Timelines this revision is part of, each with the hostnames that currently route to this revision on that timeline
    - `name` string, required — Timeline name — the partition config the revision is deployed under (e.g. "Production", "Preview", "Production (pinned)")
    - `context` string, required — Name of the context (environment variable group) this timeline runs in
    - `hostnames` string[], required — Hostnames on this timeline that currently route to this revision. A hostname only appears while this revision is the one actually serving it: hostnames shadowed by a newer revision under latest-revision-wins routing — including the default production hostname once a newer revision takes over the production timeline — are omitted.

---

[API](https://skmtc.net/deno/apis/deploy.md) · [All operations](https://skmtc.net/deno/apis/deploy/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/deno/deploy/versions/5a56038d108e/schema)
