Endpoints
render
Start a complete short-form video workflow with scripting, voice, scenes, captions, and optional music.
By Wilson Sik Founder, Reviral Last updated
Supported workflow values
POST /api/v1/render keeps its broad raw-forward contract. Its validated body currently accepts these workflow values:
prompt-to-videoscript-to-videoarticle-to-videostatic-bg-videocaption-videoad-generatorugc-admusic-to-videomotion-transferaudio-to-videoquiz-videolyrics-lipsyncshorts-studiocinema
For a single public model, use generate-media. For the owned-upload UGC contract with required retry protection, use UGC ad.
/api/v1/render
Describe the full render contract
Returns the current field, workflow, pricing, rate-limit, and response summary for the full short-form video endpoint.
Authentication: Public
curl "https://reviral.ai/api/v1/render"Responses
- 200
- Human-readable full render contract
/api/v1/render
Start a full short-form video render
Starts a complete video workflow with script, voice, scenes, captions, and optional music.
Authentication: Bearer API key required
curl -X POST "https://reviral.ai/api/v1/render" \
-H "Authorization: Bearer $REVIRAL_API_KEY" \
-H "Content-Type: application/json" \
--data '{"workflow":"prompt-to-video","prompt":"Explain one useful idea in 30 seconds","durationSec":30,"aspectRatio":"9:16"}'Request body
| Field | Type | Required | Description |
|---|---|---|---|
| workflow | string: prompt-to-video | script-to-video | article-to-video | static-bg-video | caption-video | ad-generator | ugc-ad | avatar-to-video | quiz-video | Yes | — |
| prompt | string | No | — |
| userScript | string | No | — |
| articleUrl | string | No | — |
| videoUrl | string | No | — |
| productUrl | string | No | — |
| avatarImageUrl | string | No | — |
| tier | string: base | pro | ultra | No | — |
| durationSec | integer (min 15, max 300) | No | — |
| aspectRatio | string: 9:16 | 16:9 | 1:1 | auto | No | — |
| presetId | string | No | A stock preset sent with an AI media type is changed to the default AI style, and an AI preset sent with the Stock videos media type is changed to Stock footage; the response shows the style that will be used. |
| language | string | No | — |
| captionStyle | string | No | — |
| captionPosition | string: top | middle | bottom | No | — |
| music | boolean | No | — |
| webhookUrl | string | No | — |
| referenceImageUrls | array | No | Ordered owned image references for workflow cinema. |
| referenceVideoUrls | array | No | Ordered owned video references for workflow cinema. |
| referenceAudioUrls | array | No | Ordered owned audio references for workflow cinema. |
| nbGenerations | integer (min 1, max 10) | No | — |
| musicUrl | string | No | — |
| voiceId | string | No | — |
| musicTrackId | string | No | — |
| improveConsistency | boolean | No | — |
| continuousMode | boolean | No | — |
| premiumVideoModelId | string | No | — |
| mediaItems | array | No | — |
Responses
- 200
- Render accepted
- 400
- Request validation failed (forwarded from the render pipeline)
- 401
- Key is missing, revoked, or invalid
- 402
- Account needs more credits (forwarded from the render pipeline)
- 429
- Too many requests (forwarded from the render pipeline)
- 500
- The render could not be started (forwarded from the render pipeline; a rarer auth-layer failure instead returns LegacyErrorEnvelope)