Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
const token = "<paste-your-token-here>";
const api = "https://app.colossyan.com/api/v1";
const job = {
videoCreative: {
settings: {
name: "My first video",
videoSize: {
width: 1920,
height: 1080
}
},
scenes: [
{
tracks: [
{
type: "actor",
position: { x: 420, y: 0 },
size: { width: 1080, height: 1080 },
actor: "karen",
text: "This is my first video generated with Colossyan! Amazing!",
speakerId: "aquXcfLbkxpW4BBI5qKm"
}
]
}
]
}
};
const response = await fetch(`${api}/video-generation-jobs`, {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify(job),
});
const result = await response.json();
console.log(result); // { id, videoId }
feature_name

{
"dynamicVariables": {
"name": "John",
"feature_name": "AI-powered task automation",
},
// other request parameters...
}{
"dynamicVariables": {
"name": "John",
"cool_stuff_1": "AI-powered task automation",
"cool_stuff_1": "Slack & Google Calendar integration",
},
// other request parameters...
}
const response = await fetch(`${api}/video-generation-jobs`, {
method: "POST",
headers: {
Authorization: `Bearer ${token}`, // Authentication
"Content-Type": "application/json",
},
body: JSON.stringify(job),
});
const token = "<your-token-here>";
const jobId = "<your-job-id-here>";
const videoId = "<your-video-id-here>";
const jobUrl = `https://app.colossyan.com/api/v1/video-generation-jobs/${jobId}`;
const videoUrl = `https://app.colossyan.com/api/v1/generated-videos/${videoId}`;
async function pollStatus() {
const jobResponse = await fetch(jobUrl, {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
});
const result = await jobResponse.json();
const status = result.status;
if (status !== "finished" && status !== "failed") {
console.log(
`Video status: ${status}, progress: ${result.progress}/${result.maximumProgress}`
);
setTimeout(pollStatus, 5000); // Retry every 5 seconds
} else {
const videoResponse = await fetch(videoUrl, {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
});
const result = await videoResponse.json();
console.log(result);
}
}
pollStatus();const job = {
videoCreative: {
settings: {
name: "Simple video with a single scene",
videoSize: { height: 1080, width: 1920 },
},
scenes: [
{
name: "Scene with explicit duration",
duration: 2000, // ms
tracks: [
{
type: "actor",
position: { x: 200, y: 200 }, // From the top left in pixels
size: { height: 680, width: 1520 }, // In pixels
text: "This scene is exactly two seconds long. It does not matter how long any of the tracks are.",
speakerId: "en-GB-RyanNeural",
actor: "ryan",
},
],
},
],
},
};const job = {
videoCreative: {
settings: {
name: "Simple video with a single scene",
videoSize: { height: 1080, width: 1920 },
},
scenes: [
{
name: "This scene lasts until the actor stops speaking",
intrinsicDurationTrackReference: "speech",
tracks: [
{
type: "actor",
referenceId: "speech",
position: { x: 200, y: 200 }, // From the top left in pixels
size: { height: 680, width: 1520 }, // In pixels
text: "It does not matter how long I am talking. The scene will last as long as necessary.",
speakerId: "en-GB-RyanNeural",
actor: "ryan",
},
],
},
],
},
};const job = {
videoCreative: {
settings: {
name: "Simple video with a single scene",
videoSize: { height: 1080, width: 1920 },
},
scenes: [
{
name: "This scene defaults to last until the end of the video",
tracks: [
{
type: "video",
position: { x: 200, y: 200 }, // From the top left in pixels
size: { height: 680, width: 1520 }, // In pixels
videoUrl: "https://your.cdn.com/public/videos/some_video.mp4",
},
],
},
],
},
};const job = {
videoCreative: {
settings: {
name: "Simple video with a single scene",
videoSize: { height: 1080, width: 1920 },
},
scenes: [
{
name: "Scene with a single track with an explicitly set duration",
tracks: [
{
type: "image",
duration: 3000, // in ms
position: { x: 200, y: 200 }, // From the top left in pixels
size: { height: 680, width: 1520 }, // In pixels
imageUrl: "https://your.cdn.com/public/videos/image.jpg",
},
],
},
],
},
};const job = {
videoCreative: {
settings: {
name: "Simple video with a single scene",
videoSize: { height: 1080, width: 1920 },
},
scenes: [
{
name: "Scene with a single track with a duration set by startTimeGap and endTimeGap",
duration: 5000,
tracks: [
{
type: "image",
startTimeGap: 1000, // ms
endTimeGap: 2000, // ms
position: { x: 200, y: 200 }, // From the top left in pixels
size: { height: 680, width: 1520 }, // In pixels
imageUrl: "https://your.cdn.com/public/videos/image.jpg",
},
],
},
],
},
};const job = {
videoCreative: {
settings: {
name: "Simple video with a single scene",
videoSize: { height: 1080, width: 1920 },
},
scenes: [
{
name: "Scene with a single track with an intrinsic duration",
tracks: [
{
type: "video",
position: { x: 200, y: 200 }, // From the top left in pixels
size: { height: 680, width: 1520 }, // In pixels
imageUrl: "https://your.cdn.com/public/videos/some_video.mp4",
},
],
},
],
},
};Main title of the content. It's going to be the title of the draft.
Description of the content. Helps to understand the content better.
Title of the scene.
The exact script of the scene.
Search terms that our system is going to use to find relevant stock images and videos.
The ID of the template to use. If not provided, the system will randomly select one.
Draft generated and created successfully
URL of the created draft.
Bad Request. Invalid input data.
No content
Unauthorized. Authentication required.
Internal server error.
Submits a new video generation job using a template
The ID of the template job.
Dynamic variables to be loaded into the template.
URL for the callback after job completion.
Callback payload to return with the generated video once it's ready.
Job created successfully
The ID of the created video-generation-job.
The provisioned ID of the generated video.
Bad Request. Invalid input data.
No content
Unauthorized. Authentication required.
Internal server error.
Fetches a list of voices that the user has access to.
A list of voices
The sample audio URL for the voice.
The genders the voice is recommended to be used with.
The internal name of the voice.
The style of the voice.
The scenarios in which the voice is recommended to be used.
The display name of the voice.
The languages supported by the voice.
Whether the voice is cloned or not.
Unauthorized. Authentication required.
Internal server error.
Submits a new video generation job for processing.
Dynamic variables to be loaded into the template.
URL for the callback.
Payload for the callback.
Width of the video in pixels
Height of the video in pixels
Name of the video
Whether to attach the alpha-channel to the video or not. If true, only single-scene videos containing a single actor tracks are supported.
Name of the scene.
Duration of the scene.
Reference to a track's referenceId in the scene. If the referenced track has a duration, the scene duration will be the same as the track duration.
Type of transition.
Duration of the transition.
Type of track.
The name field of the actor
A publicly accessible URL to the audio file that the actor will speak.
Text content for the actor to speak.
The name of the voice to use.
X-coordinate of the track.
Y-coordinate of the track.
Width of the track in pixels.
Height of the pixels.
Rotation of the track. (-359 to 359)
Reference ID of the track.
Type of track.
A publicly accessible URL to the image file.
X-coordinate of the track.
Y-coordinate of the track.
Width of the track in pixels.
Height of the pixels.
Rotation of the track. (-359 to 359)
Reference ID of the track.
Type of track.
URL of the video.
Volume level.
X-coordinate of the track.
Y-coordinate of the track.
Width of the track in pixels.
Height of the pixels.
Rotation of the track. (-359 to 359)
Reference ID of the track.
Type of track.
Text content.
Font size.
Color of the text.
Background color of the text.
X-coordinate of the track.
Y-coordinate of the track.
Width of the track in pixels.
Height of the pixels.
Rotation of the track. (-359 to 359)
Reference ID of the track.
Type of track.
A publicly accessible URL to the audio file.
Volume level for the audio track.
Job created successfully
The ID of the created job.
The provisioned ID of the generated video.
Bad Request. Invalid input data.
No content
Unauthorized. Authentication required.
Internal server error.
POST /api/knowledge-to-draft/generate-draft HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 136
{
"summary": {
"title": "text",
"description": "text",
"chapters": [
{
"title": "text",
"script": "text",
"searchTerms": "text"
}
]
},
"templateId": "text"
}https://app.colossyan.com/api/v1https://app.colossyan.com/api{
"url": "text"
}{
"id": "text",
"videoId": "text"
}POST /api/v1/video-generation-jobs/template-jobs HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 88
{
"templateJobId": "text",
"dynamicVariables": {},
"callbackUrl": "text",
"callbackPayload": {}
}GET /api/v1/assets/voices HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"sample": "text",
"genders": [
"text"
],
"characters": [
"text"
],
"name": "text",
"ages": [
"text"
],
"features": {
"pitch": true,
"emphasize": true,
"pause": true,
"speed": true
},
"style": "text",
"scenarios": [
"text"
],
"displayName": "text",
"languages": [
"text"
],
"isClonedVoice": true
}
]{
"id": "text",
"videoId": "text"
}POST /api/v1/video-generation-jobs HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 505
{
"dynamicVariables": {},
"callback": "text",
"callbackPayload": {},
"videoCreative": {
"settings": {
"videoSize": {
"width": 1,
"height": 1
},
"name": "text",
"alphaChannel": true
},
"scenes": [
{
"name": "text",
"duration": 1,
"intrinsicDurationTrackReference": "text",
"transition": {
"type": "fade",
"duration": 1
},
"tracks": [
{
"type": "actor",
"variant": "full_body",
"view": "front",
"actor": "text",
"audioUrl": "text",
"text": "text",
"speakerId": "text",
"position": {
"x": 1,
"y": 1
},
"size": {
"width": 1,
"height": 1
},
"rotation": 1,
"referenceId": "text"
}
]
}
]
}
}The ID of the generated video.
Generated video details retrieved successfully
The unique identifier of the generated video.
The ID of the video generation job that created this video.
The public URL of the generated video.
URL of the video's thumbnail.
The name of the video.
The date and time the video was created.
The size of the video in bytes.
The duration of the video in seconds.
Bad Request. Invalid videoId parameter.
No content
Unauthorized. Authentication required.
Not Found. Generated video not found.
No content
Internal server error.
Retrieves the status, progress, and details of a specific video generation job.
The ID of the video generation job.
Video generation job status and details retrieved successfully. The return value also contains all of the video-generation-job itself, which is not detailed here.
The current status of the video generation job.
The ID of the provisioned generated video
The current progress of the video generation job.
The maximum progress value of the video generation job.
Bad Request. Invalid videoId parameter.
No content
Unauthorized. Authentication required.
Not Found. Video generation job not found.
No content
Internal server error.
GET /api/v1/generated-videos/{videoId} HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
The ID of the generated video.
Video deleted successfully
Bad Request. Invalid videoId parameter.
No content
Unauthorized. Authentication required.
Not Found. Generated video not found.
No content
Internal server error.
No content
A list of avatars
Key in the database
Display name of the avatar
URL to the avatar's preview video
Age of the avatar
Deprecated field, will be removed in future versions.
Default voice for the avatar
The percentage of the image to crop from the left (0-1)
The percentage of the image to crop from the top (0-1)
The percentage of the image to crop from the right (0-1)
The percentage of the image to crop from the bottom (0-1)
The percentage of the image to crop from the left (0-1)
The percentage of the image to crop from the top (0-1)
The percentage of the image to crop from the right (0-1)
The percentage of the image to crop from the bottom (0-1)
Unauthorized. Authentication required.
Internal server error.
The ID of the video generation job.
Video generation job status and details retrieved successfully. The return value also contains all of the video-generation-job itself, which is not detailed here.
No content
Bad Request. Invalid videoGenerationJobId parameter.
No content
Unauthorized. Authentication required.
Not Found. Video generation job not found.
No content
Internal server error.
No content
The ID of the generated video.
Generated video details retrieved successfully
The unique identifier of the generated video.
The ID of the video generation job that created this video.
The public URL of the generated video.
URL of the video's thumbnail.
The name of the video.
The date and time the video was created.
The size of the video in bytes.
The duration of the video in seconds.
Bad Request. Invalid videoId parameter.
No content
Unauthorized. Authentication required.
Not Found. Generated video not found.
No content
Internal server error.
DELETE /api/v1/generated-videos/{videoId} HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
GET /api/v1/assets/actors HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
{
"name": "text",
"display_name": "text",
"preview_url": "text",
"version": "v1",
"type": "Studio",
"gender": "Male",
"age": 1,
"ethnicity": "Caucasian",
"clothing_style": "Casual",
"quality": "lite",
"emotions": [
"text"
],
"default_voice": "text",
"views": [
{
"viewVariantType": "front",
"aspectRatio": {
"height": 1,
"width": 1,
"ratio": 1
},
"supportedActorTrackVariants": [
"full_body"
],
"supportedInferenceModels": [
"legacy"
],
"pictarSourceUrl": "text",
"images": {
"thumbnail": "text",
"editor": "text",
"editor-happy": "text",
"editor-sad": "text"
},
"videos": {
"base": "text",
"baseTransparent": "text",
"dynamicPreviewUrl": "text"
},
"bubbleVariantDefaults": {
"crop": {
"left": 1,
"top": 1,
"right": 1,
"bottom": 1
}
},
"shoulderVariantDefaults": {
"crop": {
"left": 1,
"top": 1,
"right": 1,
"bottom": 1
}
}
}
],
"features": {
"side_view": true,
"emotions": true,
"hand_gesture": true
}
}
]DELETE /api/v1/video-generation-jobs/{videoGenerationJobId} HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
GET /api/v1/generated-videos/{videoId} HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "text",
"jobId": "text",
"publicUrl": "text",
"thumbnailUrl": "text",
"name": "text",
"createdAt": "2026-04-04T05:19:49.712Z",
"videoSizeBytes": 1,
"videoDurationSeconds": 1
}{
"status": "in_queue",
"videoId": "text",
"progress": 1,
"maximumProgress": 1
}{
"id": "text",
"jobId": "text",
"publicUrl": "text",
"thumbnailUrl": "text",
"name": "text",
"createdAt": "2026-04-04T05:19:49.712Z",
"videoSizeBytes": 1,
"videoDurationSeconds": 1
}GET /api/v1/video-generation-jobs/{videoId} HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Name to be displayed for the avatar
URL to the video or image file for the avatar to be created from
Avatar created successfully.
Bad Request. Invalid input data.
No content
Unauthorized. Authentication required.
Internal server error.
The ID of the video generation job.
Video generation job status and details retrieved successfully. The return value also contains all of the video-generation-job itself, which is not detailed here.
The current status of the video generation job.
The ID of the provisioned generated video
The current progress of the video generation job.
The maximum progress value of the video generation job.
Bad Request. Invalid videoGenerationJobId parameter.
No content
Unauthorized. Authentication required.
Not Found. Video generation job not found.
No content
Internal server error.
POST /api/v1/assets/actors HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 61
{
"displayName": "text",
"sourceFileUrl": "text",
"gender": "Male"
}GET /api/v1/video-generation-jobs/{videoGenerationJobId} HTTP/1.1
Host: app.colossyan.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"name": "text"
}{
"status": "in_queue",
"videoId": "text",
"progress": 1,
"maximumProgress": 1
}