{
  "info": {
    "_postman_id": "af8f9ac4-bf39-4bf0-a083-6f71a7e45a54",
    "name": "Revid Public API v3 - Master Collection",
    "description": "**Interactive docs with a parameter explorer: https://www.revid.ai/docs**\n\nRevid MCP for AI agents is available at `POST {{baseUrl}}/api/mcp`. Authenticate with `Authorization: Bearer {{apiKey}}`, `x-revid-api-key`, `x-api-key`, or `key`. Guide: https://www.revid.ai/mcp\n\nMaster collection for `POST /api/public/v3/render` with one request per workflow plus curated recipes. Open `Field Definitions (v3)` for a condensed parameter reference.\n\nHighly recommended workflow:\n- Configure your video on https://www.revid.ai/create\n- Click `Get API code`\n- Use that exact JSON payload in this API\n\nRelated docs:\n- Interactive docs: https://www.revid.ai/docs\n- Live JSON docs: `GET {{baseUrl}}/api/public/v3/render`\n- OpenAPI spec: `{{baseUrl}}/postman/revid-public-v3-render.openapi.json`\n- Revid MCP guide: https://www.revid.ai/mcp\n- Legacy V2 API: https://documenter.getpostman.com/view/36975521/2sA3kPo4BR",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://www.revid.ai"
    },
    {
      "key": "apiKey",
      "value": "YOUR_REVID_API_KEY"
    },
    {
      "key": "webhookUrl",
      "value": "https://your-server.com/revid/webhook"
    },
    {
      "key": "spotifyTrackUrl",
      "value": "https://open.spotify.com/track/5Cp75TUMrHF6c8xbhdligS?si=215888ce8b784bc9"
    },
    {
      "key": "sourceUrl",
      "value": "https://cdn.revid.ai/uploads/1771944925512-video.mp4"
    },
    {
      "key": "audioToVideoSourceUrl",
      "value": "https://www.youtube.com/watch?v=ip30oRP9BP0"
    },
    {
      "key": "avatarUrl",
      "value": "https://cdn.revid.ai/ai-gen/chSmd-WtE.jpg"
    },
    {
      "key": "backgroundVideoUrl",
      "value": "https://cdn.revid.ai/backgrounds/minecraft/color-upscaled.mp4"
    },
    {
      "key": "productImageUrl",
      "value": "https://cdn.revid.ai/uploads/1771944959344-image.png"
    },
    {
      "key": "projectId",
      "value": "REPLACE_WITH_PROJECT_ID"
    },
    {
      "key": "videoUrl",
      "value": "https://cdn.revid.ai/uploads/your-video.mp4"
    },
    {
      "key": "channelName",
      "value": "Main Channel"
    },
    {
      "key": "characterId",
      "value": "REPLACE_WITH_CHARACTER_ID"
    }
  ],
  "item": [
    {
      "name": "Get v3 Master Docs",
      "description": "Live machine-readable docs for the v3 API. No auth required.",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "Get v3 OpenAPI Spec",
      "description": "OpenAPI 3.1 spec with per-workflow request schemas. Import it anywhere.",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{baseUrl}}/postman/revid-public-v3-render.openapi.json"
      },
      "response": []
    },
    {
      "name": "Field Definitions (v3)",
      "description": "Condensed field reference for humans and AI agents.",
      "request": {
        "method": "GET",
        "header": [],
        "description": "## Revid v3 Field Definitions (Condensed)\n\nCanonical shape:\n```json\n{\n  \"webhookUrl\": \"https://your-webhook.com/revid\",\n  \"workflow\": \"script-to-video\",\n  \"source\": {},\n  \"media\": {},\n  \"voice\": {},\n  \"captions\": {},\n  \"music\": {},\n  \"avatar\": {},\n  \"options\": {},\n  \"render\": {},\n  \"advanced\": {\n    \"customCreationParams\": {}\n  }\n}\n```\n\nWorkflow requirements:\n- `script-to-video`: source.text (alias: voiceover-to-video)\n- `prompt-to-video`: source.prompt\n- `audio-to-video`: source.url\n- `music-to-video`: source.url\n- `article-to-video`: source.url\n- `avatar-to-video`: source.text + avatar.url\n- `static-background-video`: source.text or source.url\n- `motion-transfer`: source.url + media.provided[] with 1 image (the target character)\n- `caption-video`: source.url\n- `ad-generator`: source.prompt or media.provided[]\n\nCore enums:\n- `aspectRatio`: `9:16`, `16:9`, `1:1`, `auto`\n- `source.recordingType`: `video`, `audio`\n- `media.type`: `moving-image`, `ai-video`, `stock-video`, `custom`\n- `media.quality`: `standard`, `pro`, `ultra`\n- `media.imageModel`: `cheap`, `good`, `ultra`\n- `media.videoModel`: `base`, `pro`, `ultra`, `veo3`, `sora2`\n- `media.density`: `low`, `medium`, `high`\n- `media.animation`: `none`, `soft`, `dynamic`, `depth`\n- `captions.position`: `top`, `middle`, `bottom`\n- `music.syncWith`: `beats`, `lyrics`\n- `options.summarizationPreference`: `summarize`, `summarizeIfLong`, `no-summarization`\n- `render.resolution`: `720p`, `1080p`, `4k`\n\nKey rules:\n- `media.animation` applies only when `media.type` is `moving-image`.\n- `media.quality` picks image/video models; explicit `media.imageModel`/`media.videoModel` override it.\n- `media.type = custom` requires at least one `media.provided[]` item.\n- For `audio-to-video`, `options.useWholeAudio` defaults to `true`.\n- URLs must be public http(s). `music.audioUrl` is reachability-checked.\n- Invalid enum/range returns `400` with a field-specific error message.\n\nBackward compatibility aliases:\n- webhook (alias of webhookUrl)\n- pid (alias of projectId)\n- ratio (alias of aspectRatio)\n- inputText / prompt / input (legacy aliases of source.text / source.prompt)\n- inputMedias (legacy alias of media.provided)\n- audio.* (legacy alias of music.*)\n- selectedCharacters (alias of characterIds)\n- media.generationPreset / options.generationPreset (legacy aliases of media.mediaPreset)\n- options.durationSeconds / options.stylePrompt (legacy aliases of source.durationSeconds / source.stylePrompt)\n- options.generateMusic / options.generationMusicPrompt (legacy aliases of music.generateMusic / music.generationMusicPrompt)\n- options.targetDuration acts as options.promptTargetDuration in prompt workflows\n- voiceover-to-video (alias of the script-to-video workflow)\n- media.type \"video\" (alias of \"ai-video\")\n\nFull reference: https://www.revid.ai/docs — machine-readable spec: https://www.revid.ai/postman/revid-public-v3-render.openapi.json",
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Script To Video",
      "description": "Turn a written script into a voiced, captioned video with AI visuals.\n\nRequires: source.text.\n\n`voiceover-to-video` is an accepted alias for this workflow.\n\nsource.text can also be a URL to an X/Twitter or LinkedIn post: the post content becomes the script.\n\nUse media.type = stock-video for real stock footage instead of AI visuals.\n\nUse media.type = custom with media.provided[] to use only your own images/videos.\n\nFull guide: https://www.revid.ai/docs/workflows/script-to-video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"script-to-video\",\n  \"source\": {\n    \"text\": \"this is my video text\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"quality\": \"pro\",\n    \"density\": \"high\",\n    \"animation\": \"soft\"\n  },\n  \"voice\": {\n    \"enabled\": true,\n    \"voiceId\": \"cgSgspJ2msm6clMCkdW9\",\n    \"stability\": 0.2,\n    \"speed\": 1\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"preset\": \"Wrap 1\",\n    \"position\": \"bottom\"\n  },\n  \"music\": {\n    \"trackName\": \"Observer\"\n  },\n  \"render\": {\n    \"resolution\": \"1080p\",\n    \"compression\": 18,\n    \"frameRate\": 30\n  },\n  \"aspectRatio\": \"9:16\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Prompt To Video",
      "description": "Describe the video you want; the AI writes the script and generates everything.\n\nRequires: source.prompt.\n\nTune length with options.promptTargetDuration (seconds, or \"auto\" to let the AI decide).\n\nsource.stylePrompt steers the visual style; source.durationSeconds hints the script length.\n\nPass characterIds to feature your saved consistent characters.\n\nAdd a reference image in media.provided[] to guide the visual generation.\n\nSet advanced.customCreationParams.fetchNews = true to ground the script in recent news.\n\nFull guide: https://www.revid.ai/docs/workflows/prompt-to-video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"prompt-to-video\",\n  \"source\": {\n    \"prompt\": \"this is my prompt\",\n    \"stylePrompt\": \"dark mood\",\n    \"durationSeconds\": 40\n  },\n  \"media\": {\n    \"type\": \"ai-video\",\n    \"quality\": \"ultra\",\n    \"density\": \"high\"\n  },\n  \"options\": {\n    \"promptTargetDuration\": 30\n  },\n  \"characterIds\": [\n    \"ac873ae7-aec1-4261-b8ef-bbd85547652e\"\n  ]\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Audio To Video",
      "description": "Turn a podcast, voice note, or any audio/video URL into an illustrated video.\n\nRequires: source.url.\n\nThe source audio is kept as the voice track; voice generation is not used.\n\noptions.useWholeAudio defaults to true. Set it to false to extract highlight segments instead.\n\nYouTube links are supported as source.url.\n\nFull guide: https://www.revid.ai/docs/workflows/audio-to-video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"audio-to-video\",\n  \"source\": {\n    \"url\": \"https://www.youtube.com/watch?v=ip30oRP9BP0\"\n  },\n  \"media\": {\n    \"type\": \"ai-video\",\n    \"density\": \"medium\",\n    \"imageModel\": \"good\",\n    \"videoModel\": \"ultra\",\n    \"mediaPreset\": \"DEFAULT\",\n    \"bRollType\": \"split-screen\"\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"preset\": \"Wrap 1\",\n    \"position\": \"bottom\",\n    \"autoCrop\": true\n  },\n  \"options\": {\n    \"useWholeAudio\": true,\n    \"hasToTranscript\": true,\n    \"disableAudio\": true\n  },\n  \"aspectRatio\": \"16:9\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Music To Video",
      "description": "Generate a music video synced to a track (upload, YouTube, or Spotify link).\n\nRequires: source.url.\n\nThe source track is the audio; the music block controls sync (music.syncWith) and visuals (music.soundWave).\n\nsource.prompt is an optional creative brief for the visual storyline.\n\nmusic.enableLyricsLipSync + music.lipSyncFrequency animate characters singing the lyrics.\n\nFull guide: https://www.revid.ai/docs/workflows/music-to-video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"music-to-video\",\n  \"source\": {\n    \"url\": \"https://www.youtube.com/watch?v=ip30oRP9BP0\",\n    \"prompt\": \"A neon noir chase through rainy streets that becomes a rooftop performance by the final chorus.\",\n    \"recordingType\": \"video\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"imageModel\": \"good\",\n    \"videoModel\": \"ultra\",\n    \"provided\": [\n      {\n        \"url\": \"https://cdn.revid.ai/uploads/music-video-reference.jpg\",\n        \"type\": \"image\",\n        \"title\": \"Reference for the neon rooftop look\"\n      }\n    ]\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"preset\": \"Wrap 1\",\n    \"position\": \"bottom\"\n  },\n  \"music\": {\n    \"soundWave\": true,\n    \"syncWith\": \"lyrics\"\n  },\n  \"aspectRatio\": \"16:9\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Article To Video",
      "description": "Summarize any web page or article into a narrated short video.\n\nRequires: source.url.\n\nControl summarization with options.summarizationPreference and length with options.targetDuration.\n\nsource.scrapingPrompt gives custom instructions for extracting content from the page.\n\nFull guide: https://www.revid.ai/docs/workflows/article-to-video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"article-to-video\",\n  \"source\": {\n    \"url\": \"https://open.spotify.com/track/5Cp75TUMrHF6c8xbhdligS\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"quality\": \"ultra\"\n  },\n  \"options\": {\n    \"summarizationPreference\": \"summarize\",\n    \"targetDuration\": 30\n  },\n  \"metadata\": {\n    \"urlType\": \"spotify\",\n    \"duration\": 194\n  }\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Avatar To Video",
      "description": "A talking avatar (from a photo or video) reads your script, with optional B-roll.\n\nRequires: source.text + avatar.url.\n\navatar.url accepts an image (png/jpg/webp) or a video; mimeType is inferred from the extension when omitted.\n\nmedia.bRollType (split-screen, fullscreen) mixes generated B-roll with the avatar.\n\nmedia.placeAvatarInContext = true places the avatar inside the generated scenes.\n\nFull guide: https://www.revid.ai/docs/workflows/avatar-to-video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"avatar-to-video\",\n  \"source\": {\n    \"text\": \"this is my text\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"bRollType\": \"split-screen\",\n    \"placeAvatarInContext\": true\n  },\n  \"avatar\": {\n    \"enabled\": true,\n    \"url\": \"https://cdn.revid.ai/ai-gen/chSmd-WtE.jpg\",\n    \"mimeType\": \"image/jpeg\"\n  }\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Static BG Video",
      "description": "Voiced captions over a looping background (gameplay, satisfying clips, ...).\n\nRequires: source.text or source.url.\n\nSet the loop with media.backgroundVideo ({ type: \"video\", url, ... }). Without it, Revid falls back to default backgrounds.\n\nbackgroundVideo.noReencode = true skips re-encoding for known-good mp4 sources (faster renders).\n\nFull guide: https://www.revid.ai/docs/workflows/static-background-video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"static-background-video\",\n  \"source\": {\n    \"text\": \"this is my text\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"backgroundVideo\": {\n      \"type\": \"video\",\n      \"url\": \"https://cdn.revid.ai/backgrounds/minecraft/color-upscaled.mp4\",\n      \"urlLowRes\": \"https://cdn.revid.ai/backgrounds/minecraft/color_low.mp4\",\n      \"imagePreview\": \"https://cdn.revid.ai/backgrounds/minecraft/color_poster.webp\",\n      \"noReencode\": true\n    }\n  }\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Motion Transfer",
      "description": "Transfer the motion of a source video onto a character image (face swap style).\n\nRequires: source.url + media.provided[] with 1 image (the target character).\n\nmedia.provided[] must contain the target character image. The server does not reject a missing image upfront, but generation fails without it.\n\nmetadata.duration (seconds of the source video) speeds up processing.\n\nFull guide: https://www.revid.ai/docs/workflows/motion-transfer",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"motion-transfer\",\n  \"source\": {\n    \"url\": \"https://cdn.revid.ai/uploads/1772035872439-video.mp4\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"density\": \"medium\",\n    \"animation\": \"dynamic\",\n    \"imageModel\": \"good\",\n    \"videoModel\": \"ultra\",\n    \"mediaPreset\": \"DEFAULT\",\n    \"useOnlyProvided\": true,\n    \"provided\": [\n      {\n        \"url\": \"https://cdn.revid.ai/uploads/1772035882827-image.jpg\",\n        \"type\": \"image\",\n        \"title\": \"\"\n      }\n    ]\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"preset\": \"Wrap 1\",\n    \"position\": \"bottom\"\n  },\n  \"metadata\": {\n    \"duration\": 25.32\n  },\n  \"aspectRatio\": \"9:16\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Caption Video",
      "description": "Add animated captions (and optional B-roll) to an existing video.\n\nRequires: source.url.\n\ncaptions.autoCrop = true reframes the video for vertical formats (face tracking).\n\nPDF URLs are also accepted as source.url: each page becomes a narrated section.\n\nmetadata.duration (seconds) speeds up processing.\n\nFull guide: https://www.revid.ai/docs/workflows/caption-video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"caption-video\",\n  \"source\": {\n    \"url\": \"https://cdn.revid.ai/uploads/1771944925512-video.mp4\",\n    \"recordingType\": \"video\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"bRollType\": \"split-screen\"\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"autoCrop\": true\n  },\n  \"metadata\": {\n    \"duration\": 8.04\n  }\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from AI Ad Generator",
      "description": "Generate a product ad from a prompt and/or product images.\n\nRequires: source.prompt or media.provided[].\n\nProvide product images in media.provided[]: the generation reuses them as visual anchors.\n\nTune length with options.promptTargetDuration (seconds or \"auto\").\n\nFull guide: https://www.revid.ai/docs/workflows/ad-generator",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"ad-generator\",\n  \"source\": {\n    \"prompt\": \"my ad prompt\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"quality\": \"ultra\",\n    \"useOnlyProvided\": true,\n    \"provided\": [\n      {\n        \"url\": \"https://cdn.revid.ai/uploads/1771944959344-image.png\",\n        \"type\": \"image\",\n        \"title\": \"\"\n      }\n    ]\n  },\n  \"options\": {\n    \"promptTargetDuration\": 30\n  }\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Script with Custom Media",
      "description": "Voiced script where each provided image illustrates the matching script section, no AI media picking.",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"script-to-video\",\n  \"source\": {\n    \"text\": \"this is a test\"\n  },\n  \"media\": {\n    \"type\": \"custom\",\n    \"density\": \"medium\",\n    \"imageModel\": \"cheap\",\n    \"videoModel\": \"base\",\n    \"useOnlyProvided\": true,\n    \"useProvidedInOrder\": true,\n    \"turnImagesIntoVideos\": true,\n    \"provided\": [\n      {\n        \"url\": \"https://cdn.revid.ai/ai-gen/TAINdpjKn.jpg\",\n        \"title\": \"An abstract, beautiful shot of three distinct beams of light merging into a single radiant golden source.\",\n        \"type\": \"image\"\n      },\n      {\n        \"url\": \"https://cdn.revid.ai/ai-gen/OZxUbirp4.jpg\",\n        \"title\": \"Three women appear as silhouettes in front of a giant glowing sun in a dark indigo sky.\",\n        \"type\": \"image\"\n      },\n      {\n        \"url\": \"https://cdn.revid.ai/ai-gen/xA1PjFVGorg.jpg\",\n        \"title\": \"A woman with a sleek black bob stands in a neon-lit glass hallway with rain outside.\",\n        \"type\": \"image\"\n      }\n    ]\n  },\n  \"voice\": {\n    \"enabled\": true,\n    \"voiceId\": \"nPczCjzI2devNBz1zQrb\",\n    \"speed\": 1\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"position\": \"bottom\"\n  },\n  \"aspectRatio\": \"9:16\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Prompt with Reference Image",
      "description": "AI video guided by an input image used as a visual reference, with the ANIME preset.",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"prompt-to-video\",\n  \"source\": {\n    \"prompt\": \"this is an example\",\n    \"durationSeconds\": 40\n  },\n  \"media\": {\n    \"type\": \"ai-video\",\n    \"imageModel\": \"ultra\",\n    \"videoModel\": \"ultra\",\n    \"mediaPreset\": \"ANIME\",\n    \"addAudioToVideos\": true,\n    \"provided\": [\n      {\n        \"url\": \"https://cdn.revid.ai/uploads/1777872884798-image.png\",\n        \"title\": \"\",\n        \"type\": \"image\"\n      }\n    ]\n  },\n  \"voice\": {\n    \"enabled\": true,\n    \"voiceId\": \"nPczCjzI2devNBz1zQrb\",\n    \"stability\": 0.2,\n    \"speed\": 1\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"preset\": \"Ali\",\n    \"position\": \"bottom\"\n  },\n  \"options\": {\n    \"promptTargetDuration\": 30\n  },\n  \"aspectRatio\": \"9:16\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from with Stock Video",
      "description": "Voiced script illustrated with real stock videos instead of AI-generated media.",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"script-to-video\",\n  \"source\": {\n    \"text\": \"this is my video text\"\n  },\n  \"media\": {\n    \"type\": \"stock-video\",\n    \"density\": \"high\"\n  },\n  \"voice\": {\n    \"enabled\": true,\n    \"voiceId\": \"cgSgspJ2msm6clMCkdW9\",\n    \"stability\": 0.2,\n    \"speed\": 1\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"preset\": \"Wrap 1\",\n    \"position\": \"bottom\"\n  },\n  \"music\": {\n    \"trackName\": \"Observer\"\n  }\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from X/Linkedin To Video",
      "description": "Pass a post URL as source.text: the post content becomes the script.",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"script-to-video\",\n  \"source\": {\n    \"text\": \"https://x.com/tibo_maker/status/1848647301998284964\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"density\": \"medium\",\n    \"animation\": \"dynamic\",\n    \"imageModel\": \"good\",\n    \"videoModel\": \"ultra\"\n  },\n  \"voice\": {\n    \"enabled\": true,\n    \"voiceId\": \"cgSgspJ2msm6clMCkdW9\",\n    \"speed\": 1\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"preset\": \"Wrap 1\",\n    \"position\": \"bottom\"\n  },\n  \"options\": {\n    \"summarizationPreference\": \"summarize\"\n  },\n  \"aspectRatio\": \"9:16\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from Video Quiz",
      "description": "Quiz video driven by quizzData passed through advanced.customCreationParams.",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"script-to-video\",\n  \"source\": {\n    \"text\": \"https://x.com/tibo_maker/status/1848647301998284964\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"density\": \"medium\",\n    \"animation\": \"dynamic\"\n  },\n  \"voice\": {\n    \"enabled\": true,\n    \"voiceId\": \"cgSgspJ2msm6clMCkdW9\",\n    \"speed\": 1\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"preset\": \"Wrap 1\",\n    \"position\": \"bottom\"\n  },\n  \"advanced\": {\n    \"customCreationParams\": {\n      \"quizzData\": {\n        \"title\": \"France\",\n        \"questions\": [\n          {\n            \"id\": \"82e14b8f-07ce-4489-9c35-6d9c10872b4e\",\n            \"question\": \"What is France\",\n            \"answers\": [\n              {\n                \"id\": \"a62c6e91-da4b-491a-8f36-ba67caa5838a\",\n                \"answer\": \"a country\",\n                \"isCorrect\": true\n              },\n              {\n                \"id\": \"10c89812-22f8-47df-88ef-f11e318fdb1c\",\n                \"answer\": \"a city\",\n                \"isCorrect\": false\n              }\n            ]\n          }\n        ]\n      }\n    }\n  },\n  \"aspectRatio\": \"9:16\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from PDF to Video",
      "description": "Turn a PDF (carousel, report) into a narrated video, one section per page.",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"caption-video\",\n  \"source\": {\n    \"url\": \"https://cdn.revid.ai/uploads/1772035824673-application.pdf\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"density\": \"medium\",\n    \"animation\": \"dynamic\",\n    \"imageModel\": \"cheap\",\n    \"videoModel\": \"base\"\n  },\n  \"voice\": {\n    \"enabled\": true,\n    \"voiceId\": \"nPczCjzI2devNBz1zQrb\",\n    \"speed\": 1\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"position\": \"bottom\"\n  },\n  \"aspectRatio\": \"9:16\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "from News to video",
      "description": "Script grounded in recent news fetched for the prompt topic.",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"webhookUrl\": \"{{webhookUrl}}\",\n  \"workflow\": \"prompt-to-video\",\n  \"source\": {\n    \"prompt\": \"news about France\",\n    \"durationSeconds\": 40\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"density\": \"medium\",\n    \"animation\": \"dynamic\",\n    \"imageModel\": \"good\",\n    \"videoModel\": \"ultra\"\n  },\n  \"voice\": {\n    \"enabled\": true,\n    \"voiceId\": \"cgSgspJ2msm6clMCkdW9\",\n    \"speed\": 1\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"preset\": \"Wrap 1\",\n    \"position\": \"bottom\"\n  },\n  \"options\": {\n    \"promptTargetDuration\": 30,\n    \"fetchNews\": true\n  },\n  \"advanced\": {\n    \"customCreationParams\": {\n      \"promptCustomRules\": \"Use recent factual sources and structure as a professional news report.\"\n    }\n  },\n  \"aspectRatio\": \"9:16\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/render"
      },
      "response": []
    },
    {
      "name": "Get Account Info",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": "{{baseUrl}}/api/public/v3/me",
        "description": "Account, credits, subscription, and workspace info for the API key.\n\n**Response:** { success, email, totalCredits, user, workspace, credits: { regular, nonExpiring, total }, subscription, usage }."
      },
      "response": []
    },
    {
      "name": "Get Projects",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": "{{baseUrl}}/api/public/v3/projects?limit=10",
        "description": "List projects owned by the API key's workspace.\n\n### Query parameters\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `limit` | integer | No |  | Maximum number of projects to return. |\n\n**Response:** Array of projects with ids, names, statuses, and output URLs."
      },
      "response": []
    },
    {
      "name": "Get Video Status",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": "{{baseUrl}}/api/public/v3/status?pid={{projectId}}",
        "description": "Poll the status of a project created by POST /render.\n\n### Query parameters\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `pid` | string | Yes |  | Project id returned by POST /render. |\n\n**Response:** Project status (building/rendering/ready/error), progress, and the output video URL when ready."
      },
      "response": []
    },
    {
      "name": "Estimate Credits",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"workflow\": \"script-to-video\",\n  \"source\": {\n    \"text\": \"this is a test\"\n  },\n  \"media\": {\n    \"type\": \"moving-image\",\n    \"quality\": \"pro\",\n    \"density\": \"high\",\n    \"animation\": \"soft\"\n  },\n  \"voice\": {\n    \"enabled\": true,\n    \"voiceId\": \"cgSgspJ2msm6clMCkdW9\"\n  },\n  \"captions\": {\n    \"enabled\": true,\n    \"preset\": \"Wrap 1\",\n    \"position\": \"bottom\"\n  }\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/calculate-credits",
        "description": "Estimate the credit cost of a render without starting it. Accepts the exact same body as POST /render (legacy { creationParams } also accepted). No auth required.\n\n**Response:** Estimated credit breakdown for the given payload."
      },
      "response": []
    },
    {
      "name": "Add To Queue",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"videoUrl\": \"{{videoUrl}}\",\n  \"channelName\": \"{{channelName}}\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/add-to-queue",
        "description": "Add a rendered video to your publishing queue; it is scheduled at the next available slot of the channel.\n\n### Request body\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `videoUrl` | string | Yes |  | Public URL of the rendered video to publish. |\n| `channelName` | string | either channelName/channelId or at least one platform account |  | Name of a channel configured in your Revid account settings. Mutually exclusive with platform accounts. |\n| `channelId` | string | No |  | Channel id, alternative to channelName. |\n| `tiktok` | object | No |  | TikTok target: { username or id, title?, privacy_level? }. privacy_level: PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR, MUTUAL_FOLLOW_FRIENDS, SELF_ONLY. |\n| `youtube` | object | No |  | YouTube target: { username or id, title?, description? }. |\n| `instagram` | object | No |  | Instagram target: { username or id, caption? }. |\n| `webhook` | object | No |  | Webhook target: { username or id }. Posts the video to your configured webhook. |\n| `extraParams` | object | No |  | Extra fields stored on the scheduled content (title, description, ...). |\n\n**Response:** Scheduled content entry with the computed publish time."
      },
      "response": []
    },
    {
      "name": "Publish Now",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"videoUrl\": \"{{videoUrl}}\",\n  \"channelName\": \"{{channelName}}\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/publish-now",
        "description": "Publish a rendered video right now to a channel or specific platform accounts.\n\n### Request body\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `videoUrl` | string | Yes |  | Public URL of the rendered video to publish. |\n| `channelName` | string | either channelName/channelId or at least one platform account |  | Name of a channel configured in your Revid account settings. Mutually exclusive with platform accounts. |\n| `channelId` | string | No |  | Channel id, alternative to channelName. |\n| `tiktok` | object | No |  | TikTok target: { username or id, title?, privacy_level? }. privacy_level: PUBLIC_TO_EVERYONE, FOLLOWER_OF_CREATOR, MUTUAL_FOLLOW_FRIENDS, SELF_ONLY. |\n| `youtube` | object | No |  | YouTube target: { username or id, title?, description? }. |\n| `instagram` | object | No |  | Instagram target: { username or id, caption? }. |\n| `webhook` | object | No |  | Webhook target: { username or id }. Posts the video to your configured webhook. |\n| `extraParams` | object | No |  | Extra fields stored on the scheduled content (title, description, ...). |\n\n**Response:** Publish result per platform."
      },
      "response": []
    },
    {
      "name": "Export Project",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"pid\": \"{{projectId}}\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/export-video",
        "description": "Render an mp4 export of an existing project.\n\n**Cost:** 10 credits.\n\n### Request body\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `pid` | string | Yes |  | Project id to export. Must belong to the API key user. |\n\n**Response:** Export result with the video file URL."
      },
      "response": []
    },
    {
      "name": "Rename Project",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"pid\": \"{{projectId}}\",\n  \"name\": \"My New Project Name\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/rename-project",
        "description": "Rename a project owned by the API key user.\n\n### Request body\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `pid` | string | Yes |  | Project id. |\n| `name` | string | Yes |  | New project name. |\n\n**Response:** { success: 1 } on success."
      },
      "response": []
    },
    {
      "name": "Get All Consistent Characters",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": "{{baseUrl}}/api/public/v3/consistent-characters",
        "description": "List saved consistent characters (avatar-based and LoRA-trained), newest first.\n\n**Response:** Array of { id, name, description, imageUrl, contentType, source: avatar|lora, createdAt }."
      },
      "response": []
    },
    {
      "name": "Create Consistent Character",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"Sarah\",\n  \"description\": \"A friendly teacher who explains complex topics simply\",\n  \"imageUrl\": \"{{avatarUrl}}\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/consistent-characters",
        "description": "Save a consistent character usable in renders (characterIds) and as a talking avatar.\n\n### Request body\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `name` | string | Yes |  | Character name (min 3 characters). |\n| `description` | string | Yes |  | Character description (min 10 characters) — used by the AI to decide when/how to use the character. |\n| `imageUrl` | string | Yes |  | Public URL of the character image. |\n\n**Response:** Created character with its id."
      },
      "response": []
    },
    {
      "name": "Delete Consistent Character",
      "request": {
        "method": "DELETE",
        "header": [
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "url": "{{baseUrl}}/api/public/v3/consistent-characters?id={{characterId}}",
        "description": "Delete a character by id (works for avatar-based and LoRA characters).\n\n### Query parameters\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `id` | string | Yes |  | Character id (also accepted in the body). |\n\n**Response:** { success, deleted: id, source: avatar|lora }."
      },
      "response": []
    },
    {
      "name": "Clone Voice",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"My Cloned Voice\",\n  \"description\": \"A friendly voice for tutorials\",\n  \"voiceUrl\": \"https://cdn.revid.ai/uploads/sample-voice.mp3\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/voice-clone",
        "description": "Clone a custom voice from a public audio sample. Requires the Elite plan or above (10 voices on Elite, 100 on Enterprise).\n\n### Request body\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `name` | string | Yes |  | Voice name (min 3 characters). |\n| `description` | string | No |  | Voice description. |\n| `voiceUrl` | string | Yes |  | Public URL of the audio sample (mp3, wav, ...). |\n\n**Response:** { success, voiceId, voice } — use voiceId as voice.voiceId in renders."
      },
      "response": []
    },
    {
      "name": "Generate Media",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"mediaType\": \"image\",\n  \"prompt\": \"a sunrise over snowy alps, cinematic\",\n  \"ratio\": \"9:16\",\n  \"imageQuality\": \"good\",\n  \"count\": 1\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/generate-media",
        "description": "Generate images or video clips without creating a video project (same engine as the Revid media generator).\n\n### Request body\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `mediaType` | string | No | `image`, `video` | What to generate. |\n| `prompt` | string | yes, unless mediaType = video with firstFrame |  | Generation prompt. Aliases: source.prompt, input. |\n| `ratio` | string | No |  | Aspect ratio: 1:1, 9:16, 16:9 (aliases square/portrait/landscape). Alias: aspectRatio. |\n| `imageQuality` | string | No | `cheap`, `good`, `ultra` | Image model: cheap, good, ultra. Alias: media.imageModel. |\n| `videoQuality` | string | No | `base`, `pro`, `ultra`, `veo3`, `sora2` | Video model: base, pro, ultra, veo3, sora2. Alias: media.videoModel. |\n| `count` | integer | No |  | Number of images (videos: always 1). Aliases: imageCount, options.outputCount. |\n| `duration` | integer | No |  | Video duration in seconds (video only). |\n| `generationPreset` | string | No |  | Visual style preset slug (same list as media.mediaPreset). |\n| `firstFrame` | string | No |  | URL of the first frame to animate from (video only). |\n| `lastFrame` | string | No |  | URL of the last frame to animate to (video only). |\n| `referenceImages` | string[] | No |  | Reference image URLs (max 4 for images, 9 for videos). |\n| `referenceVideos` | string[] | No |  | Reference video URLs (max 3). |\n| `referenceAudios` | string[] | No |  | Reference audio URLs (max 3). |\n| `enableAudio` | boolean | No |  | Generate ambient audio with the video clip. |\n| `selectedCharacters` | string[] | No |  | Consistent character ids to feature (max 12). Alias: characterIds. |\n| `improvePrompt` | boolean | No |  | Let the AI rewrite/improve the prompt before generation. |\n| `withTranscript` | boolean | No |  | Return a transcript with the generated media. |\n| `voiceId` | string | No |  | Voice id when generating media with speech. |\n\n**Response:** { success, mediaType, generationOptions, ...generation result with media URLs }."
      },
      "response": []
    },
    {
      "name": "Buy Credit Pack",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json",
            "type": "text"
          },
          {
            "key": "key",
            "value": "{{apiKey}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"source\": \"auto_topup\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": "{{baseUrl}}/api/public/v3/buy-credit-pack",
        "description": "Charge the saved payment method for a credit pack. Used for automated top-up flows.\n\n### Request body\n| Field | Type | Required | Allowed | Description |\n|---|---|---|---|---|\n| `source` | string | Yes | `auto_topup` | Must be \"auto_topup\". |\n\n**Response:** Invoice metadata for the purchase."
      },
      "response": []
    }
  ]
}
