---
title: "Get deployment"
method: GET
path: "/deployments/{id}"
---

# Get deployment

`GET /deployments/{id}`

## Request

- Base URL: `https://api.eurobase.dev`
- URL: `https://api.eurobase.dev/deployments/{id}`
- Auth: none declared

Returns one deployment including raw status plus API-owned machine displayStatus, browser statusView, freshness metadata, and an optional sanitized failureSummary derived from deployment events.

## Response `200`

Deployment details

- DeploymentResponse
  - `deployment` Deployment, required
    - `id` string, required
    - `projectId` string, required
    - `version` integer, required
    - `deploymentMode` 'runtime' | 'static', required
    - `runtime` 'workers' | 'container' | 'static', required: Where this deployment runs: a Worker, a container, or static files.
    - `runtimeWorkersReason` string, nullable, required: Why a Workers route of this deployment runs as a container instead, as short display copy of the build Job detection reason; null otherwise or when the reason has no display copy.
    - `primaryHostname` string, nullable: The deployment's project's official address today (see ProjectSummary.primaryHostname).
    - `provider` 'scaleway' | 'null', nullable: Owner/admin deployment detail proof only; list and contributor surfaces omit this field.
    - `imageRef` string, nullable: Owner/admin deployment detail proof only; list and contributor surfaces omit this field.
    - `rollbackTargetImageRef` string, nullable: Owner/admin deployment detail rollback proof only; list and contributor surfaces omit this field.
    - `status` 'queued' | 'building' | 'deploying' | 'healthy' | 'unhealthy' | 'failed' | 'rolled_back', required
    - `displayStatus` 'queued' | 'waiting_for_builder' | 'building_image' | 'waiting_for_deploy_runner' | 'deploying' | 'healthy' | 'unhealthy' | 'failed' | 'rolled_back' | 'status_check_delayed', required
    - `releaseKind` 'runtime_release' | 'static_release' | 'deployment_attempt', required
    - `statusView` DeploymentStatusView, required
      - `code` 'queued' | 'waiting_for_builder' | 'building_image' | 'waiting_for_deploy_runner' | 'deploying' | 'healthy' | 'unhealthy' | 'failed' | 'rolled_back' | 'status_check_delayed', required
      - `primaryCode` 'queued' | 'waiting_for_builder' | 'building_image' | 'waiting_for_deploy_runner' | 'deploying' | 'healthy' | 'unhealthy' | 'failed' | 'rolled_back', required
      - `primaryLabel` string, required
      - `secondaryLabel` string, nullable, required
      - `tone` 'neutral' | 'active' | 'success' | 'warning' | 'danger', required
      - `freshnessLabel` 'Live' | 'Refreshing' | 'Status delayed' | 'null', nullable, required
    - `terminal` boolean, required
    - `visible` boolean, required
    - `stale` boolean, required
    - `freshness` 'fresh' | 'reconciling' | 'stale', required
    - `lastObservedAt` string, date-time, required
    - `lastProvenExecutionPhase` 'queued' | 'waiting_for_builder' | 'building_image' | 'waiting_for_deploy_runner' | 'deploying' | 'null', nullable, required
    - `displayStatusReasonCode` 'none' | 'builder_capacity_wait_exceeded' | 'build_output_delayed' | 'deploy_runner_wait_exceeded' | 'deploy_execution_delayed' | 'projection_evidence_conflict', required
    - `statusReason` string, nullable
    - `failureSummary` DeploymentFailureSummary
      - `category` 'clone_failed' | 'build_failed' | 'image_push_failed' | 'deploy_failed' | 'healthcheck_failed' | 'runtime_startup_failed' | 'runtime_startup_timeout' | 'app_health_failed' | 'route_activation_failed' | 'platform_capacity_failed' | 'invalid_runtime_config' | 'internal_platform_error', required
      - `phase` 'queue' | 'build' | 'deploy' | 'healthcheck' | 'system', required
      - `severity` 'info' | 'warning' | 'error', required
      - `headline` string, required
      - `detail` string, nullable: One short line: the typed failure reason in owner copy, never the raw reason code.
      - `explanation` string, nullable: The full failure sentence shown in the status popover, when it says more than detail.
      - `fixCommand` string, nullable: The command named in explanation that fixes the failure, offered for copying.
      - `observedAt` string, date-time, required
    - `artifactType` 'static_archive' | 'null', nullable
    - `artifactRef` string, nullable: Internal static artifact object key is withheld from member-readable responses; member clients must use deployableOutput.
    - `artifactSha256` string, nullable
    - `publishTarget` string, nullable: Internal static publish prefix is withheld from member-readable responses; member clients must use deployableOutput.
    - `detailRevision` string: Changes only when lifecycle, immutable output or preview detail is invalidated.
    - `deployableOutput` object, required
      - `kind` 'runtime_image' | 'static_artifact' | 'app_release' | 'none', required
      - `digest` string, nullable, required
      - `displayLabel` string, required
      - `releaseId` string, nullable
      - `deploymentId` string, nullable, required
    - `actionAvailability` object, required
      - `canPromote` boolean, required
      - `canRollback` boolean, required
      - `canRebuild` boolean, required
      - `rebuildBlockedReason` 'deployment-not-terminal' | 'source-snapshot-unavailable' | 'repository-access-unavailable' | 'route-convergence-in-progress' | 'source-build-engine-retired' | 'null', nullable, required
      - `rebuildRecoveryAction` DeploymentRebuildRecoveryAction, required
        - `kind` 'oauth' | 'refresh' | 'install' | 'manage' | 'review' | 'disabled', required
        - `label` string, required
        - `href` string, nullable, required
        - `disabled` boolean, required
        - `reason` string, nullable, required
      - `rebuildDescriptor` object, nullable, required
        - `repository` string, required
        - `branch` string, required
        - `commitSha` string, required
        - `domain` string, required: The project's official address the redeploy serves: its linked domain once one serves it, otherwise its eurobase.dev host
      - `compatibleOutputKind` 'runtime_image' | 'static_artifact' | 'app_release' | 'none', required
      - `blockedReason` string, nullable, required
      - `targetDeploymentId` string, nullable, required
    - `assetType` 'app' | 'container' | 'null', nullable
    - `assetId` string, nullable
    - `canonicalContainerDetailPath` string, nullable
    - `previewCaptureStatus` 'pending' | 'ready' | 'failed' | 'null', nullable
    - `previewCapturedAt` string, date-time, nullable
    - `previewImageUrl` string, uri-reference, nullable: Same-origin API-owned authenticated preview image route path. Container deployment previews are exposed only on the selected project container detail screen model; generic deployment detail and container list rows keep this null. Missing preview storage read capability also returns null instead of failing the parent screen model.
    - `previewRefreshGeneration` integer, nullable
    - `previewRefreshStatus` 'pending' | 'failed' | 'null', nullable
    - `previewRefreshRequestedAt` string, date-time, nullable
    - `previewRefreshFailedAt` string, date-time, nullable
    - `previewRefreshError` string, nullable
    - `routeConvergence` object, nullable
      - `state` 'recovering' | 'exhausted' | 'ready', required
      - `statusLabel` string, required
      - `pollRecommended` boolean, required
    - `providerMetadata` DeploymentProviderMetadata
      - `visibility` string, nullable
      - `supersededByDeploymentId` string, nullable
      - `customDomainStatus` string, nullable
      - `resolution` string, nullable
    - `lifecycle` DeploymentLifecycle
      - `source` 'api_projection', required
      - `phases` DeploymentLifecyclePhase[], required
        - `key` 'initialize' | 'build' | 'deploy' | 'verify', required
        - `label` 'Initialize' | 'Build' | 'Deploy' | 'Verify', required
        - `status` 'pending' | 'running' | 'recovering' | 'completed' | 'failed' | 'skipped' | 'unavailable', required
        - `startedAt` string, date-time, nullable, required
        - `endedAt` string, date-time, nullable, required
        - `durationMs` integer, nullable, required
        - `detailLabel` string, nullable, required
        - `skipReason` 'image-only' | 'null', nullable, required
    - `timingEvidence` DeploymentTimingEvidence
      - `version` 'deployment-timing-evidence-v2' | 'deployment-timing-evidence-v3', required
      - `complete` boolean, required
      - `outcome` 'healthy' | 'rolled_back' | 'failed' | 'unhealthy' | 'null', nullable, required
      - `totalMs` integer, nullable, required
      - `userTotalMs` integer, nullable, required
      - `builderTimingsVersion` 'railpack-phase-timings-v1' | 'railpack-phase-timings-v2' | 'railpack-phase-timings-v3' | 'source-build-phase-timings-v1' | 'null', nullable, required
      - `builderTimingsMs` object, nullable, required
      - `publicMarkerProof` object, nullable, required
        - `deploymentId` string, required
        - `acceptedDigest` string, required
        - `sourceFingerprint` string, required
        - `requestIdSha256` string, required
        - `apiObservedAt` string, date-time, required
      - `triggerReceivedAt` string, date-time, nullable, required
      - `requestedAt` string, date-time, nullable, required
      - `buildDispatchAt` string, date-time, nullable, required
      - `builderReadyAt` string, date-time, nullable, required
      - `callbackReceivedAt` string, date-time, nullable, required
      - `callbackAcceptedAt` string, date-time, nullable, required
      - `deployDispatchAt` string, date-time, nullable, required
      - `deployWorkerClaimedAt` string, date-time, nullable, required
      - `deployRunnerStartedAt` string, date-time, nullable, required
      - `deployRunnerReadyAt` string, date-time, nullable, required
      - `providerRequestStartedAt` string, date-time, nullable, required
      - `providerReadyAt` string, date-time, nullable, required
      - `brandedRouteProvedAt` string, date-time, nullable, required
      - `activatedAt` string, date-time, nullable, required
      - `terminalAt` string, date-time, nullable, required
      - `warmRunnerTimingsMs` object, nullable, required
        - `dispatchToWorkerClaimMs` integer, nullable, required
        - `workerClaimToRunnerStartMs` integer, nullable, required
        - `runnerStartToProviderRequestMs` integer, nullable, required
        - `providerRequestToReadyMs` integer, nullable, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `project` ProjectSummary, required
    - `id` string, required
    - `name` string, nullable
    - `organizationId` string, nullable
    - `projectMembershipId` string, nullable
    - `projectRole` 'owner' | 'admin' | 'contributor' | 'null', nullable
    - `projectSlug` string, nullable
    - `projectHostname` string, nullable
    - `primaryHostname` string, nullable: Official address of the project: its active custom domain whose DNS points at Eurobase, the one that went live first when several do, otherwise projectHostname. projectHostname stays reserved and keeps serving.
    - `deploymentMode` 'runtime' | 'static', required
    - `lifecycleState` string, nullable
    - `deleteRequestedAt` string, date-time, nullable
    - `projectRoute` ProjectRoute, required
      - `status` 'healthy' | 'repairing' | 'degraded' | 'broken' | 'unknown', required
      - `reasonCode` 'none' | 'dns_record_missing' | 'dns_propagating' | 'domain_binding_missing' | 'tls_pending' | 'missing_project_upstream' | 'upstream_unreachable' | 'ingress_unreachable' | 'unmanaged_custom_domain' | 'scw_mutation_failed', required
      - `checkedAt` string, date-time, nullable
      - `lastRepairAt` string, date-time, nullable
      - `lastError` string, nullable
      - `managed` boolean, required
      - `convergenceState` 'recovering' | 'exhausted' | 'ready' | 'null', nullable
      - `upstream` ProjectUpstreamState, required
        - `status` 'healthy' | 'broken' | 'unknown', required
        - `reasonCode` 'none' | 'missing_project_upstream' | 'upstream_unreachable', required
        - `checkedAt` string, date-time, nullable
        - `lastError` string, nullable
    - `releaseUsability` ReleaseUsability, required
      - `status` 'reachable' | 'degraded' | 'blocked' | 'unknown', required
      - `reasonCode` 'none' | 'missing_live_release' | 'access_not_allowed' | 'route_repair_in_progress' | 'route_incident' | 'project_suspended', required
      - `lastLiveDeploymentId` string, nullable, required
    - `projectSummaryStatus` ProjectSummaryStatus
      - `label` string, required
      - `tone` 'neutral' | 'problem' | 'error', required
      - `code` 'setup_required' | 'route_issue' | 'deploy_failed' | 'deploy_unhealthy' | 'live_release_blocked' | 'status_check_delayed' | 'deploy_in_progress' | 'rollback_live' | 'healthy' | 'suspended', required
      - `detailTitle` string, nullable, required
      - `detail` string, nullable, required
    - `servingSuspension` ProjectServingSuspension: An operator suspension of the project's public serving (ADR 0080). Operator notes and evidence are never included.
      - `state` 'suspended', required
      - `reasonCategory` 'phishing' | 'malware' | 'shared_domain_abuse' | 'spam' | 'illegal_content' | 'legal_order' | 'other_policy_violation', required
      - `reasonLabel` string, required
      - `since` string, date-time, nullable, required
      - `supportEmail` string, required
      - `policyUrl` string, required
    - `sourceProfile` ProjectSourceProfileSummary, required
      - `framework` 'next' | 'astro' | 'svelte-kit' | 'nuxt' | 'react-router' | 'vite' | 'hono' | 'nestjs' | 'fastify' | 'express' | 'django' | 'fastapi' | 'flask' | 'laravel' | 'rails' | 'node' | 'python' | 'php' | 'ruby' | 'go' | 'java' | 'dotnet' | 'static', required
      - `frameworkLabel` string, required
      - `outputMode` 'runtime' | 'static', required
    - `sourceLock` ProjectSourceLock: ADR 0090: while locked, no caller can change the project repository, branch, root directory or deployment mode.
      - `locked` boolean, required
      - `lockedAt` string, date-time, nullable, required
  - `projectRoute` ProjectRoute, required
    - `status` 'healthy' | 'repairing' | 'degraded' | 'broken' | 'unknown', required
    - `reasonCode` 'none' | 'dns_record_missing' | 'dns_propagating' | 'domain_binding_missing' | 'tls_pending' | 'missing_project_upstream' | 'upstream_unreachable' | 'ingress_unreachable' | 'unmanaged_custom_domain' | 'scw_mutation_failed', required
    - `checkedAt` string, date-time, nullable
    - `lastRepairAt` string, date-time, nullable
    - `lastError` string, nullable
    - `managed` boolean, required
    - `convergenceState` 'recovering' | 'exhausted' | 'ready' | 'null', nullable
    - `upstream` ProjectUpstreamState, required
      - `status` 'healthy' | 'broken' | 'unknown', required
      - `reasonCode` 'none' | 'missing_project_upstream' | 'upstream_unreachable', required
      - `checkedAt` string, date-time, nullable
      - `lastError` string, nullable
  - `releaseUsability` ReleaseUsability, required
    - `status` 'reachable' | 'degraded' | 'blocked' | 'unknown', required
    - `reasonCode` 'none' | 'missing_live_release' | 'access_not_allowed' | 'route_repair_in_progress' | 'route_incident' | 'project_suspended', required
    - `lastLiveDeploymentId` string, nullable, required
  - `sourceDeploy` ProjectSourceDeploy
    - `available` boolean, required
    - `reasonCode` 'ready' | 'project_repository_missing' | 'historical_repo_unavailable', required
    - `title` string, nullable
    - `message` string, nullable
    - `recoveryAction` GitHubConnectAction
      - `kind` 'none' | 'oauth' | 'refresh' | 'install' | 'manage' | 'review' | 'disabled', required
      - `label` string, required
      - `href` string, nullable
      - `disabled` boolean
      - `reason` string, nullable
  - `actionPermissions` object, required
    - `canManageSource` boolean, required

---

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