Golpo Python SDK

v0.9.9 — LatestPython 3.8+

The Golpo Python SDK helps you create whiteboard animation explainer videos from text prompts and documents. Features include uploading any document, choosing timing, voice instructions, background music, speaker personalities, and more.

Installation

Terminal
pip install golpo

Quick Start

Create a Golpo client with your API key.

quickstart.py
from golpo import Golpo

golpo_client = Golpo(api_key="your-api-key")

create_video

Stable

Uploads files, starts video generation, polls until completion, and returns a GenerationResult.

Method Signature

method_signature.py
result = golpo_client.create_video(
    prompt: str,
    uploads: Optional[Union[str, Path, Iterable[Union[str, Path]]]] = None,
    *,
    voice_instructions: Optional[str] = None,
    personality_1:      Optional[str] = None,
    do_research:        bool = False,
    tts_model:          str = "accurate",
    language:           Optional[str] = None,
    style:              Optional[str] = "solo-female",
    bg_music:           Optional[str] = "engaging",
    bg_volume:          float = 1.4,
    video_type:         Optional[str] = "long",
    include_watermark:  bool = True,
    new_script:         Optional[str] = None,
    just_return_script: bool = False,
    logo:               Optional[Union[str, Path]] = None,
    timing:             str = "1",
    poll_interval:      int = 2,
    max_workers:        int = 8,
    output_volume:      float = 1.0,
    video_instructions: Optional[str] = None,
    use_color:          bool = False,
) -> GenerationResult  # .url, .script, .video_id

Returns

GenerationResult with:

  • url(str)Direct HTTPS URL to your final video (MP4)
  • script(str)The generated script text used for the video
  • video_id(str)Job ID — use with get_frame_animations or edit_video

Parameters

ParameterTypeDefaultRequiredDescription
promptstrRequired
Topic or question for the video.
uploadsstr, Path, or iterableNoneOptional
Local file paths or remote URLs (https://, http://, s3://).
voice_instructionsstrNoneOptional
Voice style instructions, e.g. "calm female".
personality_1strNoneOptional
Primary narrator persona, e.g. "historian".
do_researchboolFalseOptional
Enable web research to supplement input documents.
tts_model"accurate" | "fast""accurate"Optional
Choose "accurate" for high quality, "fast" for quicker results.
languagestr"en"Optional
Any language string ("en", "English", "Hindi", etc.).
stylestr"solo-female"Optional
"solo-male" or "solo-female".
bg_musicstr"engaging"Optional
"engaging", "none", "jazz", "dramatic", or "lofi".
bg_volumefloat1.4Optional
Background music volume (0.0–2.0). Used when bg_music is not "none".
output_volumefloat1.0Optional
Final output audio volume.
video_typestr"long"Optional
Controls video aspect ratio. "short" for vertical/portrait (9:16, 1024×1536 px), "long" for horizontal/landscape (16:9, 1536×1024 px).
include_watermarkboolTrueOptional
Include Golpo watermark in the video.
logostr or PathNoneOptional
Path to logo file or URL to include in the video.
timingstr"1"Optional
Timing parameter for video pacing.
new_scriptstrNoneOptional
Use this script instead of generating one automatically.
just_return_scriptboolFalseOptional
If True, only generate and return the script; do not create video.
use_colorboolFalseOptional
Create color videos.
video_instructionsstrNoneOptional
Custom instructions for video generation and visual style.
poll_intervalint2Optional
Seconds between status polls while waiting for completion.
max_workersint8Optional
Max concurrent workers for local file uploads.

Usage Examples

Simple example (prompt only)

Basic
simple_example.py
result = golpo_client.create_video(prompt="Explain quantum computing simply")
print(f"Video URL: {result.url}")
print(f"Script:    {result.script}")
print(f"Video ID:  {result.video_id}")

Video from local files

Advanced
local_files.py
result = golpo_client.create_video(
    prompt="Summarize these privacy documents",
    uploads=["~/Documents/privacy_policy.pdf"],
    voice_instructions="calm professional female",
    personality_1="privacy expert",
    bg_music="engaging",
    include_watermark=False,
)
print(f"Video URL: {result.url}")

Video from remote URLs

Advanced
remote_urls.py
result = golpo_client.create_video(
    prompt="Analyze these articles",
    uploads=[
        "https://example.com/article1.pdf",
        "https://example.com/article2.pdf",
    ],
    do_research=True,
    personality_1="historian",
    style="solo-male",
    video_type="long",
)
print(f"Video URL: {result.url}")

Custom branding with logo

Advanced
custom_branding.py
result = golpo_client.create_video(
    prompt="Combine these documents into an educational video",
    uploads=["~/local.pdf", "https://example.com/remote.pdf"],
    logo="~/company_logo.png",
    include_watermark=False,
    bg_music="dramatic",
    bg_volume=1.2,
)
print(f"Video URL: {result.url}")

Using a custom script

Custom
custom_script.py
custom_script = """
Welcome to our presentation on artificial intelligence.
Today we'll explore the fascinating world of machine learning.
First, let's understand what AI actually means...
"""

result = golpo_client.create_video(
    prompt="Create a video about AI",
    new_script=custom_script,
    style="solo-female",
    bg_music="engaging",
    include_watermark=False,
)
print(f"Video URL: {result.url}")

Complete 10-minute video

Complete
complete_example.py
from golpo import Golpo

golpo_client = Golpo(api_key="your-api-key-here")

result = golpo_client.create_video(
    prompt="Create a comprehensive analysis of these business documents",
    uploads=[
        "~/Documents/business_plan.pdf",
        "~/Documents/financial_report.xlsx",
        "~/Documents/market_research.docx",
    ],
    timing="10",
    use_color=True,
    style="solo-female",
    bg_music="engaging",
    bg_volume=1.3,
    include_watermark=False,
    video_type="long",
)

print(f"Video URL:       {result.url}")
print(f"Script preview:  {result.script[:200]}...")

get_frame_animations

Returns a dict mapping frame IDs to MP4 animation URLs.

Method Signature

get_frame_animations.py
frame_animations: Dict[str, str] = golpo_client.get_frame_animations(video_id: str)

Parameters

ParameterTypeDefaultRequiredDescription
video_idstrRequired
The video/job ID returned from create_video.

Returns

Dict[str, str] — frame IDs (e.g. "0", "1") mapped to MP4 animation URLs.

Example

example_get_frame_animations.py
result = golpo_client.create_video(prompt="Explain AI in 2 minutes")
animations = golpo_client.get_frame_animations(result.video_id)

for frame_id, url in sorted(animations.items(), key=lambda x: int(x[0])):
    print(f"Frame {frame_id}: {url}")

edit_video

Edits specific frames using text prompts, then optionally combines them.

Method Signature

edit_video.py
result = golpo_client.edit_video(
    video_id:         str,
    frame_ids:        List[str],
    edit_prompts:     List[str],
    video_url:        str,
    *,
    reference_images: Optional[List[str]] = None,
    user_id:          Optional[str] = None,
    poll_interval_ms: int = 2000,
    auto_combine:     bool = False,
) -> VideoEditResult  # .video_url, .job_id

Parameters

ParameterTypeDefaultRequiredDescription
video_idstrRequired
Video/job ID from create_video.
frame_idsList[str]Required
Frame indices to edit (e.g. ["0", "2"]).
edit_promptsList[str]Required
One prompt per frame (same length as frame_ids).
video_urlstrRequired
URL of the original video (result.url from create_video).
reference_imagesList[str]NoneOptional
Reference image URLs for the edit.
user_idstrNoneOptional
User ID for the edit job.
poll_interval_msint2000Optional
Milliseconds between status polls.
auto_combineboolFalseOptional
If True, combine edited frames into a final video with audio.

Returns

VideoEditResult with video_url (str) and job_id (str).

Example

example_edit_video.py
video_result = golpo_client.create_video(prompt="Product demo in 3 scenes")
edit_result  = golpo_client.edit_video(
    video_id=video_result.video_id,
    frame_ids=["1"],
    edit_prompts=["Replace the background with a beach sunset"],
    video_url=video_result.url,
    auto_combine=True,
)
print(f"Edited video URL: {edit_result.video_url}")

combine_videos

Merges multiple MP4 URLs into a single video. Typically used with frame animation URLs from get_frame_animations or after editing frames.

Method Signature

combine_videos.py
result = golpo_client.combine_videos(
    mp4_urls:         List[str],
    *,
    video_url:        Optional[str] = None,
    poll_interval_ms: int = 2000,
) -> CombinedVideoResult  # .url

Parameters

ParameterTypeDefaultRequiredDescription
mp4_urlsList[str]Required
At least one MP4 URL (e.g. from get_frame_animations).
video_urlOptional[str]NoneOptional
Optional original video URL to use for audio.
poll_interval_msint2000Optional
Polling interval in ms while the combine job runs.

Returns

CombinedVideoResulturl (str), the URL of the combined video.

Example

example_combine_videos.py
animations = golpo_client.get_frame_animations(video_id)
mp4_urls   = [animations[k] for k in sorted(animations.keys(), key=int)]
combined   = golpo_client.combine_videos(mp4_urls, video_url=original_video_url)
print(f"Combined video: {combined.url}")

Error Handling

Common exceptions raised by the SDK and how to fix them.

ParameterTypeDefaultRequiredDescription
FileNotFoundErrorOptional
Cause: Incorrect local file paths. Fix: Verify file paths.
HTTPError (413)Optional
Cause: File too large for direct upload. Fix: Upload via URLs or presigned uploads.
HTTPError (422)Optional
Cause: Invalid field data. Fix: Confirm parameter correctness.