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 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 deleted
  • QuotaError — the account is out of credits
  • PlanError — that model needs a paid plan or a credit pack
  • 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.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 saymaker 0.1.0
File Size Uploaded
saymaker-0.1.0.tar.gz 7.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for saymaker 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

0.1.1

2 release files

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