---
title: "Fork Application Variant"
method: POST
path: "/applications/variants/fork"
tags: ["Applications"]
---

# Fork Application Variant

`POST /applications/variants/fork`

Fork an existing variant into a new variant on the same application.

Use this to experiment without touching the source variant's history.
The fork copies the source variant's revisions up to the specified
revision (or tip) into the new variant, then commits the supplied
`revision` object on top. Both `variant` and `revision` sub-objects
in the request must be present; the server returns `count: 0` when
either is missing. Returns `400 Bad Request` if the fork target is
invalid (for example, the source variant or revision cannot be
located in this application's lineage).

## Query parameters

- `application_variant_id` string, uuid, nullable

## Request body

- ApplicationForkRequest — Request body for forking a variant into a new variant on the same application. The fork copies the revision history up to `application_variant_id` / `application_revision_id`, then commits the `revision` payload on top. Both `variant` and `revision` objects must be provided.
  - `application` ApplicationFork, required
    - `application_revision` ApplicationRevisionFork
      - `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_chat` boolean
        - `has_url` boolean
        - `has_script` boolean
        - `has_handler` 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` RevisionFork
      - `flags` object, nullable
      - `tags` object, nullable
      - `meta` object, nullable
      - `name` string, nullable
      - `description` string, nullable
      - `slug` string, nullable
      - `data` object, nullable
      - `message` string, nullable
    - `application_revision_id` string, uuid, nullable
    - `workflow_revision_id` string, uuid, nullable
    - `application_variant` ApplicationVariantFork
      - `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_chat` boolean
        - `has_url` boolean
        - `has_script` boolean
        - `has_handler` boolean
      - `tags` object, nullable
      - `meta` object, nullable
      - `name` string, nullable
      - `description` string, nullable
      - `slug` string, nullable
    - `variant` VariantFork
      - `flags` object, nullable
      - `tags` object, nullable
      - `meta` object, nullable
      - `name` string, nullable
      - `description` string, nullable
      - `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
    - `workflow_revision` WorkflowRevisionFork
      - `flags` WorkflowRevisionFlags
        - `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_chat` boolean
        - `has_url` boolean
        - `has_script` boolean
        - `has_handler` boolean
      - `tags` object, nullable
      - `meta` object, nullable
      - `name` string, nullable
      - `description` string, nullable
      - `slug` string, nullable
      - `data` WorkflowRevisionDataInput
        - `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
    - `workflow_variant` WorkflowVariantFork
      - `flags` WorkflowVariantFlags
        - `is_application` boolean
        - `is_evaluator` boolean
        - `is_snippet` boolean
      - `tags` object, nullable
      - `meta` object, nullable
      - `name` string, nullable
      - `description` string, nullable
      - `slug` string, nullable
    - `variant_id` string, uuid, nullable
    - `artifact_id` string, uuid, nullable
    - `depth` integer, nullable

## Response `200`

Successful Response

- ApplicationVariantResponse — Single-variant response envelope.
  - `count` integer — `1` when a variant was found, `0` otherwise.
  - `application_variant` ApplicationVariant
    - `application_slug` string, nullable
    - `workflow_slug` string, nullable
    - `application_id` string, uuid, nullable
    - `workflow_id` string, uuid, nullable
    - `artifact_slug` string, nullable
    - `artifact_id` string, uuid, nullable
    - `flags` ApplicationVariantFlags
      - `is_application` boolean
      - `is_evaluator` boolean
      - `is_snippet` 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
    - `slug` string, nullable
    - `id` string, uuid, nullable

## Other responses

- `422` — Validation Error

## Changes

- **2026-05-23** `2040366204e5` — 3 info
  - added the optional property `application_variant/anyOf[subschema #1: ApplicationVariant]/application_slug` to the response with the `200` status
  - added the optional property `application_variant/anyOf[subschema #1: ApplicationVariant]/artifact_slug` to the response with the `200` status
  - added the optional property `application_variant/anyOf[subschema #1: ApplicationVariant]/workflow_slug` to the response with the `200` status
- **2026-05-22** `67e2a3c6952d` — 3 warning
  - removed the optional property `application_variant/anyOf[subschema #1: ApplicationVariant]/application_slug` from the response with the `200` status
  - removed the optional property `application_variant/anyOf[subschema #1: ApplicationVariant]/artifact_slug` from the response with the `200` status
  - removed the optional property `application_variant/anyOf[subschema #1: ApplicationVariant]/workflow_slug` from the response with the `200` status
- **2026-05-22** `ca3686e05842` — 3 info
  - added the optional property `application_variant/anyOf[subschema #1: ApplicationVariant]/application_slug` to the response with the `200` status
  - added the optional property `application_variant/anyOf[subschema #1: ApplicationVariant]/artifact_slug` to the response with the `200` status
  - added the optional property `application_variant/anyOf[subschema #1: ApplicationVariant]/workflow_slug` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/agenta-ai/apis/agenta-api/changes/applications/variants/fork/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/06e03dbce2be/schema)
