---
title: "The project's most recent stored Compose check (from its last deployment or the revalidation after an upgrade); `null` when it was never checked."
method: GET
path: "/projects/{project_id}/compose-validation"
tags: ["Compose"]
---

# The project's most recent stored Compose check (from its last deployment or the revalidation after an upgrade); \`null\` when it was never checked.

`GET /projects/{project_id}/compose-validation`

## Request

- Base URL: `/api` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/api/projects/{project_id}/compose-validation`
- Auth: HTTP bearer

## Path parameters

- `project_id` integer, required

## Response `200`

Last stored check, or null

- ComposeValidationReportResponse: The last stored Compose check for a project.
  - `checked_at` string, date-time, required
  - `error` string, nullable
  - `error_class` 'interpolation' | 'policy_violation' | 'invalid_path' | 'invalid_yaml' | 'invalid_override' | 'unsupported_compose_version' | 'config_resolution' | 'compose_unavailable' | 'internal': Stable, user-facing class of a Compose check failure. The deploy job, the preview and the check action all report the same class for the same input.
  - `outdated` boolean, required: True when the check ran under an older validation revision than this server's and has not been repeated yet.
  - `passed` boolean, required
  - `project_id` integer, required

## Other responses

- `401`: Unauthorized
- `403`: Insufficient permissions
- `500`: Internal server error

## Changes

> 81 revisions in range; 1 not diffed.

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

[Operation history](https://skmtc.dev/gotempsh/apis/temps/changes/projects/:project_id/compose-validation/get.md)

---

[API](https://skmtc.dev/gotempsh/apis/temps.md) · [All operations](https://skmtc.dev/gotempsh/apis/temps/llms.txt) · [OpenAPI document](https://skmtc.dev/gotempsh/apis/temps/revisions/ab6d5d19e930?raw)
