MintRender
All docs pages

Credits and usage

One image or one PDF page is one credit. A file that already exists, a preview, a test-key render and a failed render cost nothing.

What costs a credit

WhatCredits
One size of one template as PNG, JPEG, WebP or SVG1
One page of a PDF (per size)1
The same template version, data, format, size, scale, quality and images again0: the stored file comes back with cached: true
A signed link view of a file that exists, or a view from the edge cache0
A render with a test key (mr_test_)0
A render that fails, or a job you cancel before it starts0: the credits come back
POST /v1/preview0
AI templates0 credits. They have their own monthly limit.
Templates, assets, webhooks, links made with POST /v1/links0

Examples

RequestCredits
format: "png", sizes: ["main"]1
format: "webp", sizes: ["main", "square", "story"]3
A PDF template with 4 pages, sizes: ["main", "a4"]8
A batch of 500 rows, one size, PNG500
The same render again the next day0
The same render with a new title1

Credits by plan

FreeStarterProBusiness
Price a month$0$19$39$99
Credits a month1002,0005,00025,000
Over the plan, per creditStops$0.012$0.008$0.004

On the Free plan, the period is the calendar month in UTC, like 2026-11. On a paid plan, it is one month of your billing cycle. It starts on the day and time of the month that your subscription started, like 2026-11-14T10:22:05Z. A yearly plan also gets its credits each month. If the cycle starts on the 31st, a shorter month starts on its last day. Each period starts with the plan's full credits. Credits that are not used do not carry over. Prices are on the pricing page.

Change your plan

  • An owner changes a paid plan under Account, Plan, "Change plan": another plan, or monthly and yearly payment. An owner of a Free workspace picks its first plan under Account, Plan.
  • A bigger plan, or monthly to yearly: Stripe charges the card at once for the difference for the rest of the period. This period's credits become the new plan's at once. Credits already used stay used.
  • If that payment does not go through, the plan stays as it is and the page says why (payment_failed). Pay the open invoice or change the card under "Card, invoices or cancel", and the change is made then.
  • A smaller monthly plan gives no money back. The new price starts with the next bill, and this period keeps its credits until it ends.
  • A yearly plan can change only to a bigger yearly plan (yearly_plan). To pay less, cancel it and choose a new plan when the year ends. A monthly plan can go yearly only to the same or a bigger plan (smaller_yearly): change to the smaller plan first, then to yearly.
  • A change from monthly to yearly starts a new period that day. The credits already used in this period stay used.
  • Overage used so far is billed at the old plan's price before the change.
  • The overage cap keeps its dollar amount. It becomes credits at the new plan's price per credit.
  • Card, invoices and cancel are under "Card, invoices or cancel" (Stripe's billing page). When the subscription ends, the workspace goes back to Free and overage is turned off.

How a render is charged

  1. Reserve. Before a render, the API takes the full cost from your credits: sizes times pages. If they do not fit, the answer is 402 and nothing is made.

  2. Settle. Sizes that already had a file give their credits back. The render's credits field is what it cost.

  3. Refund. A render that fails gives all its credits back, once.

A job (mode: "async") reserves when it is queued. Cancel it with DELETE /v1/renders/{id} before it starts and its credits come back. A batch reserves every row at once: if all rows do not fit, the batch answers 402 before any row starts. Each failed row gives its credits back.

When credits run out

A request that needs a new render answers 402 no_credits. The message gives the numbers:

{"error": {"code": "no_credits", "message": "this render needs 3 credits; 1 of this period's 2000 credits are left (turn on overage in your plan settings, or upgrade). New credits come on 2026-12-14 10:22 UTC.", "request_id": "req_…"}}

Files that already exist still come back at no cost. A sync render whose sizes all have files answers 200 with cached: true even with no credits left.

Overage

  • Overage lets a paid plan go past its credits at the price per credit above. It is off by default.
  • An owner turns it on under Account, Plan, "Over the plan", with a monthly cap in dollars from $1 to $10,000.
  • The cap becomes credits: the cap divided by the plan's price per credit, rounded down. On Starter, a $12 cap is 1,000 credits.
  • Plan credits are used first. Overage is used only when they are gone.
  • When overage reaches its cap, renders answer 402 until new credits come or the cap is higher. A lower cap never goes below what this period already used.
  • The Free plan has no overage. It stops at 100 credits.

GET /v1/usage

This period's credits and render counts for the key's workspace.

curl

curl "https://mintrender.com/v1/usage" \  -H "Authorization: Bearer $MINTRENDER_KEY"

JavaScript

const res = await fetch("https://mintrender.com/v1/usage", {  method: "GET",  headers: {    Authorization: `Bearer ${process.env.MINTRENDER_KEY}`,  },});const body = await res.json();if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message} (${body.error.request_id})`);console.log(body);

Python

import os import requests res = requests.get(    "https://mintrender.com/v1/usage",    headers={"Authorization": f"Bearer {os.environ['MINTRENDER_KEY']}"},    timeout=120,)body = res.json()if not res.ok:    raise RuntimeError(f"{body['error']['code']}: {body['error']['message']} ({body['error']['request_id']})")print(body)
{  "period": "2026-11-14T10:22:05Z",  "period_ends": "2026-12-14T10:22:05.000Z",  "plan": "starter",  "credits_included": 2000,  "credits_used": 154,  "credits_left": 1846,  "overage": { "enabled": false, "used": 0, "cap": 0 },  "renders": {    "by_format": { "png": 120, "pdf": 12 },    "by_source": { "api": 100, "batch": 30, "link": 2 },    "cached": 40,    "failed": 1  }}
FieldAbout
periodFree: the UTC month, like 2026-11. A paid plan: the start of this month of the billing cycle.
period_endsWhen new credits come.
planfree, starter, pro or business.
credits_includedThis period's credits.
credits_usedPlan credits used. Overage is counted apart.
credits_leftcredits_included minus credits_used, never below 0.
overageenabled, used (credits over the plan in this period) and cap (in credits).
renders.by_formatRender records in this period by format.
renders.by_sourceRender records by source: api, mcp, batch or link.
renders.cachedRender records answered from stored files.
renders.failedRender records that failed.

The render counts count render records. Credits are in the fields above. A signed link view of a stored file leaves no record.

Seen MintRender used for content that breaks our terms? Report it. Questions about the API: support@mintrender.com, with the request id.