[{"data":1,"prerenderedAt":986},["ShallowReactive",2],{"guide-\u002Fguides\u002Fquick-start":3,"developer-code-eb0qrl":972,"developer-code-34eaj7":973,"developer-code-1w80f9x":974,"developer-code-1wjk1yk":975,"developer-code-1obeumo":976,"developer-code-1ag7cua":977,"developer-code-1nifr77":978,"developer-code-1tp71zs":979,"developer-code-1xdn30c":980,"developer-code-yoowr8":981,"developer-code-1xbw2pz":982,"developer-code-1sctawa":983,"developer-code-1m51tx2":984,"developer-code-1cqt0k1":985},{"id":4,"title":5,"body":6,"description":963,"extension":964,"meta":965,"navigation":966,"path":968,"seo":969,"stem":970,"__hash__":971},"guides\u002Fguides\u002Fquick-start.md","Talking Avatar Video API Quickstart",{"type":7,"value":8,"toc":949},"minimark",[9,13,18,34,45,48,75,78,114,125,129,136,210,214,217,233,275,278,281,302,305,332,340,343,350,375,378,436,439,448,452,459,575,616,639,643,646,676,734,737,741,754,775,779,782,916,920,945],[10,11,12],"p",{},"This quickstart creates a complete AI talking-avatar video in five steps. You will authenticate the VisionStory API, submit a text script, poll the asynchronous job, and save the generated MP4 locally.",[14,15,17],"h2",{"id":16},"_1-create-a-visionstory-api-key","1. Create a VisionStory API key",[10,19,20,21,28,29,33],{},"Sign up and create an API key at ",[22,23,27],"a",{"href":24,"rel":25},"https:\u002F\u002Fwww.visionstory.ai\u002Fopenapi",[26],"nofollow","visionstory.ai\u002Fopenapi",". Send it with every request in the ",[30,31,32],"code",{},"X-API-Key"," header:",[35,36,43],"pre",{"className":37,"code":39,"filename":40,"language":41,"meta":42},[38],"language-text","X-API-Key: $VISIONSTORY_API_KEY\n","Request header","text","",[30,44,39],{"__ignoreMap":42},[10,46,47],{},"Keep the key on your server and never expose it in browser code or a public repository. The examples below read it from an environment variable:",[35,49,53],{"className":50,"code":51,"language":52,"meta":42,"style":42},"language-bash shiki shiki-themes github-light github-dark","export VISIONSTORY_API_KEY=\"sk-vs-xxxxxxxxxxxxxxxxxxx\"\n","bash",[30,54,55],{"__ignoreMap":42},[56,57,60,64,68,71],"span",{"class":58,"line":59},"line",1,[56,61,63],{"class":62},"szBVR","export",[56,65,67],{"class":66},"sVt8B"," VISIONSTORY_API_KEY",[56,69,70],{"class":62},"=",[56,72,74],{"class":73},"sZZnC","\"sk-vs-xxxxxxxxxxxxxxxxxxx\"\n",[10,76,77],{},"Before starting a paid generation, verify the key with a read-only request:",[35,79,81],{"className":50,"code":80,"language":52,"meta":42,"style":42},"curl -s -H \"X-API-Key: $VISIONSTORY_API_KEY\" \\\n  https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fbilling\u002Fcredits\n",[30,82,83,108],{"__ignoreMap":42},[56,84,85,89,93,96,99,102,105],{"class":58,"line":59},[56,86,88],{"class":87},"sScJk","curl",[56,90,92],{"class":91},"sj4cs"," -s",[56,94,95],{"class":91}," -H",[56,97,98],{"class":73}," \"X-API-Key: ",[56,100,101],{"class":66},"$VISIONSTORY_API_KEY",[56,103,104],{"class":73},"\"",[56,106,107],{"class":91}," \\\n",[56,109,111],{"class":58,"line":110},2,[56,112,113],{"class":73},"  https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fbilling\u002Fcredits\n",[10,115,116,117,120,121,124],{},"A successful response includes your plan and remaining credits. A ",[30,118,119],{},"401"," response means the key is missing, expired, or no longer valid; create or replace it at ",[22,122,27],{"href":24,"rel":123},[26]," before continuing.",[14,126,128],{"id":127},"_2-choose-an-api-client","2. Choose an API client",[10,130,131,132,135],{},"Start with the option that matches your task. You can switch later because every interface uses the same VisionStory API and ",[30,133,134],{},"VISIONSTORY_API_KEY",".",[137,138,139,152],"table",{},[140,141,142],"thead",{},[143,144,145,149],"tr",{},[146,147,148],"th",{},"Your goal",[146,150,151],{},"Recommended start",[153,154,155,167,177,190,200],"tbody",{},[143,156,157,161],{},[158,159,160],"td",{},"Add VisionStory to a Python application",[158,162,163],{},[164,165,166],"strong",{},"Python SDK",[143,168,169,172],{},[158,170,171],{},"Run one-off commands, shell scripts, or CI jobs",[158,173,174],{},[164,175,176],{},"VisionStory CLI",[143,178,179,182],{},[158,180,181],{},"Let an AI agent use the complete API as tools",[158,183,184],{},[164,185,186],{},[22,187,189],{"href":188},"\u002Fguides\u002Ffor-agents#connect-the-visionstory-mcp-server","MCP server",[143,191,192,195],{},[158,193,194],{},"Give a coding agent the focused talking-avatar workflow",[158,196,197],{},[164,198,199],{},"Agent Skill",[143,201,202,205],{},[158,203,204],{},"Integrate from another backend language",[158,206,207],{},[164,208,209],{},"REST API",[211,212,166],"h3",{"id":213},"python-sdk",[10,215,216],{},"Install the typed, zero-dependency Python client:",[35,218,220],{"className":50,"code":219,"language":52,"meta":42,"style":42},"pip install visionstory\n",[30,221,222],{"__ignoreMap":42},[56,223,224,227,230],{"class":58,"line":59},[56,225,226],{"class":87},"pip",[56,228,229],{"class":73}," install",[56,231,232],{"class":73}," visionstory\n",[35,234,238],{"className":235,"code":236,"language":237,"meta":42,"style":42},"language-python shiki shiki-themes github-light github-dark","from visionstory import VisionStoryClient\n\nclient = VisionStoryClient.from_env()  # reads VISIONSTORY_API_KEY\n","python",[30,239,240,254,260],{"__ignoreMap":42},[56,241,242,245,248,251],{"class":58,"line":59},[56,243,244],{"class":62},"from",[56,246,247],{"class":66}," visionstory ",[56,249,250],{"class":62},"import",[56,252,253],{"class":66}," VisionStoryClient\n",[56,255,256],{"class":58,"line":110},[56,257,259],{"emptyLinePlaceholder":258},true,"\n",[56,261,263,266,268,271],{"class":58,"line":262},3,[56,264,265],{"class":66},"client ",[56,267,70],{"class":62},[56,269,270],{"class":66}," VisionStoryClient.from_env()  ",[56,272,274],{"class":273},"sJ8bj","# reads VISIONSTORY_API_KEY\n",[211,276,176],{"id":277},"visionstory-cli",[10,279,280],{},"Install or upgrade to the latest CLI release in an isolated environment:",[35,282,284],{"className":50,"code":283,"language":52,"meta":42,"style":42},"curl -fsSL https:\u002F\u002Fdevelopers.visionstory.ai\u002Fcli | bash\n",[30,285,286],{"__ignoreMap":42},[56,287,288,290,293,296,299],{"class":58,"line":59},[56,289,88],{"class":87},[56,291,292],{"class":91}," -fsSL",[56,294,295],{"class":73}," https:\u002F\u002Fdevelopers.visionstory.ai\u002Fcli",[56,297,298],{"class":62}," |",[56,300,301],{"class":87}," bash\n",[10,303,304],{},"After restarting the terminal if prompted, verify authentication and discover valid resource IDs:",[35,306,308],{"className":50,"code":307,"language":52,"meta":42,"style":42},"visionstory credits\nvisionstory avatars\nvisionstory voices\n",[30,309,310,318,325],{"__ignoreMap":42},[56,311,312,315],{"class":58,"line":59},[56,313,314],{"class":87},"visionstory",[56,316,317],{"class":73}," credits\n",[56,319,320,322],{"class":58,"line":110},[56,321,314],{"class":87},[56,323,324],{"class":73}," avatars\n",[56,326,327,329],{"class":58,"line":262},[56,328,314],{"class":87},[56,330,331],{"class":73}," voices\n",[10,333,334,335,339],{},"See the ",[22,336,338],{"href":337},"\u002Fguides\u002Fcli","CLI guide"," for every command.",[211,341,199],{"id":342},"agent-skill",[10,344,345,346,349],{},"The focused talking-avatar Agent Skill ships a ",[30,347,348],{},"SKILL.md"," plus a dependency-free Python helper that handles authentication, base64 encoding, polling, and downloads. It auto-detects supported coding agents:",[35,351,353],{"className":50,"code":352,"language":52,"meta":42,"style":42},"npx skills add visionstory-ai\u002Fskills --skill visionstory-api\n",[30,354,355],{"__ignoreMap":42},[56,356,357,360,363,366,369,372],{"class":58,"line":59},[56,358,359],{"class":87},"npx",[56,361,362],{"class":73}," skills",[56,364,365],{"class":73}," add",[56,367,368],{"class":73}," visionstory-ai\u002Fskills",[56,370,371],{"class":91}," --skill",[56,373,374],{"class":73}," visionstory-api\n",[10,376,377],{},"Then create a video in one command:",[35,379,381],{"className":50,"code":380,"language":52,"meta":42,"style":42},"python3 .agents\u002Fskills\u002Fvisionstory-api\u002Fscripts\u002Fvisionstory_api.py create-video \\\n  --avatar-id YOUR_AVATAR_ID \\\n  --text \"Hello from VisionStory.\" \\\n  --voice-id YOUR_VOICE_ID \\\n  --output result.mp4\n",[30,382,383,396,406,416,427],{"__ignoreMap":42},[56,384,385,388,391,394],{"class":58,"line":59},[56,386,387],{"class":87},"python3",[56,389,390],{"class":73}," .agents\u002Fskills\u002Fvisionstory-api\u002Fscripts\u002Fvisionstory_api.py",[56,392,393],{"class":73}," create-video",[56,395,107],{"class":91},[56,397,398,401,404],{"class":58,"line":110},[56,399,400],{"class":91},"  --avatar-id",[56,402,403],{"class":73}," YOUR_AVATAR_ID",[56,405,107],{"class":91},[56,407,408,411,414],{"class":58,"line":262},[56,409,410],{"class":91},"  --text",[56,412,413],{"class":73}," \"Hello from VisionStory.\"",[56,415,107],{"class":91},[56,417,419,422,425],{"class":58,"line":418},4,[56,420,421],{"class":91},"  --voice-id",[56,423,424],{"class":73}," YOUR_VOICE_ID",[56,426,107],{"class":91},[56,428,430,433],{"class":58,"line":429},5,[56,431,432],{"class":91},"  --output",[56,434,435],{"class":73}," result.mp4\n",[211,437,209],{"id":438},"rest-api",[10,440,441,442,444,445,135],{},"Call the API directly with ",[30,443,88],{}," or any HTTP client. The complete Python example at the end of this guide only needs ",[30,446,447],{},"requests",[14,449,451],{"id":450},"_3-generate-a-talking-avatar-video","3. Generate a talking avatar video",[10,453,454,455,458],{},"Submit a text script with a public avatar and voice. The request returns a ",[30,456,457],{},"video_id"," immediately while generation continues asynchronously:",[35,460,462],{"className":50,"code":461,"language":52,"meta":42,"style":42},"curl -s \\\n  -H \"X-API-Key: $VISIONSTORY_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model_id\": \"vs_character_v4\",\n    \"avatar_id\": \"YOUR_AVATAR_ID\",\n    \"client_request_id\": \"YOUR_UNIQUE_REQUEST_ID\",\n    \"text_script\": {\n      \"text\": \"Hello World, this is my first test video.\",\n      \"voice_id\": \"YOUR_VOICE_ID\",\n      \"speech_rate\": \"normal\"\n    },\n    \"aspect_ratio\": \"9:16\",\n    \"resolution\": \"720p\"\n  }' \\\n  https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvideo\n",[30,463,464,472,485,494,502,507,513,519,525,531,537,543,549,555,561,569],{"__ignoreMap":42},[56,465,466,468,470],{"class":58,"line":59},[56,467,88],{"class":87},[56,469,92],{"class":91},[56,471,107],{"class":91},[56,473,474,477,479,481,483],{"class":58,"line":110},[56,475,476],{"class":91},"  -H",[56,478,98],{"class":73},[56,480,101],{"class":66},[56,482,104],{"class":73},[56,484,107],{"class":91},[56,486,487,489,492],{"class":58,"line":262},[56,488,476],{"class":91},[56,490,491],{"class":73}," \"Content-Type: application\u002Fjson\"",[56,493,107],{"class":91},[56,495,496,499],{"class":58,"line":418},[56,497,498],{"class":91},"  -d",[56,500,501],{"class":73}," '{\n",[56,503,504],{"class":58,"line":429},[56,505,506],{"class":73},"    \"model_id\": \"vs_character_v4\",\n",[56,508,510],{"class":58,"line":509},6,[56,511,512],{"class":73},"    \"avatar_id\": \"YOUR_AVATAR_ID\",\n",[56,514,516],{"class":58,"line":515},7,[56,517,518],{"class":73},"    \"client_request_id\": \"YOUR_UNIQUE_REQUEST_ID\",\n",[56,520,522],{"class":58,"line":521},8,[56,523,524],{"class":73},"    \"text_script\": {\n",[56,526,528],{"class":58,"line":527},9,[56,529,530],{"class":73},"      \"text\": \"Hello World, this is my first test video.\",\n",[56,532,534],{"class":58,"line":533},10,[56,535,536],{"class":73},"      \"voice_id\": \"YOUR_VOICE_ID\",\n",[56,538,540],{"class":58,"line":539},11,[56,541,542],{"class":73},"      \"speech_rate\": \"normal\"\n",[56,544,546],{"class":58,"line":545},12,[56,547,548],{"class":73},"    },\n",[56,550,552],{"class":58,"line":551},13,[56,553,554],{"class":73},"    \"aspect_ratio\": \"9:16\",\n",[56,556,558],{"class":58,"line":557},14,[56,559,560],{"class":73},"    \"resolution\": \"720p\"\n",[56,562,564,567],{"class":58,"line":563},15,[56,565,566],{"class":73},"  }'",[56,568,107],{"class":91},[56,570,572],{"class":58,"line":571},16,[56,573,574],{"class":73},"  https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvideo\n",[35,576,580],{"className":577,"code":578,"language":579,"meta":42,"style":42},"language-json shiki shiki-themes github-light github-dark","{\n  \"data\": {\n    \"video_id\": \"YOUR_VIDEO_ID\"\n  }\n}\n","json",[30,581,582,587,595,606,611],{"__ignoreMap":42},[56,583,584],{"class":58,"line":59},[56,585,586],{"class":66},"{\n",[56,588,589,592],{"class":58,"line":110},[56,590,591],{"class":91},"  \"data\"",[56,593,594],{"class":66},": {\n",[56,596,597,600,603],{"class":58,"line":262},[56,598,599],{"class":91},"    \"video_id\"",[56,601,602],{"class":66},": ",[56,604,605],{"class":73},"\"YOUR_VIDEO_ID\"\n",[56,607,608],{"class":58,"line":418},[56,609,610],{"class":66},"  }\n",[56,612,613],{"class":58,"line":429},[56,614,615],{"class":66},"}\n",[10,617,618,619,622,623,626,627,630,631,634,635,638],{},"Before building a production integration, discover current IDs instead of hardcoding them: ",[30,620,621],{},"GET \u002Fapi\u002Fv1\u002Fmodels",", ",[30,624,625],{},"GET \u002Fapi\u002Fv1\u002Favatars",", and ",[30,628,629],{},"GET \u002Fapi\u002Fv1\u002Fvoices",". To use your own audio, send an ",[30,632,633],{},"audio_script"," in place of ",[30,636,637],{},"text_script"," — never both.",[14,640,642],{"id":641},"_4-poll-the-video-generation-job","4. Poll the video generation job",[10,644,645],{},"Query the task every 5 seconds until it reaches a final state:",[35,647,649],{"className":50,"code":648,"language":52,"meta":42,"style":42},"curl -s \\\n  -H \"X-API-Key: $VISIONSTORY_API_KEY\" \\\n  \"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvideo?video_id=YOUR_VIDEO_ID\"\n",[30,650,651,659,671],{"__ignoreMap":42},[56,652,653,655,657],{"class":58,"line":59},[56,654,88],{"class":87},[56,656,92],{"class":91},[56,658,107],{"class":91},[56,660,661,663,665,667,669],{"class":58,"line":110},[56,662,476],{"class":91},[56,664,98],{"class":73},[56,666,101],{"class":66},[56,668,104],{"class":73},[56,670,107],{"class":91},[56,672,673],{"class":58,"line":262},[56,674,675],{"class":73},"  \"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvideo?video_id=YOUR_VIDEO_ID\"\n",[137,677,678,688],{},[140,679,680],{},[143,681,682,685],{},[146,683,684],{},"status",[146,686,687],{},"Meaning",[153,689,690,700,710,724],{},[143,691,692,697],{},[158,693,694],{},[30,695,696],{},"queued",[158,698,699],{},"Accepted, waiting for a worker",[143,701,702,707],{},[158,703,704],{},[30,705,706],{},"creating",[158,708,709],{},"Generating",[143,711,712,717],{},[158,713,714],{},[30,715,716],{},"created",[158,718,719,720,723],{},"Done — ",[30,721,722],{},"video_url"," is ready",[143,725,726,731],{},[158,727,728],{},[30,729,730],{},"failed",[158,732,733],{},"Generation failed — stop polling and inspect the error",[10,735,736],{},"Avoid polling faster than every 5 seconds, and give up after about 10 minutes.",[14,738,740],{"id":739},"_5-download-the-generated-mp4","5. Download the generated MP4",[10,742,743,744,746,747,749,750,753],{},"When the status is ",[30,745,716],{},", the response carries a ",[30,748,722],{},". Completed videos are retained for ",[164,751,752],{},"7 days",", so download the file if you need permanent storage:",[35,755,757],{"className":50,"code":756,"language":52,"meta":42,"style":42},"curl -sL -o result.mp4 \"\u003Cvideo_url from the response>\"\n",[30,758,759],{"__ignoreMap":42},[56,760,761,763,766,769,772],{"class":58,"line":59},[56,762,88],{"class":87},[56,764,765],{"class":91}," -sL",[56,767,768],{"class":91}," -o",[56,770,771],{"class":73}," result.mp4",[56,773,774],{"class":73}," \"\u003Cvideo_url from the response>\"\n",[14,776,778],{"id":777},"complete-python-sdk-example","Complete Python SDK example",[10,780,781],{},"With the SDK, the whole flow is a few lines:",[35,783,785],{"className":235,"code":784,"language":237,"meta":42,"style":42},"from pathlib import Path\nfrom visionstory import VisionStoryClient, build_video_payload\n\nclient = VisionStoryClient.from_env()\npayload = build_video_payload(\n    avatar_id=\"YOUR_AVATAR_ID\",\n    text=\"Hello World, this is my first test video.\",\n    voice_id=\"YOUR_VOICE_ID\",\n)\nvideo = client.generate_video(payload)\nclient.download(video[\"video_url\"], Path(\"result.mp4\"))\nprint(\"saved result.mp4\")\n",[30,786,787,799,810,814,823,833,847,859,871,876,886,903],{"__ignoreMap":42},[56,788,789,791,794,796],{"class":58,"line":59},[56,790,244],{"class":62},[56,792,793],{"class":66}," pathlib ",[56,795,250],{"class":62},[56,797,798],{"class":66}," Path\n",[56,800,801,803,805,807],{"class":58,"line":110},[56,802,244],{"class":62},[56,804,247],{"class":66},[56,806,250],{"class":62},[56,808,809],{"class":66}," VisionStoryClient, build_video_payload\n",[56,811,812],{"class":58,"line":262},[56,813,259],{"emptyLinePlaceholder":258},[56,815,816,818,820],{"class":58,"line":418},[56,817,265],{"class":66},[56,819,70],{"class":62},[56,821,822],{"class":66}," VisionStoryClient.from_env()\n",[56,824,825,828,830],{"class":58,"line":429},[56,826,827],{"class":66},"payload ",[56,829,70],{"class":62},[56,831,832],{"class":66}," build_video_payload(\n",[56,834,835,839,841,844],{"class":58,"line":509},[56,836,838],{"class":837},"s4XuR","    avatar_id",[56,840,70],{"class":62},[56,842,843],{"class":73},"\"YOUR_AVATAR_ID\"",[56,845,846],{"class":66},",\n",[56,848,849,852,854,857],{"class":58,"line":515},[56,850,851],{"class":837},"    text",[56,853,70],{"class":62},[56,855,856],{"class":73},"\"Hello World, this is my first test video.\"",[56,858,846],{"class":66},[56,860,861,864,866,869],{"class":58,"line":521},[56,862,863],{"class":837},"    voice_id",[56,865,70],{"class":62},[56,867,868],{"class":73},"\"YOUR_VOICE_ID\"",[56,870,846],{"class":66},[56,872,873],{"class":58,"line":527},[56,874,875],{"class":66},")\n",[56,877,878,881,883],{"class":58,"line":533},[56,879,880],{"class":66},"video ",[56,882,70],{"class":62},[56,884,885],{"class":66}," client.generate_video(payload)\n",[56,887,888,891,894,897,900],{"class":58,"line":539},[56,889,890],{"class":66},"client.download(video[",[56,892,893],{"class":73},"\"video_url\"",[56,895,896],{"class":66},"], Path(",[56,898,899],{"class":73},"\"result.mp4\"",[56,901,902],{"class":66},"))\n",[56,904,905,908,911,914],{"class":58,"line":545},[56,906,907],{"class":91},"print",[56,909,910],{"class":66},"(",[56,912,913],{"class":73},"\"saved result.mp4\"",[56,915,875],{"class":66},[14,917,919],{"id":918},"related-visionstory-api-guides","Related VisionStory API guides",[921,922,923,931,938],"ul",{},[924,925,926,930],"li",{},[22,927,929],{"href":928},"\u002Fguides\u002Foverview","Read the overview"," for core resources, response envelopes, and model choices.",[924,932,933,937],{},[22,934,936],{"href":935},"\u002Freference","Explore the API reference"," for request schemas, parameters, and responses.",[924,939,940,944],{},[22,941,943],{"href":24,"rel":942},[26],"Get an API key"," when you are ready to run a real request.",[946,947,948],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":42,"searchDepth":110,"depth":110,"links":950},[951,952,958,959,960,961,962],{"id":16,"depth":110,"text":17},{"id":127,"depth":110,"text":128,"children":953},[954,955,956,957],{"id":213,"depth":262,"text":166},{"id":277,"depth":262,"text":176},{"id":342,"depth":262,"text":199},{"id":438,"depth":262,"text":209},{"id":450,"depth":110,"text":451},{"id":641,"depth":110,"text":642},{"id":739,"depth":110,"text":740},{"id":777,"depth":110,"text":778},{"id":918,"depth":110,"text":919},"Generate and download your first AI talking avatar video with the VisionStory REST API or Python SDK, including authentication, polling, and storage.","md",{},{"title":967,"order":110},"Quick start","\u002Fguides\u002Fquick-start",{"title":5,"description":963},"guides\u002Fquick-start","Iw972DJQ1pjWDmv_KU-eJa183cUK4Rzdh-X1y8Wcpzw","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>X-API-Key: $VISIONSTORY_API_KEY\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">export\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> VISIONSTORY_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"sk-vs-xxxxxxxxxxxxxxxxxxx\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -s\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -H\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"X-API-Key: \u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">$VISIONSTORY_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">  https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fbilling\u002Fcredits\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">pip\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> install\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> visionstory\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">from\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> visionstory \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> VisionStoryClient\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">client \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> VisionStoryClient.from_env()  \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\"># reads VISIONSTORY_API_KEY\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -fsSL\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> https:\u002F\u002Fdevelopers.visionstory.ai\u002Fcli\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> |\u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\"> bash\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">visionstory\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> credits\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">visionstory\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> avatars\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">visionstory\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> voices\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">npx\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> skills\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> add\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> visionstory-ai\u002Fskills\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> --skill\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> visionstory-api\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">python3\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> .agents\u002Fskills\u002Fvisionstory-api\u002Fscripts\u002Fvisionstory_api.py\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> create-video\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">  --avatar-id\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> YOUR_AVATAR_ID\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">  --text\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"Hello from VisionStory.\"\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">  --voice-id\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> YOUR_VOICE_ID\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">  --output\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> result.mp4\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -s\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">  -H\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"X-API-Key: \u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">$VISIONSTORY_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">  -H\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"Content-Type: application\u002Fjson\"\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">  -d\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> '{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"model_id\": \"vs_character_v4\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"avatar_id\": \"YOUR_AVATAR_ID\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"client_request_id\": \"YOUR_UNIQUE_REQUEST_ID\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"text_script\": {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">      \"text\": \"Hello World, this is my first test video.\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">      \"voice_id\": \"YOUR_VOICE_ID\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">      \"speech_rate\": \"normal\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"aspect_ratio\": \"9:16\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"resolution\": \"720p\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">  }'\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">  https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvideo\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7EE787\">  \"data\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7EE787\">    \"video_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"YOUR_VIDEO_ID\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">  }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -s\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">  -H\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"X-API-Key: \u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">$VISIONSTORY_API_KEY\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">  \"https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvideo?video_id=YOUR_VIDEO_ID\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">curl\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -sL\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> -o\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> result.mp4\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"&#x3C;video_url from the response>\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">from\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> pathlib \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> Path\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">from\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> visionstory \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> VisionStoryClient, build_video_payload\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">client \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> VisionStoryClient.from_env()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">payload \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> build_video_payload(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">    avatar_id\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"YOUR_AVATAR_ID\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">    text\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"Hello World, this is my first test video.\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFA657\">    voice_id\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"YOUR_VOICE_ID\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">video \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> client.generate_video(payload)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">client.download(video[\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"video_url\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">], Path(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"result.mp4\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"saved result.mp4\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1788166855861]