Introduction
The easiest API for video editing and generation. Create videos with AI generated images, subtitles, emojis and more.
Authenticating requests
To authenticate requests, include an Authorization
header with the value "Bearer {YOUR_AUTH_KEY}"
.
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
You can retrieve your token by visiting your profile page and creating a token.
Endpoints
GET api/me
requires authentication
Example request:
curl --request GET \
--get "https://api.visibot.app/api/me" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.visibot.app/api/me"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
{
"message": "Unauthenticated",
"error": "Invalid token"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET api/usage
requires authentication
Example request:
curl --request GET \
--get "https://api.visibot.app/api/usage" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.visibot.app/api/usage"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
{
"message": "Unauthenticated",
"error": "Invalid token"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Process telegram subscriber from ManyChat
requires authentication
Example request:
curl --request POST \
"https://api.visibot.app/api/webhooks/manychat/telegram-subscriber" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"manychat_id\": \"architecto\",
\"telegram_id\": \"architecto\"
}"
const url = new URL(
"https://api.visibot.app/api/webhooks/manychat/telegram-subscriber"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"manychat_id": "architecto",
"telegram_id": "architecto"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
User Registration API
APIs for user registration through various integrations
Register a new user
requires authentication
This endpoint allows users to register through various integrations. It requires a valid API key for authentication.
Example request:
curl --request POST \
"https://api.visibot.app/api/user/register" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"user@example.com\",
\"first_name\": \"John\",
\"last_name\": \"Doe\",
\"integration_id\": \"AKfycbw1234567890\",
\"api_key\": \"your-api-key-here\",
\"manychat_tag\": \"wordpress_signup\"
}"
const url = new URL(
"https://api.visibot.app/api/user/register"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "user@example.com",
"first_name": "John",
"last_name": "Doe",
"integration_id": "AKfycbw1234567890",
"api_key": "your-api-key-here",
"manychat_tag": "wordpress_signup"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (201):
{
"message": "User registered successfully",
"user": {
"id": 123,
"email": "user@example.com",
"first_name": "John",
"last_name": "Doe",
"api_token": "your-api-token-here"
}
}
Example response (401):
{
"message": "Invalid API key"
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"email": [
"The email field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Video API
APIs for video processing
Create a new video
requires authentication
Process a video from URL with custom caption settings
Example request:
curl --request POST \
"https://api.visibot.app/api/video/create" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"language\": \"en\",
\"video_url\": \"https:\\/\\/example.com\\/video.mp4\",
\"resize_for_social_media\": true,
\"captions_font_color\": \"#FF5733\",
\"captions_highlight_color\": \"#FF5733\",
\"captions_outline_color\": \"#FF5733\",
\"captions_position\": \"bottom\",
\"captions_font_size\": 24,
\"captions_font_family\": \"Rubik\",
\"captions_add_emojis\": true,
\"captions_outline_thickness\": 5,
\"callback\": \"https:\\/\\/example.com\\/notify-me .\"
}"
const url = new URL(
"https://api.visibot.app/api/video/create"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"language": "en",
"video_url": "https:\/\/example.com\/video.mp4",
"resize_for_social_media": true,
"captions_font_color": "#FF5733",
"captions_highlight_color": "#FF5733",
"captions_outline_color": "#FF5733",
"captions_position": "bottom",
"captions_font_size": 24,
"captions_font_family": "Rubik",
"captions_add_emojis": true,
"captions_outline_thickness": 5,
"callback": "https:\/\/example.com\/notify-me ."
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (201):
{
"video_id": "f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2",
"status": "processing"
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"video_url": [
"The video url field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Edits a video
requires authentication
Pass the same parameters as create video but replace the video_url param with a video_id parameter
Example request:
curl --request POST \
"https://api.visibot.app/api/video/edit" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"language\": \"en\",
\"video_id\": \"55c6a73bb1289d2ec45374571683b41d\",
\"resize_for_social_media\": true,
\"captions_font_color\": \"#FF5733\",
\"captions_highlight_color\": \"#FF5733\",
\"captions_outline_color\": \"#FF5733\",
\"captions_position\": \"bottom\",
\"captions_font_size\": 24,
\"captions_font_family\": \"Rubik\",
\"captions_add_emojis\": true,
\"captions_outline_thickness\": 5,
\"callback\": \"https:\\/\\/example.com\\/notify-me .\\n\\/**\",
\"captions\": [
{
\"start\": 0,
\"end\": 1,
\"text\": \"Samraaaa\",
\"emoji\": \"✉️\\n\\/\"
}
]
}"
const url = new URL(
"https://api.visibot.app/api/video/edit"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"language": "en",
"video_id": "55c6a73bb1289d2ec45374571683b41d",
"resize_for_social_media": true,
"captions_font_color": "#FF5733",
"captions_highlight_color": "#FF5733",
"captions_outline_color": "#FF5733",
"captions_position": "bottom",
"captions_font_size": 24,
"captions_font_family": "Rubik",
"captions_add_emojis": true,
"captions_outline_thickness": 5,
"callback": "https:\/\/example.com\/notify-me .\n\/**",
"captions": [
{
"start": 0,
"end": 1,
"text": "Samraaaa",
"emoji": "✉️\n\/"
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (201):
{
"video_id": "f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2",
"status": "processing"
}
Example response (422):
{
"message": "The given data was invalid.",
"errors": {
"video_url": [
"The video url field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get video status
requires authentication
Check the processing status of a video and get the URL when ready
Example request:
curl --request GET \
--get "https://api.visibot.app/api/video/get" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"video_id\": \"f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2\"
}"
const url = new URL(
"https://api.visibot.app/api/video/get"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"video_id": "f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200):
{
"video_id": "f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2",
"status": "processed",
"video_url": "https://example.com/storage/videos/processed_video.mp4"
}
Example response (202):
{
"video_id": "f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2",
"status": "processing",
"message": "Video is still processing"
}
Example response (203):
{
"message": "Video not found",
"status": "not_found"
}
Example response (422):
{
"video_id": "f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2",
"status": "failed",
"message": "Video processing failed. Please contact support"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.