Eden Gen

Quickstart

Create a key, render a take, download the file.

  1. 1
    Create 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.

  2. 2
    Export it
    bash
    export TAKES_API_KEY=tk_your_key
  3. 3
    Check the price
    bash
    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}'
  4. 4
    Render and wait for the file
    bash
    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
      }'
  5. 5
    Download it
    bash
    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.url is 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 ID
Python (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.

Quickstart · Docs · Eden Gen