Skip to main content

JSON Structure Overview

A Zvid project is a plain JSON object submitted as payload to POST /api/render/api-key.

{
"payload": {
"name": "my-video",
"duration": 30,
"visuals": [],
"audios": []
}
}

The Zvid API validates the payload, checks account limits, queues the render, resolves remote assets, and produces the final video.

Project Object

interface Project {
name?: string;
width?: number;
height?: number;
resolution?: ResolutionPreset;
duration?: number;
frameRate?: number;
backgroundColor?: string;
outputFormat?: "mp4" | "mov" | "avi" | "webm";
visuals?: Item[];
audios?: AudioItem[];
thumbnail?: string;
subtitle?: Subtitle;
}
PropertyTypeRequiredDefaultNotes
namestringNo"unnamed"Output filename without extension. Letters, numbers, spaces, _, and - are accepted by API validation.
widthnumberNo1280Used for custom resolution. Limited by the user's plan.
heightnumberNo720Used for custom resolution. Limited by the user's plan.
resolutionResolutionPresetNocustom dimensionsPreset dimensions override width and height when not custom.
durationnumberNo10Seconds. Minimum 0.1; maximum is plan-dependent.
frameRatenumberNo30Integer from 1 to 60.
backgroundColorstringNo#ffffffHex color, such as #000000.
outputFormatstringNomp4API accepts only mp4, mov, avi, and webm.
visualsItem[]No[]Text, image, video, GIF, and SVG elements.
audiosAudioItem[]No[]External audio tracks.
thumbnailstringNogenerated when absentOptional remote image URL.
subtitleSubtitleNononeCaption and subtitle configuration.

Resolution Presets

See the ResolutionPreset source reference for supported preset names, dimensions, and usage notes.

Property Reference

All visual elements share timeline, transform, and layering fields. Media elements add resizing and zoom where supported. The pages below are the canonical source references for reusable typed properties:

Element Types

  • Text Elements: plain text or safe HTML.
  • Image Elements: remote image sources, filters, crop, radius, chroma key, resize, and zoom.
  • Video Elements: remote video clips, trim timing, audio, playback speed, transitions, resize, and zoom.
  • GIF Elements: animated GIFs with timing, resize, zoom, crop, filters, and chroma key.
  • SVG Elements: inline SVG with validation restrictions.
  • Audio Elements: background music, narration, and sound effects.
  • Subtitle: word-timed captions and subtitle styling.
  • Animation Effects: enter and exit animations for visual elements.
  • Video Transitions: video-to-video xfade transitions.

Defaults

Project Defaults

PropertyDefault
width1280
height720
duration10
frameRate30
backgroundColor#ffffff
outputFormatmp4
nameunnamed
visuals[]
audios[]

Visual Defaults

PropertyDefault
x, y0
enterBegin, enterEnd0
exitBegin, exitEndproject.duration
opacity1
angle0
flipV, flipHfalse
track0
enterAnimation, exitAnimationnull

Video Defaults

PropertyDefault
videoBegin0
videoEndproject duration or source duration when available
videoDurationproject duration or source duration when available
volume1
speed1
transition, transitionIdnull

Audio Defaults

PropertyDefault
enter0
exitproject duration
audioBegin0
audioEndproject duration or source duration when available
audioDurationproject duration or source duration when available
volume1
speed1

Supported Formats

  • Input media: remote HTTP/HTTPS assets accepted by API validation and checked during rendering.
  • Output video: mp4, mov, avi, or webm.
  • SVG: inline SVG only, with security restrictions described in SVG Elements.
  • Text HTML: safe subset only, described in Text Elements.

Resource Limits

Limits are plan-dependent and enforced before or during rendering. They include output resolution, project duration, input media resolution, media size, and element counts by type. Validation errors include the active plan limits when the payload exceeds them.

Quick Examples

Basic Text Element

{
"type": "TEXT",
"text": "Hello World",
"x": 640,
"y": 360,
"anchor": "center-center",
"style": {
"fontSize": 48,
"color": "#000000",
"textAlign": "center"
}
}

Basic Image Element

{
"type": "IMAGE",
"src": "https://images.pexels.com/photos/32972375/pexels-photo-32972375.jpeg",
"x": 100,
"y": 100,
"width": 607,
"height": 910
}

Basic Video Element

{
"type": "VIDEO",
"src": "https://videos.pexels.com/video-files/1409899/1409899-sd_640_360_25fps.mp4",
"videoEnd": 10,
"volume": 0
}

Basic Audio Element

{
"src": "https://cdn.pixabay.com/audio/2025/04/21/audio_ed6f0ed574.mp3",
"volume": 0.5
}

Next Steps