Skip to main content

Video API (1.0.0)

Download OpenAPI specification:Download

The Video API allows you to programmatically create videos.

Authentication

To authenticate, you must provide your API key in the api_key header Authorization: Bearer <API_KEY> or post body e.g. {api_key: "<API_KEY>"}. You can find your API key in the Vidon.ai dashboard.

Note: You will need a paid subscription to use the API. If you would like to try the API, please contact us at support@vidon.ai.

Rate limits

Requests are rate limited to 1 request per second. If you need a higher rate limit, please contact us at support@vidon.ai.

Pricing

Each video render costs 1 credit. Draft videos do not cost any credits.

Video rendering

When you set draft to false, we will start rendering your video. This may take up to 1 hour to complete depending on the length e.g. 1 minute video may only take 1 minute to render, but a 10 minute video may take 10 minutes to render.

Webhooks

When creating a video you can pass webhook_url in the request body. When the video is ready, we will send a POST request to the webhook URL with the video data. The webhook URL must be publicly accessible.

Polling

After creating a video your response will contain video_id and render_id. Poll the Video Render endpoint (/videos/{VIDEO_ID}/renders/{RENDER_ID}) until status is complete or error.

See Video Render endpoint for more information.

Poll every 15 seconds until the video is ready.

Voices

Voices are the text-to-speech voices that will be used to narrate your video.

List voices

Returns all voices that are available for use. Voices are grouped by language and accent.

Responses

Templates

Templates take some content and turn it into a video. The content can be a URL, a markdown string, or AI prompted text.

URL to Video

Creates a video from a URL. The URL must be publicly accessible. Note that currently only blog posts are supported.

Important: See Video rendering for how to get the MP4 video.

Note: This may take up to 120 seconds to complete.

Authorizations:
api_key
Request Body schema: application/json
url
string <uri>

Webpage URL

draft
boolean (draft)

Whether the video is a draft or not. Draft videos do not count towards your monthly quota.

embed
boolean (embed)

Enable video hosting & embedding, see Video Hosting for more information. Note this will count towards your video hosting quota.

brandkit
string (brandkit_id)

The brand kit ID to use for the video. See Brand Kits for more information. Note: Brand kits will override any other settings.

type
enum
Enum: "article_summary" "article_complimentary" "article_teaser" "product_page" "real_estate_listing" "product_teaser" "job_listing" "custom_template" "custom_prompt"

The type of template to use to create the video.

template
string

The markdown template to use to create the video. This is only used if the template is custom_template.

prompt
string

The prompt for the video. This is only used if the template is custom_prompt.

length
string
Default: "short"
Enum: "short" "medium" "long"

The desired length of the video. This is only a suggestion and the video may be longer or shorter than the desired length.

color
string (color)

The HEX primary color of the video. Other colors will be generated automatically from this color.

collection
string (collection)
Enum: "images" "videos" "modern_illustrations" "3d_illustrations" "cheerful_illustrations" "clean_illustrations" "hand_drawn_illustrations"

The collection of illustrations to use in the video

voice
string (voice)

The voice to use in the video, see Voices API for a list of available voices

title_font
string (title_font)

A Google Font to use for the video title, see https://fonts.google.com/

body_font
string (body_font)

A Google Font to use for the video body, see https://fonts.google.com/

ratio
string (ratio)
Enum: "square" "landscape" "portrait"

The aspect ratio of the video

webhook_url
string <uri> (webhook_url)

A URL to send a POST request to while the video is rendering (to show a progress bar render.progress will be the % the video render has completed e.g. 5) and when the video is ready or an error occurs. Note this will only be sent if draft is set to false.

public
boolean (public)
Default: false

Whether the video is public or not. Public videos can be edited by anyone with the link.

Responses

Request samples

Content type
application/json
{
  • "draft": true,
  • "embed": false,
  • "brandkit": "WxQp5Mq4gj2R9DZHkz1i",
  • "type": "article_summary",
  • "template": "# [Video title]\\n[1 sentence summary]\\n\\n! [Call to action]",
  • "prompt": "Video marketing 101",
  • "length": "short",
  • "color": "#2B5EFF",
  • "collection": "images",
  • "voice": "en-GB-OliviaNeural",
  • "title_font": "Inter",
  • "body_font": "Inter",
  • "ratio": "square",
  • "webhook_url": "https://example.com/webhook",
  • "public": false
}

Response samples

Content type
application/json
Example
{}

Markdown to Video

Creates a video from a markdown string. The markdown string should be the content of the video.

Important: See Video rendering for how to get the MP4 video.

Note: This may take up to 120 seconds to complete.

Authorizations:
api_key
Request Body schema: application/json
markdown
string <uri> [ 10 .. 4000 ] characters

Markdown video script. See https://www.markdownguide.org/basic-syntax/ for more information.

draft
boolean (draft)

Whether the video is a draft or not. Draft videos do not count towards your monthly quota.

embed
boolean (embed)

Enable video hosting & embedding, see Video Hosting for more information. Note this will count towards your video hosting quota.

brandkit
string (brandkit_id)

The brand kit ID to use for the video. See Brand Kits for more information. Note: Brand kits will override any other settings.

color
string (color)

The HEX primary color of the video. Other colors will be generated automatically from this color.

collection
string (collection)
Enum: "images" "videos" "modern_illustrations" "3d_illustrations" "cheerful_illustrations" "clean_illustrations" "hand_drawn_illustrations"

The collection of illustrations to use in the video

voice
string (voice)

The voice to use in the video, see Voices API for a list of available voices

title_font
string (title_font)

A Google Font to use for the video title, see https://fonts.google.com/

body_font
string (body_font)

A Google Font to use for the video body, see https://fonts.google.com/

ratio
string (ratio)
Enum: "square" "landscape" "portrait"

The aspect ratio of the video

webhook_url
string <uri> (webhook_url)

A URL to send a POST request to while the video is rendering (to show a progress bar render.progress will be the % the video render has completed e.g. 5) and when the video is ready or an error occurs. Note this will only be sent if draft is set to false.

Responses

Request samples

Content type
application/json
{
  • "markdown": "# My first video\nThis is a paragraph. ![This is an image](https://picsum.photos/200/300)\n\n## This is a heading\nHere is a list:\n- Item 1\n- Item 2\n- Item 3\n\n> This is a blockquote\n\n! This is a call to action\n",
  • "draft": true,
  • "embed": false,
  • "brandkit": "WxQp5Mq4gj2R9DZHkz1i",
  • "color": "#2B5EFF",
  • "collection": "images",
  • "voice": "en-GB-OliviaNeural",
  • "title_font": "Inter",
  • "body_font": "Inter",
  • "ratio": "square",
}

Response samples

Content type
application/json
Example
{}

Prompt to Video

Creates a video from a prompt. The prompt should be the topic of the video. The AI will then generate a script for the video.

Important: See Video rendering for how to get the MP4 video.

Note: This may take up to 120 seconds to complete.

Authorizations:
api_key
Request Body schema: application/json
prompt
string

The prompt for the video

length
string
Default: "short"
Enum: "short" "medium" "long"

The desired length of the video

draft
boolean (draft)

Whether the video is a draft or not. Draft videos do not count towards your monthly quota.

embed
boolean (embed)

Enable video hosting & embedding, see Video Hosting for more information. Note this will count towards your video hosting quota.

brandkit
string (brandkit_id)

The brand kit ID to use for the video. See Brand Kits for more information. Note: Brand kits will override any other settings.

color
string (color)

The HEX primary color of the video. Other colors will be generated automatically from this color.

collection
string (collection)
Enum: "images" "videos" "modern_illustrations" "3d_illustrations" "cheerful_illustrations" "clean_illustrations" "hand_drawn_illustrations"

The collection of illustrations to use in the video

voice
string (voice)

The voice to use in the video, see Voices API for a list of available voices

title_font
string (title_font)

A Google Font to use for the video title, see https://fonts.google.com/

body_font
string (body_font)

A Google Font to use for the video body, see https://fonts.google.com/

ratio
string (ratio)
Enum: "square" "landscape" "portrait"

The aspect ratio of the video

webhook_url
string <uri> (webhook_url)

A URL to send a POST request to while the video is rendering (to show a progress bar render.progress will be the % the video render has completed e.g. 5) and when the video is ready or an error occurs. Note this will only be sent if draft is set to false.

Responses

Request samples

Content type
application/json
{
  • "prompt": "Video marketing 101",
  • "length": "short",
  • "draft": true,
  • "embed": false,
  • "brandkit": "WxQp5Mq4gj2R9DZHkz1i",
  • "color": "#2B5EFF",
  • "collection": "images",
  • "voice": "en-GB-OliviaNeural",
  • "title_font": "Inter",
  • "body_font": "Inter",
  • "ratio": "square",
}

Response samples

Content type
application/json
Example
{}

Videos

Videos a video that you have created.

List videos

Returns all videos you have created.

Authorizations:
api_key

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/videos"

Response samples

Content type
application/json
[]

Get a video

A Video refers to the content you have created. A video can have multiple Video Renders (e.g. different aspect ratios). After creating a video, poll the video render endpoint to check once the video render is ready.

Authorizations:
api_key
path Parameters
video_id
required
string

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/videos/{VIDEO_ID}"

Response samples

Content type
application/json
{}

Create a video

Creates a video using video blocks. This API differs from the template APIs as it gives you more control over the video.

If you design a video in the interface, you can get the JSON for the video by clicking API under the tools menu.

Important: See Video rendering for how to get the MP4 video.

Note: This may take up to 120 seconds to complete.

Authorizations:
api_key
Request Body schema: application/json
title
string (title)

The title of the video

music
string <uri> (music)

An MP3 file to use as background music

icon
string <uri> (icon)

URL to an image to use as the video icon

subtitles
boolean (subtitles)

Whether to add subtitles to the video. This can also be set on a per block basis.

sound_effects
boolean (sound_effects)

Whether to add sound effects to the video. This can also be set on a per block basis.

Array of VideoBlock (object) (components)

An array of video blocks

draft
boolean (draft)

Whether the video is a draft or not. Draft videos do not count towards your monthly quota.

embed
boolean (embed)

Enable video hosting & embedding, see Video Hosting for more information. Note this will count towards your video hosting quota.

color
string (color)

The HEX primary color of the video. Other colors will be generated automatically from this color.

collection
string (collection)
Enum: "images" "videos" "modern_illustrations" "3d_illustrations" "cheerful_illustrations" "clean_illustrations" "hand_drawn_illustrations"

The collection of illustrations to use in the video

voice
string (voice)

The voice to use in the video, see Voices API for a list of available voices

title_font
string (title_font)

A Google Font to use for the video title, see https://fonts.google.com/

body_font
string (body_font)

A Google Font to use for the video body, see https://fonts.google.com/

ratio
string (ratio)
Enum: "square" "landscape" "portrait"

The aspect ratio of the video

webhook_url
string <uri> (webhook_url)

A URL to send a POST request to while the video is rendering (to show a progress bar render.progress will be the % the video render has completed e.g. 5) and when the video is ready or an error occurs. Note this will only be sent if draft is set to false.

Request samples

Content type
application/json
{}

Delete a video

Authorizations:
api_key
path Parameters
video_id
required
string

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" -X DELETE "https://api.vidon.ai/v1/videos/{VIDEO_ID}"

Response samples

Content type
application/json
{
  • "error": "forbidden",
  • "message": "You do not have permission to access this resource"
}

Render a video

Renders a video. This may take up to 1 hour to complete depending on the length e.g. 1 minute video may only take 1 minute to render, but a 10 minute video may take 10 minutes to render.

Important: See Video rendering for how to get the MP4 video.

Note: This may take up to 120 seconds to complete.

Authorizations:
api_key
path Parameters
video_id
required
string
Request Body schema: application/json
embed
boolean (embed)

Enable video hosting & embedding, see Video Hosting for more information. Note this will count towards your video hosting quota.

webhook_url
string <uri> (webhook_url)

A URL to send a POST request to while the video is rendering (to show a progress bar render.progress will be the % the video render has completed e.g. 5) and when the video is ready or an error occurs. Note this will only be sent if draft is set to false.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
Example
{}

List video renders

Returns all video renders you have created.

Authorizations:
api_key

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/videos/{VIDEO_ID}/renders"

Response samples

Content type
application/json
[]

Get a video render

A video render is an exported video. A video can have multiple renders (e.g. different aspect ratios).

Poll this endpoint until the video status is complete or error to check if the video is ready. You can poll every 15 seconds. And monitor the progress field to see how much of the video has been rendered.

Once a video render is complete you can download the MP4 file from the video_url field. See the VideoRender schema under the 200 response for more information.

Authorizations:
api_key
path Parameters
video_id
required
string
render_id
required
string

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/videos/{VIDEO_ID}/renders/{RENDER_ID}"

Response samples

Content type
application/json
Example
{}

Brand kits

Brand kits are a collection of colors, fonts, and logos that you can use to customize your videos. Brand kits are designed in the Vidon.ai dashboard.

List Brand Kits

Returns all brand kits you have access to. You can create brand kits in the Vidon.ai dashboard.

Authorizations:
api_key

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/brandkits"

Response samples

Content type
application/json
[
  • {
    }
]

Create a Brand Kit

Creates a new brand kit with the provided details.

Authorizations:
api_key
Request Body schema: application/json
id
string

The brandkit ID

name
string

The name of the brandkit

domain
string

The domain of the brandkit

logo
string

The URL of the brandkit logo

icon
string

The URL of the brandkit icon

audience
string

The audience of the brandkit

social_post_instructions
string

Instructions to the AI for creating social media posts

description
string

The Company description

personality
Array of strings <= 3 items
Items Enum: "Honest" "Wholesome" "Down-to-earth" "Positive" "Lively" "Exciting" "Imaginative" "Daring" "Reliable" "Hard-working" "Successful" "Intelligent" "Luxurious" "Glamorous" "High-end" "Charming" "Tough" "Outdoorsy" "Unconventional" "Adventurous"

The brand voice/personality of the brandkit. Can include up to three items from the predefined list.

primary
string

The HEX primary color of the brandkit

secondary
string

The HEX secondary color of the brandkit

font_title
string

The title font of the brandkit

font_body
string

The body font of the brandkit

collection
string
Enum: "images" "videos" "modern_illustrations" "3d_illustrations" "cheerful_illustrations" "clean_illustrations" "hand_drawn_illustrations"

The collection of images/illustrations to use in the video

cta
string

The call to action of the brandkit

cta_background_colour
string

The call to action background HEX color of the brandkit

language
string

The language of the brandkit

voices
Array of strings

The voices of the brandkit. See Voices API for a list of available voices.

Responses

Request samples

Content type
application/json
{
  • "id": "WxQp5Mq4gj2R9DZHkz1i",
  • "name": "Acme Inc",
  • "domain": "example.com",
  • "audience": "Marketing managers in the UK",
  • "social_post_instructions": "Create posts with emojis and always include the hashtag #hashtag",
  • "description": "Acme Inc is a marketing agency based in Frankfurt, Germany.",
  • "personality": [
    ],
  • "primary": "#2B5EFF",
  • "secondary": "#FF0000",
  • "font_title": "Inter",
  • "font_body": "Inter",
  • "collection": "images",
  • "cta": "Want to learn more?\\nRead the full article",
  • "cta_background_colour": "#FFFFFF",
  • "language": "english",
  • "voices": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "WxQp5Mq4gj2R9DZHkz1i",
  • "name": "Acme Inc",
  • "domain": "example.com",
  • "audience": "Marketing managers in the UK",
  • "social_post_instructions": "Create posts with emojis and always include the hashtag #hashtag",
  • "description": "Acme Inc is a marketing agency based in Frankfurt, Germany.",
  • "personality": [
    ],
  • "primary": "#2B5EFF",
  • "secondary": "#FF0000",
  • "font_title": "Inter",
  • "font_body": "Inter",
  • "collection": "images",
  • "cta": "Want to learn more?\\nRead the full article",
  • "cta_background_colour": "#FFFFFF",
  • "language": "english",
  • "voices": [
    ]
}

Get a Brand Kit

Authorizations:
api_key
path Parameters
brandkit_id
required
string

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/brandkits/{BRANDKIT_ID}"

Response samples

Content type
application/json
{
  • "id": "WxQp5Mq4gj2R9DZHkz1i",
  • "name": "Acme Inc",
  • "domain": "example.com",
  • "audience": "Marketing managers in the UK",
  • "social_post_instructions": "Create posts with emojis and always include the hashtag #hashtag",
  • "description": "Acme Inc is a marketing agency based in Frankfurt, Germany.",
  • "personality": [
    ],
  • "primary": "#2B5EFF",
  • "secondary": "#FF0000",
  • "font_title": "Inter",
  • "font_body": "Inter",
  • "collection": "images",
  • "cta": "Want to learn more?\\nRead the full article",
  • "cta_background_colour": "#FFFFFF",
  • "language": "english",
  • "voices": [
    ]
}

Content Calendar

Content calendars let you publish videos to social media automatically.

List Posts

Returns all scheduled posts you have access to. You can schedule a new post with publish endpoint under video render.

Authorizations:
api_key

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/social/posts"

Response samples

Content type
application/json
[
  • {
    }
]

Get a Post

Authorizations:
api_key
path Parameters
post_id
required
string

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/social/posts/{POST_ID}"

Response samples

Content type
application/json
{
  • "id": "WxXp5Nq4gjSR9DZHkzQi",
  • "scheduled_at": "1694082149125",
  • "status": "scheduled",
  • "title": "New Product Launch",
  • "tags": [
    ],
  • "video_id": "vid123",
  • "posts": []
}

List Accounts

Returns all accounts you have access to.

Authorizations:
api_key

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/social/accounts"

Response samples

Content type
application/json
[
  • {
    }
]

Get an accounts

Authorizations:
api_key
path Parameters
account_id
required
string

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/social/accounts/{ACCOUNT_ID}"

Response samples

Content type
application/json
{
  • "id": "WxXp5Nq4gjSR9DZHkzQi",
  • "platform": "facebook",
  • "profiles": [
    ]
}

Media Collections

Media collections are collections of images and videos that you can use in your videos. You can create your own media collections or use the default media collection. To access this feature, please contact us at support@vidon.ai.

List Media Collections

Returns all media collections you have access to.

Authorizations:
api_key

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/collections"

Response samples

Content type
application/json
[
  • {
    }
]

Create a Media Collection

Creates a media collection.

Authorizations:
api_key
Request Body schema: application/json
name
string

The name of the collection

description
string

The description of the collection

type
string
Default: "image"
Enum: "image" "video"

The type of collection

Responses

Request samples

Content type
application/json
{
  • "name": "My Collection",
  • "description": "A collection of videos about marketing",
  • "type": "image"
}

Response samples

Content type
application/json
{
  • "id": "images",
  • "name": "Images",
  • "description": "A collection of images",
  • "created": 1616425200000
}

Get a Media Collection

Authorizations:
api_key
path Parameters
collection_id
required
string

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/collections/{COLLECTION_ID}"

Response samples

Content type
application/json
{
  • "id": "images",
  • "name": "Images",
  • "description": "A collection of images",
  • "created": 1616425200000
}

Delete a Media Collection

Authorizations:
api_key
path Parameters
collection_id
required
string

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" -X DELETE "https://api.vidon.ai/v1/collections/{COLLECTION_ID}"

Response samples

Content type
application/json
{
  • "error": "forbidden",
  • "message": "You do not have permission to access this resource"
}

Add media to a Media Collection

Authorizations:
api_key
path Parameters
collection_id
required
string
Request Body schema: application/json

Media to add to the collection

Array of objects
Array
url
required
string

The URL of the media to add. Note videos must end in .mp4

alt_text
required
string

The alt text for the media

type
string
Default: "image"
Enum: "image" "video"

The type of media

duration
number

Video only: The duration of the media in seconds

thumbnail_url
string

Video only: The URL of the thumbnail for the media

Responses

Request samples

Content type
application/json
{
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "images",
  • "name": "Images",
  • "description": "A collection of images",
  • "created": 1616425200000
}

Search a Media Collection

Search a media collection for a keyword.

Authorizations:
api_key
query Parameters
query
required
string

Responses

Request samples

curl "https://api.vidon.ai/v1/collections/{COLLECTION_ID}/search?query=cat&api_key=API_KEY"

Response samples

Content type
application/json
[]

Analyse

Analyse and predict video performance.

Predict Engagement

Predict video engagement and suggest improvements

Authorizations:
api_key

Responses

Request samples

curl -X POST "https://api.vidon.ai/v1/analyse/engagement" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer API_KEY" \
  -d '{"script": "# My first video\nThis is a paragraph. ![This is an image](https://picsum.photos/200/300)\n\n## This is a heading\nHere is a list:\n- Item 1\n- Item 2\n- Item 3\n\n> This is a blockquote\n\n! This is a call to action"}'

Response samples

Content type
application/json
[
  • {
    }
]

Whitelabel Admin

Manage your whitelabel account and users. You authenticate with the API using your whitelabel secret.

Each user within your whitelabel account will have their own API key. You can find these API keys by calling the GET /whitelabel-admin/users endpoint. You can use these API keys to make requests to the Video API on behalf of the user e.g. list a users videos.

Get Whitelabel Admin

Get the Whitelabel Admin Info.

To change your credits or theme, please contact us at support@vidon.ai

Authorizations:
whitelabel_secret

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/whitelabel-admin"

Response samples

Content type
application/json
{
  • "id": "WxQp5Mq4gj2R9DZHkz1i",
  • "theme": {
    },
  • "credits": {
    }
}

List Whitelabel Users

Returns all whitelabel users created under your account.

Authorizations:
whitelabel_secret

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/whitelabel-admin/users"

Response samples

Content type
application/json
[
  • {
    }
]

Get a Whitelabel User

Authorizations:
whitelabel_secret
path Parameters
user_id
required
string

Responses

Request samples

curl -H "Authorization: Bearer API_KEY" "https://api.vidon.ai/v1/whitelabel-admin/users/{USER_ID}"

Response samples

Content type
application/json
{
  • "created": 1721985808307,
  • "id": "WxQp5Mq4gj2R9DZHkz1i",
  • "api_key": "WxQp5Mq4gj2R9DZHkz1i",
  • "total_credits": 1000,
  • "credits_left": 500,
  • "credits_reset_date": 1721985808307
}

Update a Whitelabel User

Authorizations:
whitelabel_secret
path Parameters
user_id
required
string
Request Body schema: application/json
total_credits
number

The total credits to give the user

credits_left
number

The credits left of the user

credits_reset_date
number <timestamp>

The date the credits will reset

Responses

Request samples

Content type
application/json
{
  • "total_credits": 10,
  • "credits_left": 5,
  • "credits_reset_date": 0
}

Response samples

Content type
application/json
{
  • "created": 1721985808307,
  • "id": "WxQp5Mq4gj2R9DZHkz1i",
  • "api_key": "WxQp5Mq4gj2R9DZHkz1i",
  • "total_credits": 1000,
  • "credits_left": 500,
  • "credits_reset_date": 1721985808307
}