Skip to main content

emaki

Official SDK for emaki (emaki.ai), the Japanese-language AI video generator for Seedance 2.5 and Seedance 2.0.

This is the Python client for emaki. One API key runs Seedance 2.5, Seedance 2.0 and the other video and image models on the site, on your own credits.

日本語での使い方は シーダンス へ。

pip install emaki
from emaki import generate_video, generate_image

clip = generate_video("a paper boat drifting down a rain gutter, low angle, slow push-in")
pic = generate_image("a paper-cut layered mountain range at dusk, warm rim light", aspect_ratio="16:9")

Standard library only, no dependencies. Each call waits for the run and returns the URL of the finished file.

API key

Sign in on emaki.ai, create a key at emaki.ai/settings/apikeys, then pass it as api_key= or export it:

export EMAKI_API_KEY=sk-...

A key runs on your account exactly like the site does. Every run costs credits on your emaki account, the same price as on the website.

from emaki import credits
print(credits())  # remaining credits, free to call

Video

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
generate_video("the camera slowly orbits the statue", image="https://example.com/statue.jpg")

# another model
generate_video("a street drummer in the rain", model="seedance_2_fast")

The default model is seedance_2_5. Other ids: seedance_2, seedance_2_fast, seedance_2_mini, minimax_h3, veo_3_1. Any extra keyword argument is sent in parameters as it is (duration, resolution, aspect_ratio, generate_audio, image, last_frame_image; Veo 3.1 takes aspectRatio).

Turning a still into a clip on the site works the same way: see image to video. To sharpen a finished clip there is the AI video upscaler.

Images

generate_image("isometric diorama of a ramen shop at night", aspect_ratio="1:1")
generate_image("product shot of a glass perfume bottle on wet slate", model="gpt_image_2", resolution="2K")

The default model is nano_banana_2_lite. Other ids: nano_banana_2, seedream_5_lite, gpt_image_2.

Submit now, collect later

from emaki import submit, status, wait

run_id = submit("a lighthouse in a storm, waves crashing", "seedance_2_5", duration=5)
print(status(run_id)["status"])   # generating | completed | failed
url = wait(run_id)                # polls every 5 seconds, 15 minutes by default

Errors worth catching

Each failure is its own subclass of EmakiError, so you can branch on what to do next:

  • AuthError: no key, or the key is wrong or deleted
  • QuotaError: the account is out of credits
  • PlanError: that model needs a purchase on the account first
  • BusyError: another run on this account is still generating
  • RejectedError: the content filter refused the prompt, or a cooldown is active; reword it
  • GenerationFailed: the run was accepted but failed; .code holds the failure code

Any other refusal raises EmakiError with the server's message, for example a parameter out of range.

MIT licensed. Made by emaki.

Metadata

Release files for emaki 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for emaki 0.1.0
File Size Uploaded
emaki-0.1.0.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for emaki 0.1.0
File Interpreter ABI Platform
emaki-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 14.5 kB

Release files / emaki-0.1.0.tar.gz

Download URL emaki-0.1.0.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
9c9af7c1d1212fc4092b0cde4e6526e1c242a9296442ec90fe1bd6033b071e32
BLAKE2b-256 checksum
How to use checksums
2aa8616b7b8937e2575b4f6cb5da3fa9dc915626cbd95cb7b366e1c62d298097
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / emaki-0.1.0-py3-none-any.whl

Download URL emaki-0.1.0-py3-none-any.whl
Size 6.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7726cd3cf7870af3bb8cebaebb22197263a18745d53831725bb71af19c57571e
BLAKE2b-256 checksum
How to use checksums
eea61dd3afdf3725dc94894acffd1825d3ccdd52d605a0abfe3f4a83302d0584
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page