Seedance API in Brazil: price per second in reais and Python code
What it costs to generate video with Seedance 2.0, 2.0 Fast, 2.0 Mini and 2.5 through the API when you pay in Brazilian reais, how to call it with curl and Python, and what I saw in a real 5-second test.

Seedance API in Brazil: price per second in reais and Python code
You can generate video with Seedance through the API paying in Brazilian reais, with Pix and a Brazilian invoice, and know the price of every second before spending a cent. In this guide I show what each version costs today, how to make your first call in Python, and what came out of a real 5-second test.
How much does the Seedance API cost per second?
It depends on the version and the resolution, and the gap is big: Seedance 2.5 at 720p costs eleven times what 2.0 Mini costs at the same resolution. The table below is from Cut.Pro on November 6, 2026, per second of video, on the cheapest credit pack (prices in Brazilian reais).
| Version | 480p | 720p | 1080p | Duration |
|---|---|---|---|---|
| Seedance 2.0 Mini | R$ 0.12 | R$ 0.24 | not available | 4 to 15 s |
| Seedance 2.0 Fast | R$ 0.24 | R$ 0.54 | R$ 1.20 | 4 to 15 s |
| Seedance 2.0 | R$ 0.84 | R$ 1.74 | R$ 3.83 | 4 to 15 s |
| Seedance 2.5 | R$ 1.26 | R$ 2.70 | R$ 5.27 | 4 to 30 s |
These prices change when the model's cost changes, so don't hardcode them. The current table lives at cut.pro/pt-BR/models, with one page per version (for example, Seedance 2.5), and the same data comes out as JSON, no key needed, at https://api.cut.pro/public/generations/models.
A 5-second clip at 720p comes out like this: R$ 1.20 on Mini, R$ 2.70 on Fast, R$ 8.70 on 2.0 and R$ 13.48 on 2.5. If you generate dozens of variations a day, picking the version matters more than any other detail.
Why does paying in reais make a difference?
Because the dollar bill on a card is not just the list price. In Brazil, anyone paying a foreign API with a credit card pays 3.5% IOF (the federal tax on foreign transactions) plus the bank's exchange rate, which usually sits a few percent above the commercial one. For a company there is also the invoice problem: an expense abroad with no Brazilian document complicates the accounting.
On Cut.Pro the API uses the same credits as your account, bought in reais with Pix or card. Every new account starts with free credits, so the first test costs nothing. The API key exists on every plan, including the free one.
How do you call the Seedance API in Python?
There are four steps: create the key, quote, generate and fetch the result. I would always quote first, because the quote is free and returns the exact number you will repeat when generating.
- Create the key at cut.pro/studio/me/api-keys and store it in an environment variable,
CUTPRO_API_KEY. - Quote the request at
POST /generations/quote. It generates nothing and charges nothing. - Generate at
POST /generations, repeating thecreditsfrom the quote. If the price changed along the way, the response is409 PRICE_CHANGEDwith the new value, and nothing is charged. - Fetch the result at
GET /generations/{id}?wait=60, which holds the response until the video is ready or the time runs out.
import os
import uuid
import requests
API = "https://api.cut.pro/api/v1"
HEADERS = {"X-Api-Key": os.environ["CUTPRO_API_KEY"]}
request = {
"kind": "video",
"model": "bytedance/seedance-2-fast",
"resolution": "720p",
"seconds": 5,
"aspect_ratio": "9:16",
"prompt": "a street vendor frying pastel at night in São Paulo, steam rising, neon reflected on the wet sidewalk",
}
quote = requests.post(f"{API}/generations/quote", json=request, headers=HEADERS).json()
print("it will cost", quote["credits"], "credits")
generation = requests.post(
f"{API}/generations",
json={**request, "credits": quote["credits"]},
headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
).json()
while generation["status"] == "processing":
generation = requests.get(f"{API}/generations/{generation['id']}", params={"wait": 60}, headers=HEADERS).json()
print(generation["status"], generation["output"]["url"] if generation["output"] else generation["error_code"])
The Idempotency-Key prevents a double charge if the network drops and you send the request again: the same key within 24 hours returns the first response. If your system already has a public endpoint, swap the wait loop for webhook_url in the request and get notified when it finishes.
The same request in curl, to try in the terminal:
curl -X POST https://api.cut.pro/api/v1/generations/quote \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "kind": "video", "model": "bytedance/seedance-2-fast", "resolution": "720p", "seconds": 5, "aspect_ratio": "9:16", "prompt": "a street vendor frying pastel at night in São Paulo" }'
What came out of the real test?
I ran exactly that request on Seedance 2.0 Fast, 5 seconds at 9:16 and 720p. It cost 45 credits and was ready in about 1 minute and 45 seconds, counting the upload and the wait.
The bubbling oil, the dough browning at the edges and the neon reflection on the wet sidewalk looked convincing, like something shot on a phone. What didn't show up was the vendor: I asked for someone flipping the pastel and the model delivered only the frying pan. For a scene with a person doing a specific action, I would describe the hand and the gesture right at the start of the prompt, or test the same prompt on the full Seedance 2.0 before generating in volume.
Which version should you pick for your project?
Use Mini or Fast for drafts and 2.0 for the version that goes live. In practice, this is how I would do it:
- Idea tests and mass variations: 2.0 Mini at 720p. It is the cheapest in the family and works to validate script and framing.
- Social media content in volume: 2.0 Fast at 720p, the middle ground between cost and quality.
- Final piece and ads: 2.0 at 1080p.
- Long clip or many references: 2.5, which goes up to 30 seconds and accepts up to 30 reference images. This is the case where the higher price pays for itself.
If you are coming from another model that went offline, as I covered in the post on the Sora API shutdown, the lesson from what to do when a model is discontinued applies: don't tie your system to a single model. On Cut.Pro, switching from Seedance to Wan, Kling or Veo means changing the model field, with the same request format. I wrote more about this in model convergence.
Where to start
Create the key, quote a 5-second video on 2.0 Mini and generate it with your account's free credits. If the result works, move up to Fast or 2.0 only for the final pieces. The price table for each model is at cut.pro/pt-BR/models, and the full API documentation, with Node and Python, is at cut.pro/docs. If you use an AI agent, the same API is available through the Cut.Pro MCP.


