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 deletedQuotaError: the account is out of creditsPlanError: that model needs a purchase on the account firstBusyError: another run on this account is still generatingRejectedError: the content filter refused the prompt, or a cooldown is active; reword itGenerationFailed: the run was accepted but failed;.codeholds 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)
| File | Size | Uploaded | |
|---|---|---|---|
| emaki-0.1.0.tar.gz | 7.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|