This document explains how to clone an existing project into a new one via the Clone Project API. It covers endpoint details, authentication, request/response formats, cloning behavior, and troubleshooting tips.
Use this endpoint to duplicate a project’s configuration quickly. Control whether configuration fields are copied using the cloneFields query flag.
Endpoint
Method: POST Path: /api/project/{projectId}/clone Query: cloneFields=true|false
Base URL examples:
Local backend: http://localhost:9000
Web app origin (for reference): http://localhost:8080
Authentication
Provide a JWT in the idToken header. Do not share real tokens publicly.
idToken: <JWT>
Content-Type: application/json
Accept: application/json, text/plain, */*
Request
Path and query parameters
Parameter | Location | Type | Description |
|---|---|---|---|
projectId | path | number|string | ID of the source project to clone from. |
cloneFields | query | boolean | If true, copies configuration and workflow from the source project. |
HTTP request example
Minimal headers and body to perform a clone:
curl 'http://localhost:9000/api/project/37/clone?cloneFields=true' \ -H 'Accept: application/json, text/plain, */*' \ -H 'Content-Type: application/json' \ -H 'idToken: <JWT>' \ --data-raw '{ "name": "MyCloneProj", "processName": "MyCloneProcess", "groupId": null, "organization_id": "2", "client": "2", "created_by": "1", "active": true, "execution": "SEQUENTIAL", "projectType": "Annotation", "metaData": { } }'
Request body schema
Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | New project name. |
processName | string | Yes | Process display name for the cloned project. |
groupId | number|null | No | Optional group association for the new project. |
organization_id | string|number | Yes | Owning organization identifier. |
client | string|number | Yes | Client identifier associated with the project. |
created_by | string|number | Yes | User ID of the creator of the cloned project. |
active | boolean | Yes | New project activation state after cloning. |
execution | string (SEQUENTIAL|PARALLEL) | Yes | Execution strategy for the workflow. |
projectType | string (e.g., Annotation) | Yes | Type/category of the project. |
metaData | object | Yes | Additional settings. See breakdown below. |
Cloning behavior
When cloneFields=true, the API copies configuration from the source project; runtime data is not copied.
Area | Cloned with cloneFields=true | Cloned with cloneFields=false |
|---|---|---|
Task Design (inputs/outputs) | Copied | Not copied |
Workflow & Levels | Copied (execution mode preserved) | Defaults only |
Advanced Settings (Project Settings/Fields/Tasks) | Copied | Not copied |
Responses
Success
On success, the API returns the new project payload. Typical status: 201 Created
{"id":"38"}
Change log
Date | Change | Author |
|---|---|---|
Feb 3, 2026 | Initial version of Clone Project API documentation. | [Add API Owner] |
Feb 3, 2026 | Added cloning behavior comparison table and refined request schema. | [Add Tech Writer] |