---
title: "Commit Application Revision"
method: POST
path: "/applications/revisions/commit"
tags: ["Applications"]
---

# Commit Application Revision

`POST /applications/revisions/commit`

Commit a new revision on a variant.

The new revision becomes the variant's tip and is assigned the next
`version` number. Revisions are immutable once committed; to change
configuration, commit a new revision.
See [Versioning](/reference/api-guide/versioning#committing-a-revision).

## Request body

- ApplicationRevisionCommitRequest — Request body for committing a new revision on a variant. The commit becomes the variant's new tip. Revisions are immutable once committed; to change behavior, commit another revision. See [Versioning](/reference/api-guide/versioning#committing-a-revision).
  - `application_revision` ApplicationRevisionCommit, required
    - `application_variant_id` string, uuid, nullable
    - `workflow_variant_id` string, uuid, nullable
    - `application_id` string, uuid, nullable
    - `workflow_id` string, uuid, nullable
    - `variant_id` string, uuid, nullable
    - `artifact_id` string, uuid, nullable
    - `flags` ApplicationFlags — Legacy full application flag set.
      - `is_application` boolean
      - `is_evaluator` boolean
      - `is_snippet` boolean
      - `is_managed` boolean
      - `is_custom` boolean
      - `is_llm` boolean
      - `is_hook` boolean
      - `is_code` boolean
      - `is_match` boolean
      - `is_feedback` boolean
      - `is_agent` boolean
      - `is_skill` boolean
      - `is_chat` boolean
      - `has_url` boolean
      - `has_script` boolean
      - `has_handler` boolean
      - `is_static` boolean
    - `tags` object, nullable
    - `meta` object, nullable
    - `name` string, nullable
    - `description` string, nullable
    - `slug` string, nullable
    - `data` ApplicationRevisionDataInput
      - `uri` string, nullable
      - `url` string, nullable
      - `headers` object, nullable
      - `runtime` 'python' | 'typescript' | 'javascript', nullable
      - `script` string, nullable
      - `schemas` JsonSchemasInput
        - `parameters` object, nullable
        - `inputs` object, nullable
        - `outputs` object, nullable
      - `parameters` object, nullable
    - `message` string, nullable
    - `revision_id` string, uuid, nullable
    - `delta` WorkflowRevisionDelta — Delta operations on a workflow revision's data tree. Two forms, never mixed (contract 3): - **legacy** — ``set``: a partial data tree deep-merged onto the base revision's data (nested dicts merge; scalars and lists replace); ``remove``: dotted key paths to delete (e.g. ``parameters.agent.tools``). - **ordered** — ``operations``: the seven verbs, applied in array order, all or nothing. The engine enforces the exclusivity and every operation rule; this model only carries the shapes. Unknown keys beside ``set``/``remove``/``operations`` are refused on the ORDERED arm only, so a caller cannot believe it sent an operation modifier the server never saw. A pure-legacy envelope keeps its shipped tolerance: the server has always ignored stray keys there, and playbooks in the field send them. Neither rule reaches the tree inside ``set``, which stays free-form.
      - `set` object, nullable
      - `remove` string[], nullable
      - `operations` WorkflowRevisionOperation[], nullable
        - `operation` 'set' | 'merge' | 'remove' | 'edit_text' | 'add_item' | 'replace_item' | 'remove_item', required
        - `target` unknown[], required
          - unknown
        - `value` unknown
        - `edits` object[], nullable
        - `match_mode` 'auto' | 'exact', nullable
    - `base_revision_id` string, uuid, nullable — The revision this change was built on. Omit it to keep today's last-write-wins behavior. Send it on a legacy delta and the commit is refused with `409` when the variant's head has moved since: sending the field is how a caller asks for that check. An ordered delta requires it.

## Response `200`

Successful Response

- ApplicationRevisionResponse — Single-revision response envelope.
  - `count` integer — `1` when a revision was found, `0` otherwise.
  - `application_revision` ApplicationRevisionOutput
    - `application_variant_slug` string, nullable
    - `workflow_variant_slug` string, nullable
    - `application_slug` string, nullable
    - `workflow_slug` string, nullable
    - `application_variant_id` string, uuid, nullable
    - `workflow_variant_id` string, uuid, nullable
    - `application_id` string, uuid, nullable
    - `workflow_id` string, uuid, nullable
    - `variant_slug` string, nullable
    - `artifact_slug` string, nullable
    - `variant_id` string, uuid, nullable
    - `artifact_id` string, uuid, nullable
    - `author` string, uuid, nullable
    - `date` string, date-time, nullable
    - `message` string, nullable
    - `flags` ApplicationRevisionFlags
      - `is_application` boolean
      - `is_evaluator` boolean
      - `is_snippet` boolean
      - `is_managed` boolean
      - `is_custom` boolean
      - `is_llm` boolean
      - `is_hook` boolean
      - `is_code` boolean
      - `is_match` boolean
      - `is_feedback` boolean
      - `is_agent` boolean
      - `is_skill` boolean
      - `is_chat` boolean
      - `has_url` boolean
      - `has_script` boolean
      - `has_handler` boolean
      - `is_static` boolean
    - `tags` object, nullable
    - `meta` object, nullable
    - `name` string, nullable
    - `description` string, nullable
    - `created_at` string, date-time, nullable
    - `updated_at` string, date-time, nullable
    - `deleted_at` string, date-time, nullable
    - `created_by_id` string, uuid, nullable
    - `updated_by_id` string, uuid, nullable
    - `deleted_by_id` string, uuid, nullable
    - `version` string, nullable
    - `slug` string, nullable
    - `id` string, uuid, nullable
    - `data` ApplicationRevisionDataOutput
      - `uri` string, nullable
      - `url` string, nullable
      - `headers` object, nullable
      - `runtime` 'python' | 'typescript' | 'javascript', nullable
      - `script` string, nullable
      - `schemas` JsonSchemasOutput
        - `parameters` object, nullable
        - `inputs` object, nullable
        - `outputs` object, nullable
      - `parameters` object, nullable
  - `resolution_info` ResolutionInfo
    - `references_used` object[], required
    - `depth_reached` integer, required
    - `embeds_resolved` integer, required
    - `errors` string[]
  - `retrieval_info` RetrievalInfo — References actually used to retrieve a revision. For direct retrievals, `references` carries the artifact / variant / revision that was fetched. For environment-backed retrievals, it additionally carries the environment + environment_variant + environment_revision used to look the target up, and `selector` is {the key: path} map inside the environment's references map that selected the target.
    - `references` object
    - `selector` object, nullable

## Other responses

- `422` — Validation Error

## Changes

> 359 revisions in range; 46 could not be searched.

- **2025-06-27** `e3e84db47198` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/agenta-ai/apis/agenta-api/changes/applications/revisions/commit/post.md)

---

[API](https://skmtc.dev/agenta-ai/apis/agenta-api.md) · [All operations](https://skmtc.dev/agenta-ai/apis/agenta-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/agenta-ai/agenta-api/revisions/713e4f3b7519/schema)
