### Installation and Setup Source: https://emaki.readthedocs.io/en/latest/integrations/haystack Install the emaki-haystack package and set the EMAKI_API_KEY environment variable. ```APIDOC ## Installation and Setup ### Description Install the emaki-haystack package and configure the API key. ### Installation ```bash pip install emaki-haystack ``` ### Environment Variable - **EMAKI_API_KEY** (string) - Required - Your Emaki API key. Get it from https://emaki.ai/settings/apikeys. ### Example ```bash export EMAKI_API_KEY=sk-... ``` ``` -------------------------------- ### Install Go SDK: go get github.com/hanshs474/emaki-go Source: https://emaki.readthedocs.io/en/latest/sdk Install the official Go SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash go get github.com/hanshs474/emaki-go ``` -------------------------------- ### Generate video with emaki.video() Source: https://emaki.readthedocs.io/en/latest/integrations/ai-sdk Use experimental_generateVideo with the emaki.video() model to generate a video from a prompt. The example shows a 5-second 720p video with an optional starting image. The resolution is mapped to the short side, and failures throw EmakiError with a reason. ```javascript import { experimental_generateVideo as generateVideo } from 'ai'; import { emaki } from 'emaki-ai-provider'; const { video } = await generateVideo({ model: emaki.video(), // seedance_2_5 prompt: 'a paper boat drifting down a rain gutter, low angle', duration: 5, resolution: '1280x720', image: 'https://example.com/first-frame.png', // optional: image to video }); ``` -------------------------------- ### Install and set API key Source: https://emaki.readthedocs.io/en/latest/integrations/langchain Install the langchain-emaki package and set the EMAKI_API_KEY environment variable. The key can be obtained from https://emaki.ai/settings/apikeys. ```bash pip install langchain-emaki export EMAKI_API_KEY=sk-... # https://emaki.ai/settings/apikeys ``` -------------------------------- ### Install Ruby SDK: gem install emaki Source: https://emaki.readthedocs.io/en/latest/sdk Install the official Ruby SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash gem install emaki ``` -------------------------------- ### Install emaki with pip Source: https://emaki.readthedocs.io/en/latest/sdk/python Install the Emaki Python SDK using pip. The package is standard library only. ```bash pip install emaki ``` -------------------------------- ### Install D SDK: dub add emaki Source: https://emaki.readthedocs.io/en/latest/sdk Install the official D SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash dub add emaki ``` -------------------------------- ### Install emaki-ai-provider and set API key Source: https://emaki.readthedocs.io/en/latest/integrations/ai-sdk Install the emaki-ai-provider and AI SDK packages, then set the EMAKI_API_KEY environment variable. The key can be obtained from https://emaki.ai/settings/apikeys. ```bash npm install emaki-ai-provider ai export EMAKI_API_KEY=sk-... # https://emaki.ai/settings/apikeys ``` -------------------------------- ### Install Python SDK: pip install emaki Source: https://emaki.readthedocs.io/en/latest/sdk Install the official Python SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash pip install emaki ``` -------------------------------- ### Install Lua SDK: luarocks install emaki Source: https://emaki.readthedocs.io/en/latest/sdk Install the official Lua SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash luarocks install emaki ``` -------------------------------- ### Generate video with EmakiVideoGenerator Source: https://emaki.readthedocs.io/en/latest/integrations/haystack Import EmakiVideoGenerator and run it with a prompt. The example uses duration=5 and aspect_ratio="9:16", and the output is a dictionary with a "videos" key containing a list of URLs. ```python from emaki_haystack import EmakiVideoGenerator EmakiVideoGenerator(duration=5, aspect_ratio="9:16").run(prompt="a lighthouse beam sweeping across fog at night") # {"videos": ["https://cdn.emaki.ai/..."]} ``` -------------------------------- ### Install .NET SDK: dotnet add package Emaki Source: https://emaki.readthedocs.io/en/latest/sdk Install the official .NET SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash dotnet add package Emaki ``` -------------------------------- ### Install JavaScript/TypeScript SDK: npm install emaki-ai Source: https://emaki.readthedocs.io/en/latest/sdk Install the official JavaScript/TypeScript SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash npm install emaki-ai ``` -------------------------------- ### Install emaki-mcp with Gemini CLI Source: https://emaki.readthedocs.io/en/latest/integrations/mcp Command to install the emaki MCP server extension for Gemini CLI. ```bash gemini extensions install https://github.com/hanshs474/emaki-mcp ``` -------------------------------- ### Install R SDK: install.packages("emaki", repos = c("https://hanshs474.r-universe.dev", "https://cloud.r-project.org")) Source: https://emaki.readthedocs.io/en/latest/sdk Install the official R SDK for emaki from the specified repositories. The client reads the EMAKI_API_KEY environment variable. ```r install.packages("emaki", repos = c("https://hanshs474.r-universe.dev", "https://cloud.r-project.org")) ``` -------------------------------- ### Install Java/Kotlin SDK: io.github.hanshs474:emaki Source: https://emaki.readthedocs.io/en/latest/sdk Install the official Java/Kotlin SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash io.github.hanshs474:emaki ``` -------------------------------- ### Install and set API key Source: https://emaki.readthedocs.io/en/latest/integrations/haystack Install the emaki-haystack package and set the EMAKI_API_KEY environment variable. The key is required for authentication and can be obtained from https://emaki.ai/settings/apikeys. ```bash pip install emaki-haystack export EMAKI_API_KEY=sk-... # https://emaki.ai/settings/apikeys ``` -------------------------------- ### Install Rust SDK: cargo add emaki Source: https://emaki.readthedocs.io/en/latest/sdk Install the official Rust SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash cargo add emaki ``` -------------------------------- ### Install Dart/Flutter SDK: dart pub add emaki Source: https://emaki.readthedocs.io/en/latest/sdk Install the official Dart/Flutter SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash dart pub add emaki ``` -------------------------------- ### Install emaki-mcp as Claude Code plugin Source: https://emaki.readthedocs.io/en/latest/integrations/mcp Two commands to add the emaki MCP server as a Claude Code plugin: first add the marketplace, then install the plugin. ```bash claude plugin marketplace add hanshs474/emaki-mcp ``` ```bash claude plugin install emaki@emaki ``` -------------------------------- ### Install PHP SDK: composer require hanshs474/emaki Source: https://emaki.readthedocs.io/en/latest/sdk Install the official PHP SDK for emaki. The client reads the EMAKI_API_KEY environment variable. ```bash composer require hanshs474/emaki ``` -------------------------------- ### Submit a run with curl Source: https://emaki.readthedocs.io/en/latest/http POST to /api/video/ai to start a video generation. Requires an API key in the Authorization header. The request body includes prompt, model, and optional parameters. The response contains a data.id to use for polling. ```bash curl -s -X POST https://emaki.ai/api/video/ai \ -H "Authorization: Bearer $EMAKI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "prompt": "a fox trotting through fresh snow at dawn, tracking shot", "model": "seedance_2_5", "parameters": {"duration": 8, "resolution": "720p", "aspect_ratio": "9:16"} }' ``` -------------------------------- ### Install emaki-mcp with Claude Code Source: https://emaki.readthedocs.io/en/latest/integrations/mcp Command to add the emaki MCP server to Claude Code, setting the EMAKI_API_KEY environment variable. ```bash claude mcp add emaki -e EMAKI_API_KEY=sk-... -- npx -y emaki-mcp ``` -------------------------------- ### Create LangChain agent with Emaki tools Source: https://emaki.readthedocs.io/en/latest/integrations/langchain Create a LangChain agent using the create_agent function with the image and video tools, then invoke it with a user message. ```python from langchain.agents import create_agent agent = create_agent("openai:gpt-5", tools=[image, video]) agent.invoke({"messages": [("user", "Make a still of a lighthouse in fog, then a 5-second clip that starts from it")]}) ``` -------------------------------- ### Generate video and image with emaki Source: https://emaki.readthedocs.io/en/latest/sdk/python Shows how to check remaining credits, generate a video from a text prompt, generate a video from an image (the image becomes the first frame), and generate an image. Each call waits for the run and returns the URL of the finished file. ```python from emaki import generate_video, generate_image, credits print(credits()) # remaining credits, free to call clip = generate_video("a fox trotting through fresh snow at dawn, tracking shot", duration=8, resolution="720p", aspect_ratio="9:16") # image to video: the image becomes the first frame clip = generate_video("the camera slowly orbits the statue", image="https://example.com/statue.jpg") pic = generate_image("isometric diorama of a ramen shop at night", aspect_ratio="1:1") ``` -------------------------------- ### Generate video and image with Emaki tools Source: https://emaki.readthedocs.io/en/latest/integrations/langchain Create instances of EmakiVideoGenerator and EmakiImageGenerator, then invoke them with a prompt. The video generator accepts a duration parameter. ```python from langchain_emaki import EmakiImageGenerator, EmakiVideoGenerator video = EmakiVideoGenerator() # model="seedance_2_5" image = EmakiImageGenerator() # model="nano_banana_2_lite" video.invoke({"prompt": "a paper boat drifting down a rain gutter, low angle", "duration": 5}) ``` -------------------------------- ### emaki.video() Source: https://emaki.readthedocs.io/en/latest/integrations/ai-sdk Generates a video using the emaki provider. It works with the experimental_generateVideo function from the AI SDK. The provider maps resolution to the short side, supports image-to-video with an optional image parameter, and passes additional model parameters through providerOptions.emaki. ```APIDOC ## emaki.video() ### Description Generates a video using the emaki provider. It works with the experimental_generateVideo function from the AI SDK. The provider maps resolution to the short side, supports image-to-video with an optional image parameter, and passes additional model parameters through providerOptions.emaki. ### Method SDK Function ### Endpoint emaki.video() ### Parameters #### Function Parameters (passed to generateVideo) - **model** (object) - Required - The model instance returned by emaki.video(). - **prompt** (string) - Required - The text prompt describing the video to generate. - **duration** (number) - Optional - The duration of the video in seconds. - **resolution** (string) - Optional - The resolution of the video, e.g., '1280x720'. Mapped to the short side (e.g., '720p'). - **image** (string) - Optional - URL of an image to use as the first frame for image-to-video. - **providerOptions.emaki** (object) - Optional - Additional model parameters to pass through. ### Request Example ```javascript import { experimental_generateVideo as generateVideo } from 'ai'; import { emaki } from 'emaki-ai-provider'; const { video } = await generateVideo({ model: emaki.video(), // seedance_2_5 prompt: 'a paper boat drifting down a rain gutter, low angle', duration: 5, resolution: '1280x720', image: 'https://example.com/first-frame.png', // optional: image to video }); ``` ### Response #### Success Response - **video** (object) - The generated video object. #### Error Handling Failures throw `EmakiError` with a `reason` field. Possible reasons: `auth`, `quota`, `plan`, `busy`, `rejected`, `failed`, `timeout`. ``` -------------------------------- ### Create video generation request with curl Source: https://emaki.readthedocs.io/en/latest Sends a POST request to /api/video/ai with a prompt, model ID, and parameters. Requires EMAKI_API_KEY environment variable to be set. Each run costs credits on the emaki account. ```bash curl -s -X POST https://emaki.ai/api/video/ai \ -H "Authorization: Bearer $EMAKI_API_KEY" -H "Content-Type: application/json" \ -d '{"prompt":"a paper boat drifting on a calm lake at sunrise, slow dolly in","model":"seedance_2_5","parameters":{"duration":5}}' ``` -------------------------------- ### Run Docker CLI image: docker run --rm -e EMAKI_API_KEY san8888/emaki "a paper lantern drifting down a night river, slow dolly-in" Source: https://emaki.readthedocs.io/en/latest/sdk Run the emaki Docker CLI image with the EMAKI_API_KEY environment variable and a prompt. The client reads the EMAKI_API_KEY environment variable. ```bash docker run --rm -e EMAKI_API_KEY san8888/emaki "a paper lantern drifting down a night river, slow dolly-in" ``` -------------------------------- ### Video Models Source: https://emaki.readthedocs.io/en/latest/models Lists the video generation models and their supported parameters. Pass the model id as `model` and options inside `parameters`. ```APIDOC ## Video Models ### Description Lists the video generation models and their supported parameters. Pass the model id as `model` and options inside `parameters`. ### Models #### `seedance_2_5` - **Description**: Seedance 2.5, the default - **Parameters**: - `duration` (integer) - Optional - 4–30 (default 5) - `resolution` (string) - Optional - `480p` / `720p` / `1080p` (default `480p`) - `aspect_ratio` (string) - Optional - `16:9` / `4:3` / `1:1` / `3:4` / `9:16` / `21:9` / `adaptive` (default `16:9`) - `generate_audio` (boolean) - Optional - default true - `image` (string) - Optional - first frame URL - `last_frame_image` (string) - Optional #### `seedance_2` - **Description**: Seedance 2.0 - **Parameters**: - `duration` (integer) - Optional - 4–15 - `resolution` (string) - Optional - `480p` / `720p` / `1080p` - `aspect_ratio` (string) - Optional - same as above - `generate_audio` (boolean) - Optional - `image` (string) - Optional #### `seedance_2_fast` - **Description**: Seedance 2.0 Fast - **Parameters**: - `duration` (integer) - Optional - 4–15 - `resolution` (string) - Optional - `480p` / `720p` - `aspect_ratio` (string) - Optional - `generate_audio` (boolean) - Optional - `image` (string) - Optional #### `seedance_2_mini` - **Description**: Seedance 2.0 Mini, the lowest-cost video model - **Parameters**: same as Fast #### `minimax_h3` - **Description**: MiniMax H3 - **Parameters**: - `duration` (integer) - Optional - 5–15 - `aspect_ratio` (string) - Optional - `image` (string) - Optional #### `veo_3_1` - **Description**: Veo 3.1 - **Parameters**: - `resolution` (string) - Optional - `720p` / `1080p` / `4k` - `aspectRatio` (string) - Optional - `16:9` / `9:16` (camelCase) - `image` (string) - Optional ### Notes Pass `image` (a public https URL) to turn a still into a clip: that is image to video. ``` -------------------------------- ### Configure emaki-mcp in MCP client Source: https://emaki.readthedocs.io/en/latest/integrations/mcp JSON configuration for adding the emaki MCP server to a client like Claude, Cursor, or Gemini CLI. Requires an EMAKI_API_KEY environment variable. ```json { "mcpServers": { "emaki": { "command": "npx", "args": ["-y", "emaki-mcp"], "env": { "EMAKI_API_KEY": "sk-..." } } } } ``` -------------------------------- ### Image Models Source: https://emaki.readthedocs.io/en/latest/models Lists the image generation models and their supported parameters. The finished image URL comes back in `videoUrl` from the status call. ```APIDOC ## Image Models ### Description Lists the image generation models and their supported parameters. The finished image URL comes back in `videoUrl` from the status call. ### Models #### `nano_banana_2_lite` - **Description**: Nano Banana 2 Lite, the lowest-cost model - **Parameters**: - `aspect_ratio` (string) - Optional - `1:1` / `4:3` / `3:4` / `16:9` / `9:16` / `2:3` / `3:2` / `21:9` / `5:4` / `4:5` #### `nano_banana_2` - **Description**: Nano Banana 2 - **Parameters**: - `aspect_ratio` (string) - Optional - `resolution` (string) - Optional - `1K` / `2K` / `4K` #### `seedream_5_lite` - **Description**: Seedream 5 Lite - **Parameters**: - `aspect_ratio` (string) - Optional - `quality` (string) - Optional - `basic` / `high` / `ultra` #### `gpt_image_2` - **Description**: GPT Image 2 - **Parameters**: - `aspect_ratio` (string) - Optional - `resolution` (string) - Optional - `1K` / `2K` / `4K` ### Notes The finished image URL comes back in `videoUrl` from the status call, the same field as video. ``` -------------------------------- ### generate_video Source: https://emaki.readthedocs.io/en/latest/sdk/python Generates a video from a text prompt. Optionally accepts an image URL to use as the first frame. Returns the URL of the finished video. ```APIDOC ## generate_video ### Description Generates a video from a text prompt. Optionally accepts an image URL to use as the first frame. Returns the URL of the finished video. ### Method Function call ### Endpoint `generate_video(prompt, duration=8, resolution="720p", aspect_ratio="9:16", image=None, **kwargs)` ### Parameters - **prompt** (string) - Required - Text description of the video to generate. - **duration** (integer) - Optional - Duration of the video in seconds. Default is 8. - **resolution** (string) - Optional - Resolution of the video. Default is "720p". - **aspect_ratio** (string) - Optional - Aspect ratio of the video. Default is "9:16". - **image** (string) - Optional - URL of an image to use as the first frame. - **kwargs** - Optional - Extra keyword arguments are passed into `parameters` as they are. ### Request Example ```python from emaki import generate_video clip = generate_video("a fox trotting through fresh snow at dawn, tracking shot", duration=8, resolution="720p", aspect_ratio="9:16") ``` ### Response Returns the URL of the finished video file. ``` -------------------------------- ### POST /api/video/ai Source: https://emaki.readthedocs.io/en/latest Creates a video generation job by sending a prompt, model id, and parameters. Returns a job id that can be used to check status. ```APIDOC ## POST /api/video/ai ### Description Creates a video generation job by sending a prompt, model id, and parameters. Returns a job id that can be used to check status. ### Method POST ### Endpoint https://emaki.ai/api/video/ai ### Parameters #### Request Body - **prompt** (string) - Required - The text prompt describing the video to generate. - **model** (string) - Required - The model id, e.g., `seedance_2_5`. - **parameters** (object) - Optional - Additional parameters, e.g., `duration`. ### Request Example { "prompt": "a paper boat drifting on a calm lake at sunrise, slow dolly in", "model": "seedance_2_5", "parameters": { "duration": 5 } } ### Response #### Success Response (200) - **id** (string) - The job id to use for status checks. #### Response Example { "id": "job_id" } ``` -------------------------------- ### Check credit balance with curl Source: https://emaki.readthedocs.io/en/latest/http POST to /api/user/get-user-credits to check remaining credits. The response includes remainingCredits and hasPurchasedCredits. A refusal returns HTTP 200 with code -1, so check the code field. ```bash curl -s -X POST https://emaki.ai/api/user/get-user-credits -H "Authorization: Bearer $EMAKI_API_KEY" ``` -------------------------------- ### emaki.image() Source: https://emaki.readthedocs.io/en/latest/integrations/ai-sdk Generates an image using the emaki provider. It works with the generateImage function from the AI SDK. The provider passes through model parameters and handles errors similarly to emaki.video(). ```APIDOC ## emaki.image() ### Description Generates an image using the emaki provider. It works with the generateImage function from the AI SDK. The provider passes through model parameters and handles errors similarly to emaki.video(). ### Method SDK Function ### Endpoint emaki.image() ### Parameters #### Function Parameters (passed to generateImage) - **model** (object) - Required - The model instance returned by emaki.image(). - **prompt** (string) - Required - The text prompt describing the image to generate. - **providerOptions.emaki** (object) - Optional - Additional model parameters to pass through. ### Request Example ```javascript import { generateImage } from 'ai'; import { emaki } from 'emaki-ai-provider'; const { image } = await generateImage({ model: emaki.image(), prompt: 'a cat sitting on a windowsill', }); ``` ### Response #### Success Response - **image** (object) - The generated image object. #### Error Handling Failures throw `EmakiError` with a `reason` field. Possible reasons: `auth`, `quota`, `plan`, `busy`, `rejected`, `failed`, `timeout`. ``` -------------------------------- ### credits Source: https://emaki.readthedocs.io/en/latest/sdk/python Returns the remaining credits for the user. This call is free to make. ```APIDOC ## credits ### Description Returns the remaining credits for the user. This call is free to make. ### Method Function call ### Endpoint `credits()` ### Parameters None ### Request Example ```python from emaki import credits print(credits()) ``` ### Response Returns the remaining credits as a number. ``` -------------------------------- ### generate_image Source: https://emaki.readthedocs.io/en/latest/sdk/python Generates an image from a text prompt. Returns the URL of the finished image. ```APIDOC ## generate_image ### Description Generates an image from a text prompt. Returns the URL of the finished image. ### Method Function call ### Endpoint `generate_image(prompt, aspect_ratio="1:1", **kwargs)` ### Parameters - **prompt** (string) - Required - Text description of the image to generate. - **aspect_ratio** (string) - Optional - Aspect ratio of the image. Default is "1:1". - **kwargs** - Optional - Extra keyword arguments are passed into `parameters` as they are. ### Request Example ```python from emaki import generate_image pic = generate_image("isometric diorama of a ramen shop at night", aspect_ratio="1:1") ``` ### Response Returns the URL of the finished image file. ``` -------------------------------- ### EmakiVideoGenerator Source: https://emaki.readthedocs.io/en/latest/integrations/haystack Haystack component for generating videos using Emaki's Seedance 2.5 model by default. Accepts a prompt and optional first-frame image, returns video URLs. ```APIDOC ## EmakiVideoGenerator ### Description Generates a video from a text prompt and optionally an initial frame image. Returns a dictionary with a list of video URLs. ### Method `run()` ### Input Parameters - **prompt** (string) - Required - Text prompt describing the video. - **image_url** (string) - Optional - URL of the first frame image for image-to-video generation. ### Output - **videos** (array of strings) - List of generated video URLs. ### Initialization Parameters - **model** (string) - Optional - Model identifier (default: Seedance 2.5). - **duration** (number) - Optional - Video duration in seconds. - **resolution** (string) - Optional - Video resolution. - **aspect_ratio** (string) - Optional - Aspect ratio (e.g., "9:16"). - **generate_audio** (boolean) - Optional - Whether to generate audio. ### Example ```python from emaki_haystack import EmakiVideoGenerator EmakiVideoGenerator(duration=5, aspect_ratio="9:16").run(prompt="a lighthouse beam sweeping across fog at night") # {"videos": ["https://cdn.emaki.ai/..."]} ``` ``` -------------------------------- ### EmakiImageGenerator Source: https://emaki.readthedocs.io/en/latest/integrations/haystack Haystack component for generating images from a text prompt. Returns a dictionary with a list of image URLs. ```APIDOC ## EmakiImageGenerator ### Description Generates an image from a text prompt. Returns a dictionary with a list of image URLs. ### Method `run()` ### Input Parameters - **prompt** (string) - Required - Text prompt describing the image. ### Output - **images** (array of strings) - List of generated image URLs. ### Initialization Parameters - **model** (string) - Optional - Model identifier. - **aspect_ratio** (string) - Optional - Aspect ratio. ### Example ```python from emaki_haystack import EmakiImageGenerator EmakiImageGenerator().run(prompt="a cat") # {"images": ["https://cdn.emaki.ai/..."]} ``` ``` -------------------------------- ### POST /api/user/get-user-credits Source: https://emaki.readthedocs.io/en/latest/http Retrieves the current credit balance for the authenticated user. This endpoint is free to call. ```APIDOC ## POST /api/user/get-user-credits ### Description Retrieves the current credit balance for the authenticated user. This endpoint is free to call. ### Method POST ### Endpoint https://emaki.ai/api/user/get-user-credits ### Parameters None ### Response #### Success Response (200) - **code** (integer) - 0 indicates success, -1 indicates refusal - **data** (object) - Present on success - **remainingCredits** (integer) - The number of remaining credits - **hasPurchasedCredits** (boolean) - Whether the user has purchased credits - **message** (string) - Present on refusal, explains the error #### Response Example { "code": 0, "data": {"remainingCredits": 120, "hasPurchasedCredits": true} } ``` -------------------------------- ### POST /api/video/status Source: https://emaki.readthedocs.io/en/latest Checks the status of a video generation job. Poll this endpoint every 5 seconds until the status is `completed` or `failed`. ```APIDOC ## POST /api/video/status ### Description Checks the status of a video generation job. Poll this endpoint every 5 seconds until the status is `completed` or `failed`. ### Method POST ### Endpoint https://emaki.ai/api/video/status ### Parameters #### Request Body - **id** (string) - Required - The job id returned from the video creation call. ### Request Example { "id": "job_id" } ### Response #### Success Response (200) - **status** (string) - The current status of the job, e.g., `completed` or `failed`. - **videoUrl** (string) - The URL of the generated video, present when status is `completed`. #### Response Example { "status": "completed", "videoUrl": "https://example.com/video.mp4" } ``` -------------------------------- ### Poll run status with curl Source: https://emaki.readthedocs.io/en/latest/http POST to /api/video/status with the videoId from the submit response. Poll every 5 seconds. On completion, the result URL is in videoUrl. On failure, failureCode indicates the reason. ```bash curl -s -X POST https://emaki.ai/api/video/status \ -H "Authorization: Bearer $EMAKI_API_KEY" \ -H "Content-Type: application/json" \ -d '{"videoId": ""}' ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.