Maker API or unified image API: when direct is better
Pros and cons of a maker’s own image API and a unified API: price, keys, limits, and payment, with a checklist and the cases where this comparison does not fit.
Rendergrid editorsAbout the editors
In brief
Choose a unified API such as Rendergrid when you want one key, one balance, and one request shape for several models, a price per image you can read first, and a failed request that costs nothing. Rendergrid’s request takes a resolution and an aspect ratio, with no pixel sizes and no masks, and its balance is topped up in USDT only, on the portal’s balance page or through an account manager. If you need pixel sizes, masks, or another way to pay, or you use one maker’s models only, read that maker’s own pages before you choose.
Prices checked on . The maker side rests on published list prices for two Google models. All three images came through Rendergrid.
How do we compare the two paths?
A maker’s API is the one Google or OpenAI offers for its own models, and going direct means using it. A unified API puts models of several makers behind one key, one balance, and one request. Rendergrid is a unified API: GET /models lists the models available to your account. We compare the two paths on price, keys, limits, payment, and the result of a request.
Which path costs less per image?
Rendergrid prices an image by model and resolution. Nano Banana 2.1 costs $0.02 at 1K, $0.03 at 2K, and $0.04 at 4K. Nano Banana Pro costs $0.04 at 1K, $0.04 at 2K, and $0.07 at 4K.
The makers’ published list prices
Google publishes a price per image for both models. Each table sets Google’s list price beside the price for the model of the same name, one resolution at a time. Google’s figures are its standard tariff, not its batch mode.
| Resolution | Official Google price | Rendergrid | Savings | For $10 |
|---|---|---|---|---|
| 1K | $0.0336 | $0.02 | 40% | 500 images |
| 2K | $0.0504 | $0.03 | 40% | 333 images |
| 4K | $0.113 | $0.04 | 64% | 250 images |
| Resolution | Official Google price | Rendergrid | Savings | For $10 |
|---|---|---|---|---|
| 1K | $0.134 | $0.04 | 70% | 250 images |
| 2K | $0.134 | $0.04 | 70% | 250 images |
| 4K | $0.24 | $0.07 | 70% | 142 images |
How do keys and limits work?
On Rendergrid, one account holds up to 50 active keys. All of them spend from one balance and share the same limits, so give each integration its own key and change or revoke it alone. A key can also carry a monthly spending limit, a hard cap: once it is used up, requests with that key get 402.
Every account starts with the same limits: 120 requests a minute and 100 tasks queued or in progress. More keys do not raise them, but support can on request. Polling is limited separately, to one poll every 5 seconds for each key and task. See also handling 429 errors.
For a maker’s own API, we quote no keys or limits: read them on the maker’s own pages.
How do you pay on each path?
Rendergrid has one balance in US dollars, topped up in USDT only, on Tron (TRC20), BNB Chain (BEP20), or Solana (SOL), either on the portal’s balance page or through an account manager. The minimum is $10 on BNB Chain and Solana and $100 on Tron. The amount you choose arrives in full: we pay the payment service’s fee, and the wallet you send from pays the network fee.
The charge is per image, and a failed request is refunded at once.
If you cannot pay in USDT, Rendergrid does not fit: its balance is topped up in USDT only. A maker’s payment terms are on the maker’s own pages, and we quote none.
What do you get back from a request?
A Rendergrid request gets a 202 response with id, status, task_id, and cost: accepted, not ready. Read GET /creations/{id} until status is completed or failed, or pass a webhook_url. A completed task carries result_urls, which stay valid for a day, so save the image on your side. Each step is walked through in the Nano Banana 2.1 and Nano Banana Pro quickstarts.
The request is the same for every model: only the model field changes. This sample sends the first image’s prompt to Nano Banana 2.1 and then to Nano Banana Pro. The X-Idempotency-Key header protects you from a double charge when you repeat a request.
# Requires bash, curl and uuidgen. A new idempotency key for every request. IDEMPOTENCY_KEY="$(uuidgen)" || exit 1 curl --fail-with-body --max-time 30 \ -X POST https://api.rendergrid.io/ api/ public/ v1/ images/ generate \ -H "Authorization: Bearer $RENDERGRID_API_KEY" \ -H "Content-Type: application/json" \ -H "X-Idempotency-Key: $IDEMPOTENCY_KEY" \ -d '{ "model": "nano-banana-2.1", "prompt": "One green ceramic cup sits on an ivory seamless background, handle to the right. Position the camera near rim height at a slight angle. Soft left light and a short natural shadow reveal subtle glaze irregularities. Center the full cup with plenty of open space. No lettering, logos, people, or watermarks.", "resolution": "1K", "aspect_ratio": "1:1" }' # For Nano Banana Pro, send the same request with "model": "nano-banana-pro" # and a new X-Idempotency-Key, then read the status and the result links: curl --fail-with-body --max-time 20 \ https:// api.rendergrid.io/ api/ public/ v1/ creations/ 5b0214ae-9e39-460a-820a-f6ae3e24400b \ -H "Authorization: Bearer $RENDERGRID_API_KEY"
import os import time import uuid import requests API = "https://api.rendergrid.io/ api/ public/ v1" HEADERS = {"Authorization": f"Bearer {os.environ['RENDERGRID_API_KEY']}"} PROMPT = "One green ceramic cup sits on an ivory seamless background, handle to the right. Position the camera near rim height at a slight angle. Soft left light and a short natural shadow reveal subtle glaze irregularities. Center the full cup with plenty of open space. No lettering, logos, people, or watermarks." for model in ("nano-banana-2.1", "nano-banana-pro"): response = requests.post( f"{API}/images/generate", headers={**HEADERS, "X-Idempotency-Key": str(uuid.uuid4())}, json={"model": model, "prompt": PROMPT, "resolution": "1K", "aspect_ratio": "1:1"}, timeout=(10, 120), ) response.raise_for_status() creation_id = response.json()["id"] creation = {"status": "queued"} while creation["status"] in ("queued", "processing"): time.sleep(5) # no more often than once every 5 seconds poll = requests.get(f"{API}/creations/{creation_id}", headers=HEADERS, timeout=(5, 20)) poll.raise_for_status() creation = poll.json() print(model, creation["status"], creation.get("result_urls"))
// Node.js 22+, .mjs file import { randomUUID } from "node:crypto"; const API = "https://api.rendergrid.io/ api/ public/ v1"; const AUTH = { Authorization: `Bearer ${process.env.RENDERGRID_API_KEY}` }; const prompt = "One green ceramic cup sits on an ivory seamless background, handle to the right. Position the camera near rim height at a slight angle. Soft left light and a short natural shadow reveal subtle glaze irregularities. Center the full cup with plenty of open space. No lettering, logos, people, or watermarks."; for (const model of ["nano-banana-2.1", "nano-banana-pro"]) { const response = await fetch(`${API}/images/generate`, { method: "POST", headers: { ...AUTH, "Content-Type": "application/json", "X-Idempotency-Key": randomUUID() }, body: JSON.stringify({ model, prompt, resolution: "1K", aspect_ratio: "1:1" }), }); if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`); const { id } = await response.json(); let creation; do { // no more often than once every 5 seconds await new Promise((resolve) => setTimeout(resolve, 5000)); const poll = await fetch(`${API}/creations/${id}`, { headers: AUTH }); if (!poll.ok) throw new Error(`HTTP ${poll.status}: ${await poll.text()}`); creation = await poll.json(); } while (["queued", "processing"].includes(creation.status)); console.log(model, creation.status, creation.result_urls ?? creation.error); }
{
"id": "5b0214ae-9e39-460a-820a-f6ae3e24400b",
"status": "queued",
"task_id": "5b0214ae-9e39-460a-820a-f6ae3e24400b",
"cost": 0.02
}
{
"id": "5b0214ae-9e39-460a-820a-f6ae3e24400b",
"status": "completed",
"result_urls": [
"https:// …"
]
}
The three images below came through this flow: Nano Banana 2.1 at 1K, one attempt each. They show what one request returns, not how a maker’s own API would render the same prompt.
Prompt for this image
One green ceramic cup sits on an ivory seamless background, handle to the right. Position the camera near rim height at a slight angle. Soft left light and a short natural shadow reveal subtle glaze irregularities. Center the full cup with plenty of open space. No lettering, logos, people, or watermarks.
Nano Banana 2.1
nano-banana-2.1 · 1K · 1:1 · $0.02
Nano Banana 2.1, 1K, 1:1, one attempt, made through Rendergrid. One green cup stands on an ivory backdrop, handle to the right, with a soft shadow to its right. The whole cup, handle included, sits about 6% of the frame’s width right of center, a small departure from the prompt’s “Center the full cup”, with open space on every side. The glaze shows dark specks and lighter patches, the irregularities the prompt asked for. The camera is a little above rim height, so the inside back wall shows. No lettering, logo, or person appears.
Prompt for this image
Arrange a matching green ceramic cup, bowl and plate on an ivory seamless background. Lay the plate behind, bowl to the left and cup to the right with minimal overlap. Soft light from the left reveals their shared glaze. Include the entire set with generous margins. No lettering, logos, people, or watermarks.
Nano Banana 2.1
nano-banana-2.1 · 1K · 1:1 · $0.02
Nano Banana 2.1, 1K, 1:1, one attempt, made through Rendergrid. The plate stands at the back, the bowl on the left, and the cup on the right, as the prompt asked. The bowl and the cup stand right up against the plate’s rim. The cup has no handle, unlike the cup in the first image: each image is its own generation. The three pieces read as one glaze family, with the plate lighter than the inside of the bowl. The set sits a little below the middle of the frame, and its side margins are narrow, a departure from the generous margins the prompt asked for. No lettering, logo, or person appears.
Prompt for this image
A green ceramic cup, handle to the right, sits on pale terracotta. Use a camera near rim height and soft light from the left. A single leaf shadow falls beside the cup without crossing it. Keep the complete product within a calm, spacious composition. No lettering, logos, people, or watermarks.
Nano Banana 2.1
nano-banana-2.1 · 1K · 1:1 · $0.02
Nano Banana 2.1, 1K, 1:1, one attempt, made through Rendergrid. A green cup with its handle on the right stands on pale terracotta tiles. The shadows fall to the right, which fits the soft left light the prompt asked for. The prompt asked for a single leaf shadow; the image shows the shadow of a sprig with several leaves, below and to the right of the cup, and it does not cross the cup. The tiles show visible joints and a blurred wall forms the top band of the image; the prompt named neither. The cup sits a little right of center, and the whole cup is in view. No lettering, logo, or person appears.
When is the maker’s own API the better choice?
Go direct when a unified API’s strengths do not matter to you, or its limits get in the way.
Pros of going direct
- You use one maker’s models only. A key that spans several makers’ models adds little for you; read that maker’s own pages for what its API offers.
- You already pay for the models you need. A Rendergrid balance would be a second one to fund.
- You cannot pay in USDT. A Rendergrid balance is topped up in USDT only, on the portal’s balance page or through an account manager.
- You need exact sizes or masks. Rendergrid’s request has no
widthorheightand takes no masks. Check the maker’s own API.
Cons of going direct
- Rendergrid gives you one account, one key, and one set of limits for several models; going direct, check each maker’s own pages for its account, keys, and limits.
- Rendergrid uses one request and result format for every model; going direct, check each maker’s own request and result format.
- Rendergrid charges every model to one balance; going direct, check how each maker charges on its own pages.
When does a unified API fit better?
Choose a unified API when one setup for several models matters most.
Pros of a unified API
- One key, one balance, one request. Only the
modelfield changes between models. - A price you can read first.
GET /modelsreturns it and charges nothing. - A failed request is free. The charge is refunded at once.
- Control per integration. Each key can have its own monthly cap.
Cons of a unified API
- USDT only. A balance is topped up in USDT, on the portal’s balance page or through an account manager.
- A narrower request. No
width, noheight, no masks. - Rendergrid’s limits. By default 120 requests a minute and 100 tasks at once; support can raise them.
What should you check before you choose?
- Which models you need, and from how many makers.
- Your peak requests a minute and tasks at once, against each path’s limits.
- Whether you can pay in USDT.
- Whether you need exact pixel sizes or masks.
- The price per image at your resolutions, from the maker’s page and the Rendergrid catalog, on the same day.
- The result of one request with your own prompt.
Where does this comparison not fit?
- Two models only. The price comparison covers Nano Banana 2.1 and Nano Banana Pro. For others, compare the maker’s page with the Rendergrid catalog.
- List prices only. A price you agreed with a maker yourself is not in the tables.
- The maker side is not covered. We quote no maker’s keys, limits, or payment terms, and no image here came from a maker’s API.
- Three images, one attempt each. They show what one request returns, not speed, quality or reliability.
- Numbers change. Check Rendergrid’s prices and limits on the day you decide.
A failed request is free
Send your own prompt through one API
Change only the model field to move between models, and pay only for images that succeed.
Questions and answers
When should you use a maker’s own API instead of a unified API?
Is a unified API cheaper?
Do you need a separate key for each model?
model field changes. You can still create a key for each integration.Can you set an exact size in pixels?
width and height.Sources
- Google AI for Developers: API pricingGoogle’s list prices for both models, standard tariff. Checked on .
- OpenAI: API pricingOpenAI’s own price page. No OpenAI price is quoted here.
- Rendergrid pricingThe price per image for every model and resolution.
- Rendergrid docs: keys and authenticationUp to 50 active keys, a monthly limit for each.
- Rendergrid docs: limitsRequest rate, tasks in progress, polling.
- Rendergrid docs: USDT top-upNetworks, minimums, fees, payment window.
- Rendergrid docs: models and parametersThe catalog, resolutions, aspect ratios.
- Rendergrid docs: quickstartThe request, the status, the result.





