Skip to main content

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 waits for the run and returns the URL of the finished file. Runs on a free account wait in a queue before they start, and the wait grows with each run of the day; a paid plan starts at once. The default timeouts cover the longest wait.

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")

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 deleted
  • QuotaError — the account is out of credits
  • PlanError — that model needs a paid plan or a credit pack
  • BusyError — another run on this account is still rendering; free accounts run one at a time
  • RejectedError — 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.1

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

Source distribution (sdist)

Source distribution for saymaker 0.1.1
File Size Uploaded
saymaker-0.1.1.tar.gz 7.7 kB Details

Built distribution (wheel)

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

Total release size: 14.9 kB

Release files / saymaker-0.1.1.tar.gz

Download URL saymaker-0.1.1.tar.gz
Size 7.7 kB
Tags Source
SHA-256 checksum
How to use checksums
22b8383e7a5611daad4f106795f060243cde0de94636008b84b1fdbd22175084
BLAKE2b-256 checksum
How to use checksums
bd3b72b4a68ae30bf6dd4773956635e35db9c28a908d83d308b823b74ce3af74
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.1-py3-none-any.whl

Download URL saymaker-0.1.1-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6e235b18e0744ada5c6d00736720ea4594399527b7da4adcb2b5cffa81d7e66b
BLAKE2b-256 checksum
How to use checksums
9e2226fcf3efc58c657a746ef241fc6dcf00b34215b826df4c5ee050b24aad3a
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.1 This release

2 release files

0.1.0

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