Quick Start

Everything you need to start generating videos with the Golpo REST API.

Auth header

x-api-key: YOUR_API_KEY

Content-Type

application/json

Best for

Server-to-server integrations, automation workflows, internal dashboards, partner apps

Prerequisites

Valid API plan · API key issued per workspace · HTTPS requests only

Your API base URL is provided when you create an API key in the dashboard. All requests must be made over HTTPS.

Endpoints

Five REST endpoints covering the full video lifecycle — generate, list, retrieve, update, and delete.

POST/api/v1/videos/generate

Submit a new video generation job with optional music, branding, and research controls.

generate.js
import fetch from "node-fetch";

const API_KEY = "api-key"; // Replace with your Golpo API key

const payload = {
  prompt: "Explain the quarterly roadmap",
  add_music: true,
  bg_volume: 0.3
};

const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key
const response = await fetch(`${BASE_URL}/api/v1/videos/generate`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": API_KEY
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
console.log(data);

Run with: node --env-file=.env generate.js

GET/api/v1/videos

Retrieve paginated videos belonging to the authenticated user.

list-videos.js
import fetch from "node-fetch";

const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key
const response = await fetch(`${BASE_URL}/api/v1/videos?limit=10`, {
  headers: {
    "x-api-key": "api-key"
  }
});

const videos = await response.json();
console.log(videos);

Run with: node --env-file=.env list-videos.js

GET/api/v1/videos/{video_id}

Retrieve metadata for a single video by ID.

get-video.js
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key
const VIDEO_ID = "video_id";

const response = await fetch(`${BASE_URL}/api/v1/videos/${VIDEO_ID}`, {
  headers: { "x-api-key": "api-key" }
});
console.log(await response.json());

Run with: node --env-file=.env get-video.js <video_id>

PATCH/api/v1/videos/{video_id}

Update video metadata. Only 'title' and 'is_public' can be updated.

update-video.js
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key
const VIDEO_ID = "video_id";

const payload = { title: "Updated internal briefing" };

const response = await fetch(`${BASE_URL}/api/v1/videos/${VIDEO_ID}`, {
  method: "PATCH",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": "api-key"
  },
  body: JSON.stringify(payload)
});

console.log(await response.json());

Run with: node --env-file=.env update-video.js <video_id>

DELETE/api/v1/videos/{video_id}

Soft delete a generated video (recoverable via support).

delete-video.js
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key
const VIDEO_ID = "video_id";

const response = await fetch(`${BASE_URL}/api/v1/videos/${VIDEO_ID}`, {
  method: "DELETE",
  headers: { "x-api-key": "api-key" }
});

console.log(await response.json());

Run with: node --env-file=.env delete-video.js <video_id>

GET/api/v1/videos/status/{job_id}

Poll the status endpoint to track generation progress.

job-status.js
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key
const JOB_ID = "job-id";

const response = await fetch(`${BASE_URL}/api/v1/videos/status/${JOB_ID}`, {
  headers: { "x-api-key": "api-key" }
});
console.log(await response.json());

Run with: node --env-file=.env job-status.js <job_id>

Request Body

Full parameter reference for POST /api/v1/videos/generate.

Either prompt or audio_clip is required. All other parameters are optional.
ParameterTypeDefaultRequiredDescription
promptstringRequired
Main prompt/script for the video
upload_urlsarray[string]NoneOptional
URLs of uploaded documents/images or local file paths. Use /upload-file endpoint to get URLs, or provide local paths directly
add_musicbooleanfalseOptional
Intro/outro music toggle
voice_instructionsstring""Optional
Instructions for voice generation
personality_1stringNoneOptional
First personality for podcast
personality_2stringNoneOptional
Second personality for podcast
just_return_scriptbooleanfalseOptional
Only generate script, don't create video/podcast
new_scriptstringNoneOptional
Use provided script instead of generating
do_researchbooleanfalseOptional
Enable research for content generation
stylestring"solo-female"Optional
Content/Narration Style
lengthintegerNoneOptional
Video length in seconds ('deprecated')
use_colorbooleanfalseOptional
Enable color video generation
white_bgbooleantrueOptional
Use white background
flat_background_colorbooleanfalseOptional
Use flat background color
tts_modelstring"accurate"Optional
Text-to-speech model
languagestring"en"Optional
Language code (e.g., 'en', 'es')
bg_musicstringNoneOptional
Background music track
bg_volumefloat1.0Optional
Background music volume (0.0-1.0)
output_volumefloat1.0Optional
Output audio volume (0.0-1.0)
video_typestring"long"Optional
Video type: 'long' or 'short'
audio_onlybooleanfalseOptional
If true, generate podcast/audio only (no video)
timingstringNoneOptional
Video/Podcast timing/duration in minutes (must be numeric)
include_watermarkbooleantrueOptional
Include watermark in video
logostringNoneOptional
Logo URL or local file path. Use /upload-file endpoint to get URLs, or provide local paths directly
logo_placementstring"tl"Optional
Controls where the logo is placed on the video when logo is provided and include_watermark is true. Valid values: 'tl' (top-left, default), 'tr' (top-right), 'bl' (bottom-left), 'br' (bottom-right). Logo is positioned with a 20-pixel margin from edges.
video_instructionsstring""Optional
Specific instructions for video generation
no_voice_chunkingbooleantrueOptional
Disable voice chunking
use_lineart_2_stylestring"false"Optional
Golpo Sketch style selector. Supported: "false" (default), "true", "advanced".
NOTE:Do not use this when use_2_0_style is enabled (Golpo Canvas).
audio_clipstringNoneOptional
URL to audio/video file or local file path to use instead of generating script and TTS. Use /upload-file endpoint to get URLs, or provide local paths directly
user_audio_in_videoarray[integer]NoneOptional
List of video numbers that should use their original audio (e.g., [1, 3] means videos 1 and 3 use original audio)
user_imagesarray[string]NoneOptional
List of image URLs or local file paths to insert into the video. Use /upload-file endpoint to get URLs, or provide local paths directly
user_images_descriptionsarray[string]NoneOptional
List of descriptions for user images (one per image)
use_as_isarray[boolean]NoneOptional
List of booleans indicating whether to use images as-is without AI processing (one per image)
skip_animationarray[boolean]NoneOptional
List of booleans indicating whether to skip animation for images (one per image)
user_videosarray[string]NoneOptional
List of video URLs or local file paths to insert into the video. Use /upload-file endpoint to get URLs, or provide local paths directly
user_videos_descriptionarray[string]NoneOptional
List of descriptions for user videos (one per video)
is_publicbooleanNoneOptional
Whether the video should be public (True) or private (False). If not provided, defaults to None.
use_2_0_stylebooleanfalseOptional
Enable Golpo Canvas (Earlier Golpo 2.0) style video generation.
NOTE:Use image_style to set the visual style for Golpo Canvas — if not provided, the default style will be used. Do not pass use_lineart_2_style when this is enabled.
image_stylestringNoneOptional
Image style for Golpo Canvas (2.0): 'neon', 'whiteboard', 'modern_minimal', 'playful', 'technical', or 'editorial'.
NOTE:Only applicable for Golpo Canvas (use_2_0_style). Do not use with Golpo Sketch.
input_imagesarray[string]NoneOptional
List of input image URLs or local file paths for Golpo Canvas. Use this when you want to solve a problem visually or base the video on specific images — the video will be generated around the provided images.
NOTE:Only applicable for Golpo Canvas (use_2_0_style). Do not use with Golpo Sketch.
pen_stylestringNoneOptional
Pen cursor style: 'stylus', 'marker', or 'pen'.
NOTE:Only applicable for Golpo Canvas (use_2_0_style). Do not use with Golpo Sketch.
show_pencil_cursorbooleanfalseOptional
Show a pencil cursor during sketch animations. If enabled, set pen_style to choose the cursor appearance.
NOTE:Only applicable for Golpo Canvas (use_2_0_style). Do not use with Golpo Sketch.
pacingstring"normal"Optional
Pacing level for Golpo sketch: 'normal' (15s max per frame), 'fast' (10s max per frame).
NOTE:Only applicable for Golpo Sketch (use_lineart_2_style). Do not use with Golpo Canvas.

Parameter Groups

Parameters organized by purpose for easier discovery.

Content

promptaudio_clipnew_scriptupload_urlsdo_researchstyleinput_images

Audio

add_musicbg_musicbg_volumeoutput_volumeuser_audio_in_video

Voice

voice_instructionstts_modellanguageno_voice_chunkingpersonality_1personality_2

Visual

use_colorwhite_bgflat_background_coloruse_lineart_2_styleuse_2_0_styleimage_styleuser_imagesuser_images_descriptionsuse_as_isskip_animationpen_styleshow_pencil_cursor

Video Assets

user_videosuser_videos_description

Duration

lengthtimingvideo_typeaudio_onlypacing

Branding

include_watermarklogologo_placement

Workflow

video_instructionsjust_return_scriptis_public

Upload File

Use /api/v1/videos/upload-file to get a hosted URL before calling /generate.

Content-Type:multipart/form-data
FieldTypeRequiredDescription
fileFileYesSingle file to upload (file metadata is used to generate presigned URL)

Documents

PDF · DOCX · PPTX · TXT

Audio

MP3 · WAV · M4A · OGG

Video

MP4 · MOV · AVI · MKV

Images

JPG · PNG · GIF · WEBP

upload-response.json
// Response from POST /api/v1/videos/upload-file
{
  "upload_url":   "https://...",  // Presigned PUT URL — upload the file here
  "file_url":     "https://...",  // Pass this into /generate
  "content_type": "application/pdf"
}
upload-file.js
const API_KEY = "api-key";
const BASE_URL = "{BASE_URL}";

// Step 1: Get presigned URL
async function uploadFile(file) {
  const formData = new FormData();
  formData.append('file', file);

  const response = await fetch(`${BASE_URL}/api/v1/videos/upload-file`, {
    method: 'POST',
    headers: { 'x-api-key': API_KEY },
    body: formData
  });

  const { upload_url, file_url, content_type } = await response.json();

  // Step 2: Upload file to presigned URL
  await fetch(upload_url, {
    method: 'PUT',
    headers: { 'Content-Type': content_type },
    body: file
  });

  // Step 3: Return file_url for use in /generate
  return file_url;
}

// Usage
const fileInput = document.querySelector('#file-input');
const fileUrl = await uploadFile(fileInput.files[0]);
console.log('File uploaded, URL:', fileUrl);
// Use fileUrl in your /generate request

User Assets

Upload images or videos to embed directly into the generated video.

NOTE:user_images and user_videos accept the file_url returned by /upload-file. Descriptions are strongly recommended for best visual results.
generate-with-user-assets.js
const API_KEY = "api-key";
const BASE_URL = "{BASE_URL}";

// Helper function to upload a file
async function uploadFile(file) {
  const formData = new FormData();
  formData.append('file', file);

  const response = await fetch(`${BASE_URL}/api/v1/videos/upload-file`, {
    method: 'POST',
    headers: { 'x-api-key': API_KEY },
    body: formData
  });

  const { file_url } = await response.json();
  return file_url;
}

// Step 1: Upload images
const image1Url = await uploadFile(imageFile1);
const image2Url = await uploadFile(imageFile2);

// Step 2: Upload video
const video1Url = await uploadFile(videoFile1);

// Step 3: Generate video with user assets
const generatePayload = {
  prompt: "Create a product showcase video",
  user_images: [image1Url, image2Url],
  user_images_descriptions: [
    "Product front view with logo",
    "Product in use by customer"
  ],
  use_as_is: [false, false], // Process both images with AI
  skip_animation: [false, true], // Animate first image, skip animation for second
  user_videos: [video1Url],
  user_videos_description: ["Customer testimonial video"],
  video_type: "long",
  include_watermark: false
};

const generateResponse = await fetch(`${BASE_URL}/api/v1/videos/generate`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': API_KEY
  },
  body: JSON.stringify(generatePayload)
});

const result = await generateResponse.json();
console.log('Job ID:', result.job_id);

Local Paths

Pass absolute or relative file paths directly from server-side environments — no upload step required.

NOTE:Local paths are only supported in server-side environments where the API server has filesystem access. Not for browser or client-side use.
generate-with-local-paths.js
import fetch from "node-fetch";
import path from "path";

const API_KEY = "api-key";
const BASE_URL = "{BASE_URL}";

// Example: Using local file paths (server-side only)
// Paths are relative to where the script runs or absolute paths
const payload = {
  prompt: "Create a comprehensive product demo video",
  upload_urls: [
    "./documents/product-spec.pdf",        // Relative path (Linux/Mac/Windows)
    "C:\\Users\\Documents\\brief.docx",  // Windows absolute path
    "/home/user/documents/slides.pptx",    // Linux/Mac absolute path
    "~/Documents/research.txt"             // Home directory expansion (Linux/Mac)
  ],
  logo: "./assets/company-logo.png",
  user_images: [
    "./images/product-front.jpg",
    "./images/product-in-use.jpg"
  ],
  user_images_descriptions: [
    "Product front view with branding",
    "Product being used by customer"
  ],
  use_as_is: [false, false],
  skip_animation: [false, true],
  style: "solo-female",
  bg_music: "engaging",
  bg_volume: 1.2,
  video_type: "long",
  include_watermark: false,
  use_color: true,
  language: "en",
  timing: "5"
};

const response = await fetch(`${BASE_URL}/api/v1/videos/generate`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": API_KEY
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
console.log("Job ID:", data.job_id);

Note: Local paths work when the API server can access these files. For remote clients, use /upload-file endpoint first.

Language Quickstarts

Ready-to-run examples for the most common video generation patterns.

Upload Workflow

Full pattern: upload supporting files, then generate a video in any language.

generateVideoWithUploads.js
const API_KEY = "api-key";
const BASE_URL = "{BASE_URL}";

// Step 1: Upload files
async function uploadFile(file) {
  const formData = new FormData();
  formData.append('file', file);

  const response = await fetch(`${BASE_URL}/api/v1/videos/upload-file`, {
    method: 'POST',
    headers: { 'x-api-key': API_KEY },
    body: formData
  });

  const { file_url } = await response.json();
  return file_url;
}

// Step 2: Upload all files and get URLs
const fileInput = document.querySelector('#uploads');
const uploadPromises = Array.from(fileInput.files).map(file => uploadFile(file));
const uploadUrls = await Promise.all(uploadPromises);

// Step 3: Generate video with uploaded files
const generatePayload = {
  prompt: 'Summarize this slide deck for executives',
  upload_urls: uploadUrls,
  add_music: true,
  style: 'professional',
  language: 'spanish'
};

const response = await fetch(`${BASE_URL}/api/v1/videos/generate`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': API_KEY
  },
  body: JSON.stringify(generatePayload)
});

const result = await response.json();
console.log('Generation started:', result);

Attach files via <input id="uploads" type="file" multiple /> before calling this helper.

Golpo Sketch

use_lineart_2_style

Whiteboard-style sketch animation with pacing control — normal (15s/frame) or fast (10s/frame).

golpo-sketch.js
import fetch from "node-fetch";

const API_KEY = "api-key"; // Replace with your Golpo API key
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key

const payload = {
  prompt: "Explain how neural networks work",
  use_lineart_2_style: "true", // Use "advanced" for the advanced sketch style
  pacing: "normal",            // "normal" (15s max) or "fast" (10s max)
  bg_music: "engaging",
  bg_volume: 1.2,
  include_watermark: false
};

const response = await fetch(`${BASE_URL}/api/v1/videos/generate`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": API_KEY
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
console.log("Job ID:", data.job_id);

Run with: node --env-file=.env golpo-sketch.js

Golpo Canvas

use_2_0_style

Canvas-based video with rich image styles (neon, whiteboard, editorial…) and optional pencil cursor.

golpo-canvas.js
import fetch from "node-fetch";

const API_KEY = "api-key"; // Replace with your Golpo API key
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key

const payload = {
  prompt: "Create a product overview video",
  use_2_0_style: true,
  image_style: "modern_minimal", // "neon", "whiteboard", "modern_minimal", "playful", "technical", "editorial"
  include_watermark: false
};

const response = await fetch(`${BASE_URL}/api/v1/videos/generate`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": API_KEY
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
console.log("Job ID:", data.job_id);

Run with: node --env-file=.env golpo-canvas.js

Generate Video

POST /api/v1/videos/generate

Submit a new video generation job with optional music, branding, and research controls.

generate.js
import fetch from "node-fetch";

const API_KEY = "api-key"; // Replace with your Golpo API key
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key

const payload = {
  prompt: "Explain the quarterly roadmap",
  add_music: true,
  bg_volume: 0.3
};

const response = await fetch(`${BASE_URL}/api/v1/videos/generate`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": API_KEY
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
console.log(data);

Run with: node --env-file=.env generate.js

List Videos

GET /api/v1/videos

Retrieve paginated videos belonging to the authenticated user.

list-videos.js
import fetch from "node-fetch";

const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key

const response = await fetch(`${BASE_URL}/api/v1/videos?limit=10`, {
  headers: {
    "x-api-key": "api-key"
  }
});

const videos = await response.json();
console.log(videos);

Run with: node --env-file=.env list-videos.js

Get Video

GET /api/v1/videos/{video_id}

Retrieve metadata for a single video by ID.

get-video.js
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key
const VIDEO_ID = "video_id";

const response = await fetch(`${BASE_URL}/api/v1/videos/${VIDEO_ID}`, {
  headers: { "x-api-key": "api-key" }
});
console.log(await response.json());

Run with: node --env-file=.env get-video.js <video_id>

Update Video

PATCH /api/v1/videos/{video_id}

Update video metadata. Only 'title' and 'is_public' can be updated.

update-video.js
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key
const VIDEO_ID = "video_id";

const payload = { title: "Updated internal briefing" };

const response = await fetch(`${BASE_URL}/api/v1/videos/${VIDEO_ID}`, {
  method: "PATCH",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": "api-key"
  },
  body: JSON.stringify(payload)
});

console.log(await response.json());

Run with: node --env-file=.env update-video.js <video_id>

Delete Video

DELETE /api/v1/videos/{video_id}

Delete a generated video.

delete-video.js
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key
const VIDEO_ID = "video_id";

const response = await fetch(`${BASE_URL}/api/v1/videos/${VIDEO_ID}`, {
  method: "DELETE",
  headers: { "x-api-key": "api-key" }
});

console.log(await response.json());

Run with: node --env-file=.env delete-video.js <video_id>

Job Status

GET /api/v1/videos/status/{job_id}

Poll the status endpoint to track generation progress.

job-status.js
const BASE_URL = "{BASE_URL}"; // You will receive this when creating an API key
const JOB_ID = "job-id";

const response = await fetch(`${BASE_URL}/api/v1/videos/status/${JOB_ID}`, {
  headers: { "x-api-key": "api-key" }
});
console.log(await response.json());

Run with: node --env-file=.env job-status.js <job_id>

Uploads + Multi-language

Combine file uploads with video generation in any of the 44+ supported languages.

LanguageExample prompt
English (en)Explain our Q3 product roadmap
Spanish (es)Explica la hoja de ruta del producto del tercer trimestre
Hindi (hi)तीसरी तिमाही के उत्पाद रोडमैप को समझाएं
French (fr)Expliquez la feuille de route produit du troisième trimestre

Set the language parameter to any supported value — e.g. en, es, hi, fr. See for all 44+ codes.

Timing

Timing parameter reference — provide duration in minutes as a float.

ValueDuration
0.2515 seconds
0.530 seconds
11 minute
22 minutes
44 minutes
88 minutesBeta
1010 minutesBeta
Supported values: 0.25, 0.5, 1, 2, 4, 8, 10.

Video Type

Controls the video aspect ratio and orientation.

ValueFormatDimensionsAspect RatioUse Cases
"short"Vertical / Portrait1024×1536 px9:16TikTok, Instagram Reels, YouTube Shorts
"long"Horizontal / Landscape (Default)1536×1024 px16:9YouTube, standard video content
9:16

short

1024×1536 px

16:9

long (default)

1536×1024 px

Style & Voices

The style parameter controls both script format and voice selection.

Script Format

ValueScript FormatRequirements
"conversational"Multi-speaker podcast (Default)Requires personality_1 and personality_2
Any other valueSingle narrator format

Voice Selection

ValueVoice TypeDescription
"conversational"Multi-speaker voicesUses Joe and Sarah voices
"solo-male"Single male narratorSingle male narrator voice
"solo-male-2"Single male narrator (alt)Alternative single male narrator voice
"solo-female"Single female narratorSingle female narrator voice
"solo-female-2"Single female narrator (alt)Alternative single female narrator voice
NOTE:Auto-adjustment: If video_type is set (not None) and style == "conversational", the system automatically converts style to "solo-female" before processing.
Timing behavior: When style == "conversational" and generating a podcast (audio_only=true or video_type=None), the system ignores the provided timing parameter and generates the podcast “as long as needs be.” This can result in longer duration podcasts than specified.

TTS Model

Choose the narration model — accurate is the default for highest quality.

ValueDescription
"accurate"Highest quality narration with natural prosody; slightly slower and higher cost. (Default)
"flash"Faster, lower-cost synthesis with a flatter delivery. Auto-fallback when accurate fails.
Any string other than accurate is treated as flash. Errors from accurate automatically retry with flash.

Background Music

Send the bg_music field in your JSON body using one of the following keys.

bg_music keyMood / Usage
"jazz"Warm, neutral bed
"lofi"Calm, study vibes
"whimsical"Playful, upbeat
"dramatic"Cinematic tension
"engaging"Subtle corporate pulse
"hyper"High-energy electronic
"inspirational"Uplifting orchestral
"documentary"Serious factual tone

Voice Instructions

Describe how the voice should sound — accent, tone, or pronunciation style.

Pass a free-form string in the voice_instructions field to guide voice generation. The AI will adjust accent, tone, pace, and delivery accordingly.

voice-instructions-example.json
{
  "prompt": "Explain quantum computing basics",
  "voice_instructions": "Speak in a warm British accent with a calm, professorial tone. Pause slightly between key concepts for emphasis.",
  "style": "solo-male"
}

More examples

Talk in a French accent
Use an enthusiastic, energetic tone
Talk like a professor — measured and articulate
Speak slowly and clearly, like a meditation guide
Fast-paced sports commentator style
Friendly and casual, like chatting with a friend

Video Instructions

Describe how the video should look — visuals, style, and scene direction.

Pass a free-form string in the video_instructions field to guide the visual generation. The AI will adjust scene composition, imagery, and visual style accordingly.

video-instructions-example.json
{
  "prompt": "Company quarterly results overview",
  "video_instructions": "Use clean corporate visuals with data charts and graphs. Include stock footage of modern office environments. Prefer blue and white color palette.",
  "style": "solo-female"
}

More examples

Show more graphs and charts
Include more stock footage
Use cinematic transitions
Female presenter in an office setting
Urban background with modern architecture
Dark moody aesthetic with neon accents

Golpo Sketch Styles

The use_lineart_2_style parameter controls the whiteboard sketch animation style.

ValueStyle NameDescription
"false"Classic (Default)Original Golpo Sketch — classic whiteboard line-art animation
"true"Improved BetaImproved line-art with cleaner strokes and a more polished look
"advanced"FormalAdvanced sketch generation with higher detail and refined aesthetics
Do not combine use_lineart_2_style with use_2_0_style. Use one or the other.

Golpo Canvas Styles

Enable Golpo Canvas with use_2_0_style and configure image_style and pen_style.

Set use_2_0_style: true to enable Golpo Canvas. Then use image_style to set the visual look and optionally pen_style to add a drawing cursor effect.

Pen Style

ValueDescription
"none"No pen cursor (Default)
"stylus"Thin stylus pen cursor
"marker"Thick marker cursor
"pen"Classic pen cursor
NOTE:pen_style and image_style are only applicable for Golpo Canvas (use_2_0_style: true). Do not use with Golpo Sketch.

Image Style

Controls the visual style of Golpo Canvas videos. Only applicable when use_2_0_style is true.

ValueLabelDescription
"chalkboard_white"Chalkboard (B/W)Black & white chalkboard style (Default)
"neon"Chalkboard ColorColorful neon chalkboard style
"whiteboard"WhiteboardClean whiteboard illustrations
"modern_minimal"Modern MinimalSleek, minimal modern aesthetic
"playful"PlayfulFun, colorful playful illustrations
"technical"TechnicalTechnical diagram style
"editorial"EditorialMagazine/editorial illustration style
"marker"SharpieBold marker/sharpie drawn style
golpo-canvas-example.json
{
  "prompt": "How solar panels convert sunlight to electricity",
  "use_2_0_style": true,
  "image_style": "modern_minimal",
  "pen_style": "stylus",
  "timing": 2
}

HTTP Status Codes

Standard HTTP codes returned by all endpoints.

CodeMeaningRecovery
200Successful GET, PATCH, or DELETEConsume response payload
201Video generation request acceptedPoll the status endpoint
401Missing or invalid authenticationRefresh token / validate API key
403Plan does not allow requested actionUpgrade plan or contact support
404Video / job not foundVerify identifiers belong to the account
422Validation failure (bad payload)Inspect detail array in response
429Rate limit exceededBack off and retry with exponential delay
500Unexpected server errorRetry later; contact support if persistent

Error Response Format

All 4xx and 5xx responses return a structured JSON body.

error-response.json
{
  "message": "Validation error",
  "detail": [
    {
      "loc":  ["body", "prompt"],
      "msg":  "prompt cannot be empty when audio_clip is missing",
      "type": "value_error"
    }
  ]
}

For 4xx failures, inspect the detail array to surface validation errors directly in your UI or logs.

Language Support

44+ languages supported via the language parameter.

LanguageAccepted valuesNote
Englishenglish or enDefault when omitted
Hindihindi or hi
Spanishspanish or es
Frenchfrench or fr
Germangerman or de
Italianitalian or it
Portugueseportuguese or pt
Russianrussian or ru
Japanesejapanese or ja
Koreankorean or ko
Chinese / Mandarinchinese, mandarin, or zhBoth map to zh
Arabicarabic or ar
Dutchdutch or nl
Polishpolish or pl
Turkishturkish or tr
Swedishswedish or sv
Danishdanish or da
Norwegiannorwegian or no
Finnishfinnish or fi
Greekgreek or el
Czechczech or cs
Hungarianhungarian or hu
Romanianromanian or ro
Thaithai or th
Vietnamesevietnamese or vi
Indonesianindonesian or id
Malaymalay or ms
Tamiltamil or ta
Telugutelugu or te
Bengalibengali or bn
Marathimarathi or mr
Gujaratigujarati or gu
Kannadakannada or kn
Malayalammalayalam or ml
Punjabipunjabi or pa
Urduurdu or ur
Usage-Based Plan

API Only Tier

Usage-based pricing with volume discounts

About this plan

This plan is for using Golpo within your program or application. You will not be able to use the Golpo platform to generate videos manually.

This is a usage-based plan with a minimum cost of $200 to enter. Perfect for developers and businesses who need programmatic access to video generation.

Pay only for what you use — volume-based pricing that gets better as you scale.

Platform access (manual video creation via the dashboard) is not included in this plan. If you need both platform + API access, contact us.

Pricing Rates

Credit Conversion

$1

USD

1 Credit

Golpo credit

ResourceCost
1 min videoVideo generation2 Credits= $2.00

Volume discounts apply at higher usage tiers. Contact us for enterprise rates.

Minimum entry: $200 (200 credits = ~100 minutes of video)