Pricing
What a generation costs, and how to work it out before you send one.
Rates are public and need no key.
curl https://app.piernode.com/api/v1/pricing{
"currency": "USD",
"products": [
{
"product": "image.generate",
"unit": "image",
"tiers": [
{ "tier": "1k", "unitPrice": "0.01" },
{ "tier": "2k", "unitPrice": "0.02" }
]
}
]
}Current rates
Read from that endpoint when this page is served, so the table is what an account is charged today rather than what was true when somebody last edited the documentation.
product | Endpoint | tier | unitPrice | One request |
|---|---|---|---|---|
image.generateText to image | /api/v1/images/generations | 1k | $0.01 / image | $0.01 |
2k | $0.02 / image | $0.02 | ||
4k | $0.03 / image | $0.03 | ||
image.transformImage effects · image to image | /api/v1/images/transformations | hd | $0.02 / image | $0.02 |
fhd | $0.03 / image | $0.03 | ||
video.generateText to video | /api/v1/videos/generations | 480p | $0.084 / second | $0.42 for 5 s |
512p | $0.112 / second | $0.56 for 5 s | ||
720p | $0.14 / second | $0.70 for 5 s | ||
1080p | $0.20 / second | $1.00 for 5 s | ||
video.transformVideo effects · image to video | /api/v1/videos/transformations | hd | $0.084 / second | $0.42 for 5 s |
fhd | $0.14 / second | $0.70 for 5 s |
Effects are not a product of their own. An image effect is
image.transform and a video effect is video.transform, called by effectId
instead of a prompt, at exactly the rate above — naming an effect costs nothing
extra.
Volume discounts
Top up $10,000 or more within a calendar month and your rates for that month drop by 20%. For other volumes and arrangements, ask @PierNodeSupport on Telegram.
Working out a cost
unit tells you what to multiply by, and tier says which rate applies.
product | Endpoint | unit | One request costs |
|---|---|---|---|
image.generate | /api/v1/images/generations | image | unitPrice |
image.transform | /api/v1/images/transformations | image | unitPrice |
video.generate | /api/v1/videos/generations | second | unitPrice × durationSeconds |
video.transform | /api/v1/videos/transformations | second | unitPrice × durationSeconds |
tier is the value you send as resolution — for the video endpoints that is
what one second of finished video costs at that tier, so an eight-second clip
costs eight times what one second does.
Prices are strings, never floating-point numbers. Multiply them with a decimal
library, not with Number.
How you are charged
Your account holds a USD balance.
- Starting a generation reserves its cost immediately.
- The reservation becomes a charge when the task succeeds.
- It is released in full if the task fails or is cancelled before it starts.
Polling a task is free. So is uploading an image.
Tiers that are not on sale
A product or tier with no configured rate does not appear in the response.
Requesting it returns 503, nothing is reserved, and there is no fallback rate
you could be charged instead.