---
title: "Apply a versioned Video Project mutation batch"
method: POST
path: "/video-projects/{id}/mutations"
tags: ["Video Projects"]
---

# Apply a versioned Video Project mutation batch

`POST /video-projects/{id}/mutations`

## Request

- Base URL: `https://app.openpo.st/api/v1`
- URL: `https://app.openpo.st/api/v1/video-projects/{id}/mutations`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `openpost_session`

Disjoint stale changes rebase. Overlapping targets create a named conflict branch.

## Path parameters

- `id` string, required: Video project ID

## Request body

- ApplyVideoProjectMutationInputBody
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `base_revision` integer, required
  - `device_id` string
  - `mutation_id` string, required: Client-generated idempotency key
  - `operations` VideoProjectMutationOperationInput[], nullable, required
    - `kind` 'set' | 'delete', required: Mutation operation
    - `path` string, required: JSON Pointer within the authored document
    - `target` string, required: Stable entity or property conflict target
    - `value` unknown
  - `workspace_id` string, required

## Response `200`

OK

- VideoProjectMutationResponse
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `conflict_id` string
  - `conflict_name` string
  - `outcome` 'applied' | 'conflict', required
  - `overlap_targets` string[], nullable
  - `project` VideoProjectResponse, required
    - `$schema` string, uri: A URL to the JSON Schema for this object.
    - `attention_reason` string
    - `created_at` string, required
    - `created_by_user_id` string, required
    - `document` object, required
    - `head_revision` integer, required
    - `id` string, required
    - `name` string, required
    - `preview_object_key` string
    - `retention_expires_at` string
    - `sync_status` 'pending' | 'uploading' | 'saving' | 'synced' | 'needs_attention', required
    - `trashed_at` string
    - `updated_at` string, required
    - `updated_by_user_id` string, required
    - `workspace_id` string, required
  - `revision` integer, required

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `422`: Unprocessable Entity
- `500`: Internal Server Error

---

[API](https://skmtc.dev/openpo/apis/openpost-api.md) · [All operations](https://skmtc.dev/openpo/apis/openpost-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openpo/apis/openpost-api/revisions/67d3964458a7?raw)
