saymaker
Generate images and video from Python on SayMaker: one API key runs Veo 3.1, Kling 3.0, Seedance 2.0, MiniMax H3, Nano Banana 2, GPT Image 2.5, Seedream 5.0 and the rest of the shelf on your own credits.
from saymaker import generate, generate_video
url = generate("a paper-cut layered mountain range at dusk, warm rim light")
clip = generate_video("a paper boat drifting down a rain gutter, low angle, slow push-in")
Standard library only, no dependencies. Each call returns the URL of the finished file.
API key
Sign up on saymaker.ai (new accounts get sign-up credits), create a key at saymaker.ai/settings/apikeys, then either pass it or export it:
export SAYMAKER_API_KEY=sk-...
A key runs on your account exactly like the site does: same models, same credit prices, same plan, and every run lands in your library at saymaker.ai/history.
Images
generate("isometric diorama of a ramen shop at night", aspect_ratio="16:9")
generate("product shot of a glass perfume bottle on wet slate", model="gpt-image-2-5-flare")
The default model is saymaker-image-v1, the cheapest text-to-image run. Pass model= for nano-banana-2, gpt-image-2-5-flare, seedream-5-pro, qwen-image-3-pro and the others listed in saymaker.MODELS.
Editing a photo
Pass image_url and the prompt describes the change rather than the picture:
generate(
"change the jacket to dark green, keep the face, pose and background exactly as they are",
image_url="https://example.com/portrait.jpg",
)
Naming what must stay is what decides whether the edit holds. Prompts that only name the change tend to drift the whole picture.
Video
generate_video("a fox trotting through fresh snow at dawn, tracking shot", duration=6)
generate_video("the camera slowly orbits the statue", image_url="https://example.com/statue.jpg")
generate_video("a street drummer in the rain", model="veo-3-1", resolution="1080p")
Video takes minutes; generate_video waits up to 15 minutes by default (timeout=). The default model is minimax-h3-fast, the one a free account can run (480p or 768p, 4 to 15 seconds). Veo 3.1, Kling 3.0, Seedance 2.0 and the other video models need a plan or a credit pack; see pricing. Each model's options are on its page, e.g. Veo 3.1, Kling 3.0, Seedance 2.0.
Errors worth catching
Each failure is its own subclass of SayMakerError, 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 paid plan or a credit packRejectedError— the content filter or the model refused the prompt; rewrite it rather than retrying
The API answers refusals with HTTP 200 and an error code in the body, so a client that only checks the status code reports a refusal as success. This one reads the body.
Free-account output carries a watermark; a paid plan returns the clean file.
MIT licensed. Made by SayMaker, the AI video generator agent.
Metadata
Release files for saymaker 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 | |
|---|---|---|---|
| saymaker-0.1.0.tar.gz | 7.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| saymaker-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.4 kB
Release files / saymaker-0.1.0.tar.gz
| Download URL | saymaker-0.1.0.tar.gz |
|---|---|
| Size | 7.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
838dfdcda8d2421551731fa2a3acf16937b892f9e25ddb2348ef0120682ce734
|
|
BLAKE2b-256 checksum How to use checksums |
be1e4f8bc69980f844312bdcc40460e4cb11556ebdd9d27dbaaca1aef564d865
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / saymaker-0.1.0-py3-none-any.whl
| Download URL | saymaker-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
11e24c8fa998a62ca9629d8a8905744e17a4c013e65d8d33fb8370d58c2a40b7
|
|
BLAKE2b-256 checksum How to use checksums |
217e94f8d6a3e8839ef5abde993a42e53852f8aa061569fc2d835022df3dead5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|