- Create a project from prepared media
Materialize existing media, script, captions, and a template without AI creative generation. All scene and media-layer fields shown as required must be supplied, including explicit nulls. Captions use millisecond timestamps; keep original word timings when available. This request does not start export. Use the returned projectId to export, with toEnhance:false when supplied media and captions are already final. Template music settings are inherited; Auto-match music must be resolved before creation. Unknown fields are rejected.
Scoped to the workspace. Reusing the key returns the existing project; it does not update the payload.
Language code, for example en. Unlike prompt creation, this endpoint accepts a string.
Adjacent scene transitions. IDs must refer to scene IDs in the request; durations must fit scene timing. Video bridge URLs must be trusted media URLs. Omit to use the existing/default timeline; an explicit empty transitions array means no transitions.
- Mock serverhttps://api-docs.shuffll.com/_mock/apis/auth/organization/{organizationId}/workspace/{workspaceId}/projects/prepared
- Development integration API (dapi)https://dapi.shuffllmedia.com/api/v1/auth/organization/{organizationId}/workspace/{workspaceId}/projects/prepared
curl -i -X POST \
https://api-docs.shuffll.com/_mock/apis/auth/organization/693fb82afd8d1c43077ba0fb/workspace/693fb82afd8d1c43077ba0fe/projects/prepared \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-d '{
"idempotencyKey": "string",
"templateId": "string",
"name": "string",
"language": "string",
"scenes": [
{
"templateSceneId": "string",
"projectSceneId": "string",
"name": "string",
"script": "string",
"staticText": [
"string"
],
"toUseSubtitles": true,
"isHidden": true,
"dynamicValues": [
{
"id": "string",
"type": "string",
"position": 0,
"value": "string",
"placeholder": "string",
"valueType": "number",
"hierarchy": "text",
"range": [
0,
0
],
"generateByAi": true,
"aiPrompt": "string"
}
],
"stagePositions": [
{
"id": "string",
"position": 0,
"x": 0,
"y": 0,
"width": 0,
"height": 0
}
],
"mediaLayers": [
{
"id": "string",
"url": "http://example.com",
"audioOnlyUrl": "string",
"type": "camera",
"stagePositionId": "string",
"width": 0,
"height": 0,
"durationMs": 1,
"trimStartMs": 0,
"trimEndMs": 0,
"isMaster": true,
"isMuted": true,
"toFlip": true,
"toUseSubtitles": true,
"toGenerateSubtitles": true,
"playbackStrategy": "last_frame_freeze"
}
],
"transcript": {
"language": "en",
"sentences": [
{
"text": "string",
"startMs": 0,
"endMs": 0,
"words": [
{}
]
}
]
}
}
],
"timeline": {
"version": 1,
"transitions": [
{
"id": "string",
"leftSceneId": "string",
"rightSceneId": "string",
"durationMs": 1,
"type": "crossfade"
}
]
},
"integration": {
"webhookConfig": [
{
"url": "http://example.com",
"apiHeaders": {
"name": "string",
"token": "string"
},
"toAddTranscript": true
}
],
"additionalParams": {
"property1": "string",
"property2": "string"
}
}
}'{ "projectId": "string", "status": "ready", "reused": true }