[{"data":1,"prerenderedAt":208},["ShallowReactive",2],{"reference-detail-create_video_api_v1_video_post":3,"developer-code-2ev58m":206,"developer-code-1jr674s":207},{"tag":4,"sourceTag":5,"tagSlug":6,"method":7,"path":8,"slug":9,"summary":10,"description":11,"operationId":12,"groupOrder":13,"descriptionHtml":14,"parameters":15,"requestBody":23,"responses":138,"security":196,"codeSamples":199},"Talking Avatar Video","Videos","videos","POST","\u002Fapi\u002Fv1\u002Fvideo","create-video","Generate video","Generate a talking-avatar video: an avatar speaks a script provided either as text-to-speech\n(`text_script`) or pre-recorded audio (`audio_script`). Generation is asynchronous — poll\nGET \u002Fapi\u002Fv1\u002Fvideo for status. Finished videos are retained for 7 days, so download promptly.\n\nPass `client_request_id` to make retries idempotent (no double charge).","create_video_api_v1_video_post",10,"\u003Cp>Generate a talking-avatar video: an avatar speaks a script provided either as text-to-speech (\u003Ccode>text_script\u003C\u002Fcode>) or pre-recorded audio (\u003Ccode>audio_script\u003C\u002Fcode>). Generation is asynchronous — poll GET \u002Fapi\u002Fv1\u002Fvideo for status. Finished videos are retained for 7 days, so download promptly.\u003C\u002Fp>\u003Cp>Pass \u003Ccode>client_request_id\u003C\u002Fcode> to make retries idempotent (no double charge).\u003C\u002Fp>",[16],{"name":17,"in":18,"required":19,"description":20,"type":21,"example":22},"X-API-Key","header",true,"Your VisionStory API key (`sk-vs-...`), kept server-side. Create or manage keys in [API keys](\u002Fapi-keys) (Pro plan and up).","string","sk-vs-your-api-key",{"required":19,"contentType":24,"schema":25,"example":132},"application\u002Fjson",{"type":26,"description":27,"nullable":28,"properties":29},"CreateVideoRequest","",false,[30,38,74,78,82,86,96,103,112],{"name":31,"required":28,"type":21,"description":32,"nullable":28,"enum":33,"default":34,"properties":37},"aspect_ratio","Output aspect ratio for the rendered video; defaults to `9:16`.",[34,35,36],"9:16","16:9","1:1",[],{"name":39,"required":28,"type":40,"description":41,"nullable":19,"properties":42},"audio_script","AudioScript | null","Pre-recorded narration audio to drive the avatar. Provide either `audio_script` or `text_script`.",[43,48,53,66,70],{"name":44,"required":28,"type":45,"description":46,"nullable":19,"properties":47},"audio_url","string | null","Publicly reachable URL of narration audio to drive the avatar. Provide either this or `inline_data`.",[],{"name":49,"required":28,"type":50,"description":51,"nullable":28,"default":28,"properties":52},"denoise","boolean","If true, apply noise reduction to the uploaded audio before generation.",[],{"name":54,"required":28,"type":55,"description":56,"nullable":19,"properties":57},"inline_data","InlineDataModel | null","Narration audio as inline base64 data. Provide either this or `audio_url`.",[58,62],{"name":59,"required":19,"type":21,"description":60,"nullable":28,"properties":61},"data","The file's raw bytes encoded as a base64 string (no `data:` URI prefix).",[],{"name":63,"required":19,"type":21,"description":64,"nullable":28,"properties":65},"mime_type","MIME type of the inline data, used to detect image vs audio. Audio: ['audio\u002Favi', 'audio\u002Fmpeg', 'audio\u002Fmp3', 'audio\u002Fmp4', 'audio\u002Fm4a', 'audio\u002Fwav']; images: ['image\u002Fjpeg', 'image\u002Fjpg', 'image\u002Fpng', 'image\u002Fwebp', 'image\u002Fheic'].",[],{"name":67,"required":28,"type":50,"description":68,"nullable":28,"default":28,"properties":69},"voice_change","If true, re-synthesize the uploaded audio with the voice in `voice_id` (voice conversion) while keeping the original timing.",[],{"name":71,"required":28,"type":45,"description":72,"nullable":19,"properties":73},"voice_id","Target voice for conversion when `voice_change` is true. Use an id from GET \u002Fapi\u002Fv1\u002Fvoices.",[],{"name":75,"required":19,"type":21,"description":76,"nullable":28,"properties":77},"avatar_id","Avatar that speaks the script. Use an id from GET \u002Fapi\u002Fv1\u002Favatars (public or your own).",[],{"name":79,"required":28,"type":21,"description":80,"nullable":28,"default":27,"properties":81},"background_color","Optional solid background as a 6-digit hex color, e.g. `#00b140`. Leave empty to keep the avatar's original background; setting it renders the avatar on this color (chroma-key friendly).",[],{"name":83,"required":28,"type":45,"description":84,"nullable":19,"properties":85},"client_request_id","Optional idempotency key. Resubmitting with the same value within 24h returns the original task instead of creating (and charging) a new one. Safe for retries.",[],{"name":87,"required":28,"type":21,"description":88,"nullable":28,"enum":89,"default":90,"properties":95},"emotion","Expressive tone the avatar performs; defaults to `cheerful`.",[90,91,92,93,94],"cheerful","angry","marketing","news","singing",[],{"name":97,"required":28,"type":21,"description":98,"nullable":28,"enum":99,"default":100,"properties":102},"model_id","Rendering model to use; see GET \u002Fapi\u002Fv1\u002Fmodels. Defaults to `vs_character_v4`. Note: when omitted and `resolution` is `480p`, `vs_talk_v1` is selected automatically.",[100,101],"vs_character_v4","vs_talk_v1",[],{"name":104,"required":28,"type":21,"description":105,"nullable":28,"enum":106,"default":108,"properties":111},"resolution","Output resolution. Higher values cost more credits and take longer to render; defaults to `720p`. Note: `vs_talk_v1` does not support `2k`.",[107,108,109,110],"480p","720p","1080p","2k",[],{"name":113,"required":28,"type":114,"description":115,"nullable":19,"properties":116},"text_script","TextScript | null","Text-to-speech script (text + voice). Provide either `text_script` or `audio_script`.",[117,125,129],{"name":118,"required":28,"type":45,"description":119,"nullable":19,"enum":120,"default":122,"properties":124},"speech_rate","Speaking speed of the synthesized voice; defaults to `normal`.",[121,122,123],"slow","normal","fast",[],{"name":126,"required":19,"type":21,"description":127,"nullable":28,"properties":128},"text","The script to speak; converted to speech with the selected voice.",[],{"name":71,"required":19,"type":21,"description":130,"nullable":28,"properties":131},"Voice to synthesize the script with. Use an id from GET \u002Fapi\u002Fv1\u002Fvoices (a public or your own cloned voice).",[],{"model_id":100,"avatar_id":133,"text_script":134,"aspect_ratio":34,"resolution":108,"client_request_id":137},"avatar_123456",{"text":135,"voice_id":136,"speech_rate":122},"Welcome to VisionStory.","voice_123456","request_20260824_001",[139,167],{"status":140,"description":141,"contentType":24,"schema":142,"example":163},"200","Successful Response",{"type":143,"description":27,"nullable":28,"properties":144},"BaseSuccessResponse_CreateVideoResponse_",[145,153,158],{"name":59,"required":19,"type":146,"description":147,"nullable":19,"properties":148},"CreateVideoResponse | null","The endpoint payload. Its shape is specific to each endpoint (see that endpoint's response schema); null for operations that return no body, such as delete.",[149],{"name":150,"required":19,"type":21,"description":151,"nullable":28,"properties":152},"video_id","Identifier of the newly created video task. Poll GET \u002Fapi\u002Fv1\u002Fvideo with it to track progress.",[],{"name":154,"required":28,"type":21,"description":155,"nullable":28,"default":156,"properties":157},"message","Human-readable status message; `\"success\"` on a successful call.","success",[],{"name":159,"required":19,"type":160,"description":161,"nullable":28,"properties":162},"server_time","string · date-time","Server-side timestamp when the response was produced, in ISO 8601 format (UTC).",[],{"data":164,"server_time":166,"message":156},{"video_id":165},"video_123456","2026-08-24T08:00:00Z",{"status":168,"description":169,"contentType":24,"schema":170,"example":193},"default","Error response. All failures share one envelope: an `error` object with a numeric `code`, a human-readable `message`, an optional `details` string, and an optional `hint` giving an actionable next step (useful for AI agents).",{"type":171,"description":27,"nullable":28,"properties":172},"ErrorResponse",[173],{"name":174,"required":19,"type":175,"description":27,"nullable":28,"properties":176},"error","ErrorDetail",[177,182,186,190],{"name":178,"required":19,"type":179,"description":180,"nullable":28,"properties":181},"code","integer","Machine-readable error code. Mirrors the HTTP status for transport-level failures (e.g. 401, 404, 422, 500) and may carry a business-specific code otherwise.",[],{"name":183,"required":28,"type":45,"description":184,"nullable":19,"properties":185},"details","Optional structured detail about the failure, e.g. a JSON string of per-field validation errors on a 422. Absent when there is nothing extra to report.",[],{"name":187,"required":28,"type":45,"description":188,"nullable":19,"properties":189},"hint","Actionable next step for resolving the error, written for both humans and AI agents (e.g. how to fix the request, or where to obtain an API key). May be absent.",[],{"name":154,"required":19,"type":21,"description":191,"nullable":28,"properties":192},"Human-readable explanation of what went wrong. Safe to log or surface to end users; not localized.",[],{"error":194},{"code":195,"message":21,"details":21,"hint":21},1,[197],{"APIKeyHeader":198},[],[200,203],{"lang":201,"source":202},"Python","import os\nimport requests\nimport base64\n\ndef encode_base64(file_path):\n    with open(file_path, 'rb') as file:\n        encoded_string = base64.b64encode(file.read()).decode('utf-8')\n    return encoded_string\n\nheaders = {\"X-API-Key\": os.environ[\"VISIONSTORY_API_KEY\"]}\n\n# audio_file_path = '\u002Fpath\u002Fto\u002Faudio.mp3'\n# payload = {\n#     \"model_id\": 'vs_character_v4',\n#     \"avatar_id\": \"4321918387609092991\",\n#     \"audio_script\": {\n#         \"inline_data\": {\n#             \"mime_type\": \"audio\u002Fmp3\",\n#             \"data\": encode_base64(audio_file_path)\n#         },\n#         \"voice_change\": True,\n#         \"voice_id\": \"Alice\",\n#         \"denoise\": True\n#     },\n#     \"aspect_ratio\": \"1:1\",\n#     \"resolution\": \"720p\",\n#     \"background_color\": \"#888888\"\n# }\n\npayload = {\n    \"model_id\": 'vs_character_v4',\n    \"avatar_id\": \"4321918387609092991\",\n    \"text_script\": {\n        \"text\": \"Hello World, this is my first test video.\",\n        \"voice_id\": \"Alice\",\n        \"speech_rate\": \"normal\"\n    },\n    \"aspect_ratio\": \"9:16\",\n    \"resolution\": \"720p\"\n}\n\nresponse = requests.post(\n    'https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvideo',  json=payload, headers=headers\n)\nresp_data = response.json()\nprint(resp_data['data']['video_id'])",{"lang":204,"source":205},"cURL","curl -X 'POST' \\\n      'https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvideo' \\\n      -H 'accept: application\u002Fjson' \\\n      -H 'content-type: application\u002Fjson' \\\n      -H 'X-API-Key: $VISIONSTORY_API_KEY' \\\n      --data '\n{\n    \"model_id\": \"vs_character_v4\",\n    \"avatar_id\": \"4321918387609092991\",\n    \"text_script\": {\n        \"text\": \"Hello World, this is my first test video.\",\n        \"voice_id\": \"Alice\",\n        \"speech_rate\": \"normal\"\n    },\n    \"aspect_ratio\": \"9:16\",\n    \"resolution\": \"720p\"\n}\n'","\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> os\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> requests\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">import\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> base64\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">def\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\"> encode_base64\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(file_path):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">    with\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> open\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(file_path, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'rb'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">) \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">as\u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\"> file\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">        encoded_string \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> base64.b64encode(\u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">file\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">.read()).decode(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'utf-8'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FF7B72\">    return\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> encoded_string\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">headers \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> {\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"X-API-Key\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: os.environ[\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"VISIONSTORY_API_KEY\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\"># audio_file_path = '\u002Fpath\u002Fto\u002Faudio.mp3'\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\"># payload = {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#     \"model_id\": 'vs_character_v4',\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#     \"avatar_id\": \"4321918387609092991\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#     \"audio_script\": {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#         \"inline_data\": {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#             \"mime_type\": \"audio\u002Fmp3\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#             \"data\": encode_base64(audio_file_path)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#         },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#         \"voice_change\": True,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#         \"voice_id\": \"Alice\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#         \"denoise\": True\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#     },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#     \"aspect_ratio\": \"1:1\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#     \"resolution\": \"720p\",\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\">#     \"background_color\": \"#888888\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8B949E\"># }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">payload \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"model_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'vs_character_v4'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"avatar_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"4321918387609092991\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"text_script\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">        \"text\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \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:#A5D6FF\">        \"voice_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"Alice\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">        \"speech_rate\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"normal\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">    },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"aspect_ratio\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"9:16\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    \"resolution\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"720p\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">response \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> requests.post(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#A5D6FF\">    'https:\u002F\u002Fopenapi.visionstory.ai\u002Fapi\u002Fv1\u002Fvideo'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,  \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">json\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">payload, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">headers\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">headers\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">resp_data \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> response.json()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79C0FF\">print\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(resp_data[\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'data'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">][\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'video_id'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">])\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:#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\">\"video_123456\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">  },\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7EE787\">  \"server_time\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"2026-08-24T08:00:00Z\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#7EE787\">  \"message\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"success\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1788166855863]