---
title: "Ingest a compose YAML document"
method: POST
path: "/projects/{name}"
---

# Ingest a compose YAML document

`POST /projects/{name}`

Upload a compose YAML body so the daemon owns the parsed project
state. Subsequent `up`/`down`/`restart` calls operate against the
ingested document. Idempotent on byte-identical re-uploads (200);
differing content under the same project name yields 409.

Documents containing `include:` directives are rejected — uploaded
compose is evaluated without filesystem context. CHAOS-1426
(Decision #12 follow-up).

## Path parameters

- `name` string, required

## Response `200`

Idempotent re-upload of byte-identical content

- object

## Other responses

- `201` — New project ingested
- `400` — Malformed YAML, includes:-directive present, or empty service map
- `409` — Project name already ingested with different content
- `413` — Body exceeds 1 MiB
- `415` — Content-Type is set but not application/yaml or text/yaml

## Changes

- **2026-05-05** `b89e70bb0b02` — 1 info
  - endpoint added
- **2026-05-01** `86fdcd7a5286` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/full-chaos/apis/container-compose-api/changes/projects/:name/post.md)

---

[API](https://skmtc.dev/full-chaos/apis/container-compose-api.md) · [All operations](https://skmtc.dev/full-chaos/apis/container-compose-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/full-chaos/container-compose-api/revisions/7bf76e7a9941/schema)
