{"success":1,"version":"3.8.0","endpoint":"/api/public/v3/render","method":"POST","description":"Unified and simplified Revid public render endpoint. It accepts a compact payload and maps it to internal creationParams.","authentication":{"headerName":"key","notes":"Use your Revid API key from /account."},"documentation":{"docsUrl":"https://www.revid.ai/docs","llmDocsIndex":"https://www.revid.ai/llm/api/endpoints.md","mcpEndpoint":"/api/mcp","mcpGuideUrl":"https://www.revid.ai/mcp","postmanCollectionUrl":"/postman/revid-public-v3-render.master.postman_collection.json","openApiSpecUrl":"/postman/revid-public-v3-render.openapi.json"},"quickStart":["Interactive docs with a parameter explorer: https://www.revid.ai/docs. AI agents: Revid MCP at POST /api/mcp (guide: https://www.revid.ai/mcp) and markdown docs at https://www.revid.ai/llm/api/.","1) Choose `workflow`.","2) Provide content in `source` (text, prompt, or url).","3) Optionally tune `media`, `voice`, `captions`, `music`, `avatar`, `options`, `render`.","4) Send POST /api/public/v3/render with header `key`.","5) For other public APIs, see `additionalEndpoints` below."],"workflows":[{"workflow":"script-to-video","aliases":["voiceover-to-video"],"summary":"Turn a written script into a voiced, captioned video with AI visuals.","requires":["source.text"],"docs":"https://www.revid.ai/llm/api/script-to-video.md","mapsTo":{"slug":"create-tiktok-video","slugNew":"ai-tiktok-video-generator","flowType":"text-to-video"},"defaults":{"mediaType":"movingImage","hasToGenerateVoice":true,"hasToSearchMedia":true,"hasAvatar":false,"disableAudio":true,"hasToGenerateVideos":true,"useOnlyProvidedMedia":false}},{"workflow":"prompt-to-video","aliases":[],"summary":"Describe the video you want; the AI writes the script and generates everything.","requires":["source.prompt"],"docs":"https://www.revid.ai/llm/api/prompt-to-video.md","mapsTo":{"slug":"prompt-to-video","slugNew":"","flowType":"prompt-to-video"},"defaults":{"mediaType":"aiVideo","hasToGenerateVoice":true,"hasToSearchMedia":true,"hasAvatar":false,"disableAudio":true,"hasToGenerateVideos":true,"useOnlyProvidedMedia":false}},{"workflow":"audio-to-video","aliases":[],"summary":"Turn a podcast, voice note, or any audio/video URL into an illustrated video.","requires":["source.url"],"docs":"https://www.revid.ai/llm/api/audio-to-video.md","mapsTo":{"slug":"audio-to-video","slugNew":"","flowType":"audio-to-video"},"defaults":{"mediaType":"aiVideo","hasToGenerateVoice":false,"hasToSearchMedia":true,"hasAvatar":false,"disableAudio":true,"hasToGenerateVideos":true,"useOnlyProvidedMedia":false}},{"workflow":"music-to-video","aliases":[],"summary":"Generate a music video synced to a track (upload, YouTube, or Spotify link).","requires":["source.url"],"docs":"https://www.revid.ai/llm/api/music-to-video.md","mapsTo":{"slug":"music-to-video","slugNew":"ai-music-video-generator","flowType":"music-to-video"},"defaults":{"mediaType":"movingImage","hasToGenerateVoice":false,"hasToSearchMedia":true,"hasAvatar":false,"disableAudio":true,"hasToGenerateVideos":true,"useOnlyProvidedMedia":false}},{"workflow":"article-to-video","aliases":[],"summary":"Summarize any web page or article into a narrated short video.","requires":["source.url"],"docs":"https://www.revid.ai/llm/api/article-to-video.md","mapsTo":{"slug":"article-to-video","slugNew":"","flowType":"text-to-video"},"defaults":{"mediaType":"movingImage","hasToGenerateVoice":true,"hasToSearchMedia":true,"hasAvatar":false,"disableAudio":true,"hasToGenerateVideos":true,"useOnlyProvidedMedia":false}},{"workflow":"avatar-to-video","aliases":[],"summary":"A talking avatar (from a photo or video) reads your script, with optional B-roll.","requires":["source.text","avatar.url"],"docs":"https://www.revid.ai/llm/api/avatar-to-video.md","mapsTo":{"slug":"create-avatar-video","slugNew":"talking-avatar","flowType":"text-to-video"},"defaults":{"mediaType":"movingImage","hasToGenerateVoice":true,"hasToSearchMedia":true,"hasAvatar":true,"disableAudio":true,"hasToGenerateVideos":true,"useOnlyProvidedMedia":false}},{"workflow":"static-background-video","aliases":[],"summary":"Voiced captions over a looping background (gameplay, satisfying clips, ...).","requires":["source.text or source.url"],"docs":"https://www.revid.ai/llm/api/static-background-video.md","mapsTo":{"slug":"gameplay-background-video","slugNew":"static-background-video","flowType":"text-to-video"},"defaults":{"mediaType":"movingImage","hasToGenerateVoice":true,"hasToSearchMedia":true,"hasAvatar":false,"disableAudio":true,"hasToGenerateVideos":false,"useOnlyProvidedMedia":false}},{"workflow":"motion-transfer","aliases":[],"summary":"Transfer the motion of a source video onto a character image (face swap style).","requires":["source.url","media.provided[] with 1 image (the target character)"],"docs":"https://www.revid.ai/llm/api/motion-transfer.md","mapsTo":{"slug":"video-face-swap","slugNew":"","flowType":"motion-transfer"},"defaults":{"mediaType":"movingImage","hasToGenerateVoice":false,"hasToSearchMedia":false,"hasAvatar":false,"disableAudio":true,"hasToGenerateVideos":false,"useOnlyProvidedMedia":true}},{"workflow":"caption-video","aliases":[],"summary":"Add animated captions (and optional B-roll) to an existing video.","requires":["source.url"],"docs":"https://www.revid.ai/llm/api/caption-video.md","mapsTo":{"slug":"add-caption-to-video","slugNew":"caption-generator","flowType":"file-to-video"},"defaults":{"mediaType":"movingImage","hasToGenerateVoice":false,"hasToSearchMedia":false,"hasAvatar":false,"disableAudio":true,"hasToGenerateVideos":false,"useOnlyProvidedMedia":false}},{"workflow":"ad-generator","aliases":[],"summary":"Generate a product ad from a prompt and/or product images.","requires":["source.prompt or media.provided[]"],"docs":"https://www.revid.ai/llm/api/ad-generator.md","mapsTo":{"slug":"ai-ad-generator","slugNew":"","flowType":"prompt-to-video"},"defaults":{"mediaType":"movingImage","hasToGenerateVoice":true,"hasToSearchMedia":true,"hasAvatar":false,"disableAudio":true,"hasToGenerateVideos":true,"useOnlyProvidedMedia":true}}],"parameterReference":[{"path":"workflow","type":"string","required":true,"enum":["script-to-video","prompt-to-video","audio-to-video","music-to-video","article-to-video","avatar-to-video","static-background-video","motion-transfer","caption-video","ad-generator"],"description":"The generation workflow. Decides which source input is required and every default below."},{"path":"webhookUrl","type":"string","required":false,"aliases":["webhook"],"description":"Public URL called when the render finishes (success or failure). Strongly recommended over polling."},{"path":"projectId","type":"string","required":false,"aliases":["pid"],"description":"Reuse an existing project instead of creating a new one. The project must belong to the API key's workspace."},{"path":"aspectRatio","type":"string","required":false,"enum":["9:16","16:9","1:1","4:5","auto"],"default":"9:16","aliases":["ratio"],"description":"Output aspect ratio."},{"path":"metadata","type":"object|null","required":false,"description":"Free-form object stored with the project and echoed in webhooks. For URL sources, metadata.duration (seconds) speeds up processing."},{"path":"characterIds","type":"string[]","required":false,"aliases":["selectedCharacters","options.characterIds","options.selectedCharacters"],"description":"IDs of saved consistent characters to feature in the video. Get IDs from GET /api/public/v3/consistent-characters. Selecting characters can force media.imageModel to ultra when the preset requires it."},{"path":"source.text","type":"string","required":"script-to-video, avatar-to-video, static-background-video","workflows":["script-to-video","avatar-to-video","static-background-video"],"aliases":["inputText","input"],"description":"The exact script to be spoken. For script-to-video it can also be an X/Twitter or LinkedIn post URL: the post content becomes the script."},{"path":"source.prompt","type":"string","required":"prompt-to-video; ad-generator (unless media.provided[] is set)","workflows":["prompt-to-video","ad-generator","music-to-video"],"aliases":["prompt","input"],"description":"What the video should be about: the AI writes the script. For music-to-video it is an optional creative brief for the visual storyline."},{"path":"source.url","type":"string","required":"audio-to-video, music-to-video, article-to-video, motion-transfer, caption-video","workflows":["audio-to-video","music-to-video","article-to-video","motion-transfer","caption-video","static-background-video"],"description":"The source content URL: audio file, video file, YouTube link, Spotify track, article page, or PDF depending on the workflow. http(s) is enforced; bare domains get https:// prepended."},{"path":"source.recordingType","type":"string","required":false,"enum":["video","audio"],"workflows":["audio-to-video","music-to-video","caption-video"],"description":"Hint for how to treat source.url. Inferred from the file extension when omitted (.mp3/.wav/.m4a/.aac are audio, everything else video)."},{"path":"source.stylePrompt","type":"string","required":false,"workflows":["prompt-to-video","ad-generator"],"aliases":["options.stylePrompt","stylePrompt","visualDirection"],"description":"Visual style instructions, separate from the content prompt (e.g. \"dark mood\", \"pastel watercolor\")."},{"path":"source.durationSeconds","type":"number","required":false,"default":40,"min":5,"max":1800,"workflows":["prompt-to-video","ad-generator"],"aliases":["options.durationSeconds","durationSeconds"],"description":"Hint for the script length the AI writes, in seconds."},{"path":"source.scrapingPrompt","type":"string","required":false,"workflows":["article-to-video"],"aliases":["options.scrapingPrompt","scrapingPrompt"],"description":"Custom instructions for extracting content from the source page (e.g. \"focus on the pricing section\")."},{"path":"source.websiteToRecord","type":"string","required":false,"aliases":["websiteToRecord"],"description":"URL of a website to screen-record as footage for the video."},{"path":"source.quizzData","type":"object","required":false,"aliases":["options.quizzData","quizzData"],"description":"Quiz definition for quiz videos: { title, questions: [{ id, question, answers: [{ id, answer, isCorrect }] }] }."},{"path":"media.type","type":"string","required":false,"enum":["moving-image","ai-video","motion-graphics","stock-video","custom"],"description":"The visual engine for the video."},{"path":"media.quality","type":"string","required":false,"enum":["standard","pro","ultra"],"default":"pro","description":"Convenience profile that picks imageModel + videoModel for you. Explicit media.imageModel / media.videoModel override it."},{"path":"media.imageModel","type":"string","required":false,"enum":["cheap","good","ultra"],"aliases":["imageGenerationModel"],"description":"Image generation model. Auto-adjusted when needed: ai-video forces ultra, and presets/characters can upgrade it."},{"path":"media.videoModel","type":"string","required":false,"enum":["base","pro","ultra","veo3","sora2"],"aliases":["videoGenerationModel"],"description":"Video generation model used when video clips are generated. media.type motion-graphics has two director tiers: base is the fast director (30 credits/scene), pro is the premium director (60 credits/scene); ultra/veo3/sora2 are automatically mapped to pro."},{"path":"media.density","type":"string","required":false,"enum":["low","medium","high"],"aliases":["mediaMultiplier"],"description":"How many distinct visuals per minute of video. More visuals = livelier video and higher generation cost."},{"path":"media.animation","type":"string","required":false,"enum":["none","soft","dynamic","depth"],"default":"soft","aliases":["typeMovingImageAnim"],"description":"How still images are animated. Ignored for other media types."},{"path":"media.mediaPreset","type":"string","required":false,"default":"DEFAULT","aliases":["media.generationPreset","options.generationPreset","generationPreset"],"description":"Visual style preset slug (e.g. DEFAULT, ANIME, PIXAR, GHIBLI, REALISM, ...). See the preset list in the docs. A preset can override media.imageModel when it requires a specific model."},{"path":"media.maxItems","type":"integer","required":false,"min":1,"aliases":["maxNbMedias"],"description":"Hard cap on the number of generated/selected media items."},{"path":"media.provided","type":"array","required":"media.type = custom (>= 1 item); motion-transfer (target image)","aliases":["inputMedias"],"description":"Your own media items. Used as the only visuals when media.type = custom or media.useOnlyProvided = true; otherwise used as references/anchors. Items: { url (required), type, title, ... }."},{"path":"media.useOnlyProvided","type":"boolean","required":false,"default":false,"aliases":["options.useOnlyProvidedMedia","useOnlyProvidedMedia"],"description":"Use only media.provided[] items; disable AI media generation/search."},{"path":"media.useProvidedInOrder","type":"boolean","required":false,"default":false,"description":"Map media.provided[] items to script sections in order (no AI picking). Forces useOnlyProvided. Fewer media than sections: adjacent sections are grouped; extra media are ignored. Requires at least one image/video item."},{"path":"media.backgroundVideo","type":"object","required":false,"workflows":["static-background-video"],"aliases":["selectedBackgroundMedia"],"description":"The background loop media item ({ type: \"video\", url, urlLowRes?, imagePreview?, noReencode? })."},{"path":"media.bRollType","type":"string","required":false,"workflows":["avatar-to-video","audio-to-video","caption-video"],"description":"B-roll composition mode: how generated B-roll mixes with the main footage. Common values: split-screen, fullscreen."},{"path":"media.placeAvatarInContext","type":"boolean","required":false,"default":false,"workflows":["avatar-to-video"],"aliases":["avatar.placeInContext","placeAvatarInContext"],"description":"Place the avatar inside the generated scenes instead of overlaying it."},{"path":"media.mergeVideos","type":"boolean","required":false,"default":false,"description":"Merge multiple provided videos into one sequence."},{"path":"media.mergeVideosFull","type":"boolean","required":false,"default":false,"description":"Merge provided videos keeping their full length."},{"path":"media.addAudioToVideos","type":"boolean","required":false,"description":"Generate ambient audio/sound for AI video clips."},{"path":"media.turnImagesIntoVideos","type":"boolean","required":false,"default":false,"description":"Animate provided still images into video clips."},{"path":"media.applyStyleTransfer","type":"boolean","required":false,"default":false,"description":"Re-style provided media to match the selected preset."},{"path":"voice.enabled","type":"boolean","required":false,"aliases":["hasToGenerateVoice"],"description":"Generate an AI voice-over for the script."},{"path":"voice.voiceId","type":"string","required":false,"default":"cgSgspJ2msm6clMCkdW9","aliases":["voice.id","selectedVoice"],"description":"Voice ID (ElevenLabs or cloned voice). Browse voices at revid.ai or clone one via POST /api/public/v3/voice-clone."},{"path":"voice.stability","type":"number","required":false,"default":0.2,"min":0,"max":1,"description":"Voice stability. Lower = more expressive, higher = more consistent."},{"path":"voice.speed","type":"number","required":false,"default":1,"min":0.5,"max":2,"description":"Speech speed multiplier."},{"path":"voice.useLegacyModel","type":"boolean","required":false,"default":false,"description":"Use the previous-generation voice model."},{"path":"voice.enhanceAudio","type":"boolean","required":false,"default":false,"aliases":["options.hasToEnhanceAudio","hasToEnhanceAudio"],"description":"Post-process the voice track for cleaner audio."},{"path":"voice.language","type":"string","required":false,"aliases":["options.language","language","lang"],"description":"Language code for voice-over and script generation (e.g. \"en\", \"fr\", \"es\"). 70+ languages supported."},{"path":"captions.enabled","type":"boolean","required":false,"default":true,"aliases":["disableCaptions (inverted)"],"description":"Burn animated captions into the video."},{"path":"captions.preset","type":"string","required":false,"default":"Wrap 1","description":"Caption style preset. Available: Basic, Revid, Hormozi, Ali, Wrap 1, Wrap 2, Faceless, Elegant, Difference, Opacity, Glass, Playful, Bold Punch, Movie, Outline, Cove, Beat, Floating, Gram, Morph Text, Typewriter, Word by Word."},{"path":"captions.position","type":"string","required":false,"enum":["top","middle","bottom"],"default":"bottom","description":"Vertical position of the captions."},{"path":"captions.autoCrop","type":"boolean","required":false,"default":false,"workflows":["caption-video","audio-to-video"],"description":"Auto-reframe the source video for the target aspect ratio (face tracking). Costs extra credits."},{"path":"music.enabled","type":"boolean","required":false,"aliases":["audio.enabled","disableAudio (inverted)"],"description":"Add a background music track. The whole music block also accepts the legacy alias name `audio`."},{"path":"music.trackName","type":"string","required":false,"default":"Observer","aliases":["audio.trackName","selectedAudio"],"description":"Name of a track from the Revid library (115+ tracks, e.g. Observer, Snaps, Bright Morning, Chill Wave, Epic Battle Orchestra). Matched case-insensitively, also by slug (e.g. startup-energy). Unknown names are rejected with a 400. Ignored when music.audioUrl is set."},{"path":"music.audioUrl","type":"string","required":false,"aliases":["music.url","audioUrl"],"description":"Custom background music URL. Checked for reachability (HEAD request) before the render starts."},{"path":"music.generateMusic","type":"boolean","required":false,"default":false,"aliases":["music.generate","options.generateMusic","hasToGenerateMusic"],"description":"Generate an AI music track instead of using the library/custom URL."},{"path":"music.generationMusicPrompt","type":"string","required":false,"aliases":["music.generationPrompt","options.generationMusicPrompt","generationMusicPrompt"],"description":"Prompt for AI music generation (style, mood, instruments)."},{"path":"music.musicGenerationModel","type":"string","required":false,"default":"base","description":"Model used for AI music generation."},{"path":"music.soundWave","type":"boolean","required":false,"default":false,"workflows":["music-to-video"],"aliases":["hasSoundWave"],"description":"Overlay an animated waveform visual."},{"path":"music.syncWith","type":"string","required":false,"enum":["beats","lyrics"],"workflows":["music-to-video"],"aliases":["syncMusicWith"],"description":"Sync visual cuts to the music."},{"path":"music.enableLyricsLipSync","type":"boolean","required":false,"default":false,"workflows":["music-to-video"],"aliases":["options.enableLyricsLipSync","enableLyricsLipSync"],"description":"Animate characters lip-syncing the lyrics."},{"path":"music.lipSyncFrequency","type":"number","required":false,"default":0.3,"min":0,"max":1,"workflows":["music-to-video"],"aliases":["options.lipSyncFrequency","lipSyncFrequency"],"description":"Fraction of the video duration with lip-synced shots (0.3 = 30%)."},{"path":"music.generateLyricsFromPrompt","type":"boolean","required":false,"default":false,"workflows":["music-to-video"],"aliases":["hasToGenerateLyricsFromPrompt"],"description":"Generate lyrics from the prompt instead of transcribing the track."},{"path":"avatar.enabled","type":"boolean","required":false,"aliases":["hasAvatar"],"description":"Show a talking avatar in the video."},{"path":"avatar.url","type":"string","required":"avatar-to-video, or whenever avatar.enabled is true","aliases":["selectedAvatar"],"description":"Image (png/jpg/webp) or video of the avatar."},{"path":"avatar.mimeType","type":"string","required":false,"aliases":["selectedAvatarType"],"description":"Mime type of avatar.url. Inferred from the extension when omitted (defaults to video/mp4 for unknown extensions)."},{"path":"avatar.imageModel","type":"string","required":false,"default":"good","aliases":["avatarImageModel"],"description":"Model used to animate the avatar."},{"path":"avatar.removeBackground","type":"boolean","required":false,"default":false,"aliases":["removeAvatarBackground"],"description":"Remove the avatar's background before compositing."},{"path":"options.promptTargetDuration","type":"number|string","required":false,"default":30,"min":5,"max":1800,"workflows":["prompt-to-video","ad-generator"],"aliases":["promptTargetDuration","options.targetDuration (in prompt workflows)"],"description":"Target video duration in seconds for prompt-driven workflows, or \"auto\" to let the AI choose."},{"path":"options.targetDuration","type":"integer","required":false,"min":1,"workflows":["article-to-video","audio-to-video","music-to-video","caption-video"],"aliases":["targetDuration"],"description":"Target output duration in seconds for URL-driven workflows. In prompt workflows this acts as an alias of options.promptTargetDuration."},{"path":"options.summarizationPreference","type":"string","required":false,"enum":["summarize","summarizeIfLong","no-summarization"],"workflows":["article-to-video","script-to-video"],"description":"How to condense source content into the script."},{"path":"options.useWholeAudio","type":"boolean","required":false,"workflows":["audio-to-video"],"aliases":["useWholeAudio"],"description":"Use the full source audio (true) or extract highlight segments (false)."},{"path":"options.outputCount","type":"integer","required":false,"default":1,"min":1,"max":3,"workflows":["audio-to-video"],"aliases":["nbGenerations"],"description":"How many highlight clips to extract from the source audio (audio-to-video only). Each clip consumes credits. Other workflows always produce a single video and reject values above 1."},{"path":"options.disableAudio","type":"boolean","required":false,"aliases":["disableAudio"],"description":"Hard override: strip background music from the output regardless of the music block."},{"path":"options.disableVoice","type":"boolean","required":false,"aliases":["disableVoice"],"description":"Hard override: no voice-over regardless of the voice block."},{"path":"options.hasToTranscript","type":"boolean","required":false,"default":false,"workflows":["audio-to-video","music-to-video","caption-video"],"aliases":["hasToTranscript"],"description":"Force transcription of the source audio (needed for captions on uploaded audio/video)."},{"path":"options.soundEffects","type":"boolean","required":false,"default":false,"aliases":["hasToGenerateSoundEffects"],"description":"Generate sound effects matched to the scenes."},{"path":"options.addStickers","type":"boolean","required":false,"default":false,"aliases":["addStickers"],"description":"Add animated stickers/emojis matched to the script."},{"path":"options.nsfwFilter","type":"boolean","required":false,"default":false,"aliases":["enableNsfwFilter"],"description":"Filter NSFW content in generated media."},{"path":"options.language","type":"string","required":false,"aliases":["language","lang","voice.language"],"description":"Language override for the whole generation (same as voice.language)."},{"path":"options.watermark","type":"object|null","required":false,"aliases":["watermark"],"description":"Custom watermark object forwarded as-is ({ url, position, opacity, ... }). null removes it."},{"path":"options.selectedPalette","type":"string","required":false,"description":"Color palette name for generated visuals."},{"path":"options.preventSummarization","type":"boolean","required":false,"default":false,"description":"Never shorten the provided text (overrides summarization heuristics)."},{"path":"options.hasToGenerateCover","type":"boolean","required":false,"default":false,"description":"Generate a cover/thumbnail image for the video."},{"path":"options.coverTextType","type":"string","required":false,"default":"layers","description":"Style of the text on the generated cover."},{"path":"options.coverPrompt","type":"string","required":false,"description":"What the cover should show, up to 1200 characters (longer is truncated). Steers the cover concept; omit to design it from the script."},{"path":"options.fetchNews","type":"boolean","required":false,"default":false,"workflows":["prompt-to-video"],"description":"Ground the script in recent news fetched for the prompt topic."},{"path":"options.hasTextSmallAtBottom","type":"boolean","required":false,"default":false,"description":"Show a small text line at the bottom of the video."},{"path":"options.customImageGenerationRulesSlug","type":"string","required":false,"description":"Slug of saved custom image generation rules to apply."},{"path":"render.resolution","type":"string","required":false,"enum":["720p","1080p","4k"],"default":"1080p","aliases":["resolution"],"description":"Output resolution. 4k exports cost extra credits."},{"path":"render.compression","type":"number","required":false,"default":18,"min":0,"max":50,"aliases":["compression"],"description":"H.264 CRF-style compression. Lower = better quality and bigger files."},{"path":"render.frameRate","type":"number","required":false,"default":30,"min":1,"max":60,"aliases":["frameRate"],"description":"Output frame rate."},{"path":"advanced.customCreationParams","type":"object","required":false,"aliases":["customCreationParams"],"description":"Expert escape hatch: extra legacy creationParams merged into the final payload. Workflow identity keys (slug, flowType) stay locked. Use only with guidance from the Revid team."}],"examples":{"scriptToVideo":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"script-to-video","source":{"text":"this is my video text"},"media":{"type":"moving-image","quality":"pro","density":"high","animation":"soft"},"voice":{"enabled":true,"voiceId":"cgSgspJ2msm6clMCkdW9","stability":0.2,"speed":1},"captions":{"enabled":true,"preset":"Wrap 1","position":"bottom"},"music":{"trackName":"Observer"},"render":{"resolution":"1080p","compression":18,"frameRate":30},"aspectRatio":"9:16"},"promptToVideo":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"prompt-to-video","source":{"prompt":"this is my prompt","stylePrompt":"dark mood","durationSeconds":40},"media":{"type":"ai-video","quality":"ultra","density":"high"},"options":{"promptTargetDuration":30},"characterIds":["ac873ae7-aec1-4261-b8ef-bbd85547652e"]},"audioToVideo":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"audio-to-video","source":{"url":"https://www.youtube.com/watch?v=ip30oRP9BP0"},"media":{"type":"ai-video","density":"medium","imageModel":"good","videoModel":"ultra","mediaPreset":"DEFAULT","bRollType":"split-screen"},"captions":{"enabled":true,"preset":"Wrap 1","position":"bottom","autoCrop":true},"options":{"useWholeAudio":true,"hasToTranscript":true,"disableAudio":true},"aspectRatio":"16:9"},"musicToVideo":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"music-to-video","source":{"url":"https://www.youtube.com/watch?v=ip30oRP9BP0","prompt":"A neon noir chase through rainy streets that becomes a rooftop performance by the final chorus.","recordingType":"video"},"media":{"type":"moving-image","imageModel":"good","videoModel":"ultra","provided":[{"url":"https://cdn.revid.ai/uploads/music-video-reference.jpg","type":"image","title":"Reference for the neon rooftop look"}]},"captions":{"enabled":true,"preset":"Wrap 1","position":"bottom"},"music":{"soundWave":true,"syncWith":"lyrics"},"aspectRatio":"16:9"},"articleToVideo":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"article-to-video","source":{"url":"https://open.spotify.com/track/5Cp75TUMrHF6c8xbhdligS"},"media":{"type":"moving-image","quality":"ultra"},"options":{"summarizationPreference":"summarize","targetDuration":30},"metadata":{"urlType":"spotify","duration":194}},"avatarToVideo":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"avatar-to-video","source":{"text":"this is my text"},"media":{"type":"moving-image","bRollType":"split-screen","placeAvatarInContext":true},"avatar":{"enabled":true,"url":"https://cdn.revid.ai/ai-gen/chSmd-WtE.jpg","mimeType":"image/jpeg"}},"staticBackgroundVideo":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"static-background-video","source":{"text":"this is my text"},"media":{"type":"moving-image","backgroundVideo":{"type":"video","url":"https://cdn.revid.ai/backgrounds/minecraft/color-upscaled.mp4","urlLowRes":"https://cdn.revid.ai/backgrounds/minecraft/color_low.mp4","imagePreview":"https://cdn.revid.ai/backgrounds/minecraft/color_poster.webp","noReencode":true}}},"motionTransfer":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"motion-transfer","source":{"url":"https://cdn.revid.ai/uploads/1772035872439-video.mp4"},"media":{"type":"moving-image","density":"medium","animation":"dynamic","imageModel":"good","videoModel":"ultra","mediaPreset":"DEFAULT","useOnlyProvided":true,"provided":[{"url":"https://cdn.revid.ai/uploads/1772035882827-image.jpg","type":"image","title":""}]},"captions":{"enabled":true,"preset":"Wrap 1","position":"bottom"},"metadata":{"duration":25.32},"aspectRatio":"9:16"},"captionVideo":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"caption-video","source":{"url":"https://cdn.revid.ai/uploads/1771944925512-video.mp4","recordingType":"video"},"media":{"type":"moving-image","bRollType":"split-screen"},"captions":{"enabled":true,"autoCrop":true},"metadata":{"duration":8.04}},"adGenerator":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"ad-generator","source":{"prompt":"my ad prompt"},"media":{"type":"moving-image","quality":"ultra","useOnlyProvided":true,"provided":[{"url":"https://cdn.revid.ai/uploads/1771944959344-image.png","type":"image","title":""}]},"options":{"promptTargetDuration":30}}},"recipes":{"customMedia":{"description":"Voiced script where each provided image illustrates the matching script section, no AI media picking.","payload":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"script-to-video","source":{"text":"this is a test"},"media":{"type":"custom","density":"medium","imageModel":"cheap","videoModel":"base","useOnlyProvided":true,"useProvidedInOrder":true,"turnImagesIntoVideos":true,"provided":[{"url":"https://cdn.revid.ai/ai-gen/TAINdpjKn.jpg","title":"An abstract, beautiful shot of three distinct beams of light merging into a single radiant golden source.","type":"image"},{"url":"https://cdn.revid.ai/ai-gen/OZxUbirp4.jpg","title":"Three women appear as silhouettes in front of a giant glowing sun in a dark indigo sky.","type":"image"},{"url":"https://cdn.revid.ai/ai-gen/xA1PjFVGorg.jpg","title":"A woman with a sleek black bob stands in a neon-lit glass hallway with rain outside.","type":"image"}]},"voice":{"enabled":true,"voiceId":"nPczCjzI2devNBz1zQrb","speed":1},"captions":{"enabled":true,"position":"bottom"},"aspectRatio":"9:16"}},"referenceImage":{"description":"AI video guided by an input image used as a visual reference, with the ANIME preset.","payload":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"prompt-to-video","source":{"prompt":"this is an example","durationSeconds":40},"media":{"type":"ai-video","imageModel":"ultra","videoModel":"ultra","mediaPreset":"ANIME","addAudioToVideos":true,"provided":[{"url":"https://cdn.revid.ai/uploads/1777872884798-image.png","title":"","type":"image"}]},"voice":{"enabled":true,"voiceId":"nPczCjzI2devNBz1zQrb","stability":0.2,"speed":1},"captions":{"enabled":true,"preset":"Ali","position":"bottom"},"options":{"promptTargetDuration":30},"aspectRatio":"9:16"}},"stockFootage":{"description":"Voiced script illustrated with real stock videos instead of AI-generated media.","payload":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"script-to-video","source":{"text":"this is my video text"},"media":{"type":"stock-video","density":"high"},"voice":{"enabled":true,"voiceId":"cgSgspJ2msm6clMCkdW9","stability":0.2,"speed":1},"captions":{"enabled":true,"preset":"Wrap 1","position":"bottom"},"music":{"trackName":"Observer"}}},"xLinkedinPost":{"description":"Pass a post URL as source.text: the post content becomes the script.","payload":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"script-to-video","source":{"text":"https://x.com/tibo_maker/status/1848647301998284964"},"media":{"type":"moving-image","density":"medium","animation":"dynamic","imageModel":"good","videoModel":"ultra"},"voice":{"enabled":true,"voiceId":"cgSgspJ2msm6clMCkdW9","speed":1},"captions":{"enabled":true,"preset":"Wrap 1","position":"bottom"},"options":{"summarizationPreference":"summarize"},"aspectRatio":"9:16"}},"videoQuiz":{"description":"Quiz video driven by quizzData passed through advanced.customCreationParams.","payload":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"script-to-video","source":{"text":"https://x.com/tibo_maker/status/1848647301998284964"},"media":{"type":"moving-image","density":"medium","animation":"dynamic"},"voice":{"enabled":true,"voiceId":"cgSgspJ2msm6clMCkdW9","speed":1},"captions":{"enabled":true,"preset":"Wrap 1","position":"bottom"},"advanced":{"customCreationParams":{"quizzData":{"title":"France","questions":[{"id":"82e14b8f-07ce-4489-9c35-6d9c10872b4e","question":"What is France","answers":[{"id":"a62c6e91-da4b-491a-8f36-ba67caa5838a","answer":"a country","isCorrect":true},{"id":"10c89812-22f8-47df-88ef-f11e318fdb1c","answer":"a city","isCorrect":false}]}]}}},"aspectRatio":"9:16"}},"pdfToVideo":{"description":"Turn a PDF (carousel, report) into a narrated video, one section per page.","payload":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"caption-video","source":{"url":"https://cdn.revid.ai/uploads/1772035824673-application.pdf"},"media":{"type":"moving-image","density":"medium","animation":"dynamic","imageModel":"cheap","videoModel":"base"},"voice":{"enabled":true,"voiceId":"nPczCjzI2devNBz1zQrb","speed":1},"captions":{"enabled":true,"position":"bottom"},"aspectRatio":"9:16"}},"motionGraphicsPro":{"description":"Animated motion graphics scenes rendered with the premium pro director (60 credits/scene). Use media.videoModel: \"base\" for the cheaper 30 credits/scene tier.","payload":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"prompt-to-video","source":{"prompt":"Explain how compound interest works","durationSeconds":40},"media":{"type":"motion-graphics","videoModel":"pro"},"voice":{"enabled":true,"voiceId":"cgSgspJ2msm6clMCkdW9","speed":1},"captions":{"enabled":true,"preset":"Wrap 1","position":"bottom"},"aspectRatio":"16:9"}},"newsVideo":{"description":"Script grounded in recent news fetched for the prompt topic.","payload":{"webhookUrl":"https://your-server.com/revid/webhook","workflow":"prompt-to-video","source":{"prompt":"news about France","durationSeconds":40},"media":{"type":"moving-image","density":"medium","animation":"dynamic","imageModel":"good","videoModel":"ultra"},"voice":{"enabled":true,"voiceId":"cgSgspJ2msm6clMCkdW9","speed":1},"captions":{"enabled":true,"preset":"Wrap 1","position":"bottom"},"options":{"promptTargetDuration":30,"fetchNews":true},"advanced":{"customCreationParams":{"promptCustomRules":"Use recent factual sources and structure as a professional news report."}},"aspectRatio":"9:16"}}},"additionalEndpoints":[{"path":"/api/public/v3/calculate-credits","methods":["POST"],"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. The estimate covers all generation costs (voice, AI media, music, sound effects) but not the flat per-call render fee, and the actual charge can differ slightly since media counts and durations are decided at build time."},{"path":"/api/public/v3/status","methods":["GET"],"description":"Poll the status of a project created by POST /render."},{"path":"/api/public/v3/projects","methods":["GET"],"description":"List projects owned by the API key's workspace."},{"path":"/api/public/v3/me","methods":["GET"],"description":"Account, credits, subscription, and workspace info for the API key."},{"path":"/api/public/v3/search-viral-videos","methods":["GET"],"description":"Semantic search over viral short-form videos and posts across YouTube, Instagram, TikTok, X, Reddit, Threads, and LinkedIn — the same engine behind revid.ai/search. Results include full transcripts, engagement data (views, likes, comments, shares, engagement rate), post and video URLs, author info, hashtags, and AI-analyzed style labels. Free of credit cost, but rate limited per plan tier: 20/day without a subscription, 500/day on any paid plan, 2000/day on Elite, 10000/day on Enterprise (rolling 24h window). Hitting the limit returns HTTP 429 with code RATE_LIMIT_EXCEEDED and upgrade info."},{"path":"/api/public/v3/export-video","methods":["POST"],"description":"Render an mp4 export of an existing project."},{"path":"/api/public/v3/rename-project","methods":["POST"],"description":"Rename a project owned by the API key user."},{"path":"/api/public/v3/add-to-queue","methods":["POST"],"description":"Add a rendered video to your publishing queue; it is scheduled at the next available slot of the channel."},{"path":"/api/public/v3/publish-now","methods":["POST"],"description":"Publish a rendered video right now to a channel or specific platform accounts."},{"path":"/api/public/v3/social-accounts","methods":["GET"],"description":"List the social accounts (TikTok, YouTube, Instagram, X, Facebook Pages, webhooks) and channels connected to the API key's active workspace. Use the returned ids or handles as the `<platform>.id` / `<platform>.username` (or `facebook.name`) values of /publish-now and /add-to-queue. Tokens are never returned. Accounts with tokenInvalid: true must be reconnected in Revid settings before publishing."},{"path":"/api/public/v3/consistent-characters","methods":["GET","POST","DELETE"],"description":"List saved consistent characters (avatar-based and LoRA-trained), newest first."},{"path":"/api/public/v3/voice-clone","methods":["POST"],"description":"Clone a custom voice from a public audio sample. Requires the Elite plan or above (10 voices on Elite, 100 on Enterprise)."},{"path":"/api/public/v3/generate-media","methods":["POST"],"description":"Generate images or video clips without creating a video project (same engine as the Revid media generator)."},{"path":"/api/public/v3/buy-credit-pack","methods":["POST"],"description":"Charge the saved payment method for a credit pack. Used for automated top-up flows."}],"compatibility":{"supportedAliases":["webhook (alias of webhookUrl)","pid (alias of projectId)","ratio (alias of aspectRatio)","inputText / prompt / input (legacy aliases of source.text / source.prompt)","inputMedias (legacy alias of media.provided)","audio.* (legacy alias of music.*)","selectedCharacters (alias of characterIds)","media.generationPreset / options.generationPreset (legacy aliases of media.mediaPreset)","options.durationSeconds / options.stylePrompt (legacy aliases of source.durationSeconds / source.stylePrompt)","options.generateMusic / options.generationMusicPrompt (legacy aliases of music.generateMusic / music.generationMusicPrompt)","options.targetDuration acts as options.promptTargetDuration in prompt workflows","voiceover-to-video (alias of the script-to-video workflow)","media.type \"video\" (alias of \"ai-video\")","media.type \"motion-graphics\" maps to legacy \"motionGraphics\""],"advancedPassthrough":"Use `advanced.customCreationParams` to pass any extra legacy creationParams when needed."}}