Quickstart
Create a key, render a take, download the file.
- 1Create an API key
Open Developers, press New key, pick the project it bills to and an optional monthly cap. Copy it: it is shown once.
- 2Export itbash
export TAKES_API_KEY=tk_your_key - 3Check the pricebash
curl https://edengen.ai/v1/estimate \ -H "Authorization: Bearer $TAKES_API_KEY" -H "Content-Type: application/json" \ -d '{"model":"seedance-2.0-mini","prompt":"Lighthouse in a storm, no music, no cut","resolution":"480p","duration":5}' - 4Render and wait for the filebash
curl https://edengen.ai/v1/takes \ -H "Authorization: Bearer $TAKES_API_KEY" \ -H "Content-Type: application/json" \ -H "Prefer: wait=60" \ -H "Idempotency-Key: shot-12a-v1" \ -d '{ "model": "seedance-2.0-mini", "prompt": "Slow push in on a lighthouse in a storm, waves breaking, no music, no cut", "resolution": "480p", "duration": 5 }' - 5Download itbash
curl -L -OJ https://edengen.ai/v1/takes/TAKE_ID/content -H "Authorization: Bearer $TAKES_API_KEY"The file name is
{take_id}_{model}_{resolution}.mp4.output.urlis signed for 24 hours and does not need the API key. The file is deleted 60 days after the take finishes.
Official SDKs
Typed clients for TypeScript and Python, no dependencies. Every create carries an idempotency key, so their automatic retries never charge twice. They live in the repository under sdk/ and are not on npm or PyPI yet.
TypeScript (sdk/typescript)
import { Takes } from "@takes/sdk";
const takes = new Takes({ apiKey: process.env.TAKES_API_KEY, baseUrl: "https://edengen.ai" });
const take = await takes.takes.run({ model: "seedance-2.0-mini", prompt: "Lighthouse in a storm, no music, no cut", resolution: "480p", duration: 5 });
const file = await takes.takes.download(take); // file.filename keeps the take IDPython (sdk/python)
from takes import Takes
client = Takes(base_url="https://edengen.ai") # TAKES_API_KEY from env
take = client.takes.run(model="nano-banana-pro", prompt="Extreme close up of an eye, 21:9", resolution="2K")
print(client.takes.download(take))Plain HTTP in Python
python
import os, time, requests
TAKES = "https://edengen.ai/v1"
H = {"Authorization": f"Bearer {os.environ['TAKES_API_KEY']}"}
job = {"model": "nano-banana-pro", "prompt": "Extreme close up of an eye, interface reflected in the iris, 21:9", "resolution": "2K"}
est = requests.post(f"{TAKES}/estimate", json=job, headers=H).json()
print(f"${est['usd_total']:.2f}, {est['project']['remaining_usd']:.2f} left on {est['project']['name']}")
take = requests.post(f"{TAKES}/takes", json=job, headers=H).json()
while take["status"] in ("queued", "processing"):
time.sleep(3)
take = requests.get(f"{TAKES}/takes/{take['id']}", headers=H).json()
if take["status"] == "succeeded":
data = requests.get(take["output"]["url"], headers=H).content
open(take["output"]["filename"], "wb").write(data)
else:
print("refunded:", take["error"])Ready to run it for real?
Set up your studio and a first project, then connect your code or an agent.