API keys and test keys
Every API call sends a key in the Authorization header. A live key makes real files and spends credits. A test key makes the same files with a watermark and costs nothing.
What a key looks like
mr_live_8Fk2LmQ9xP0aB4nC7vR2sT6uW1yZ3dE5mr_test_8Fk2LmQ9xP0aB4nC7vR2sT6uW1yZ3dE5- A key is
mr_live_ormr_test_and then 32 letters and digits. - A key belongs to the workspace it was made in. All keys of a workspace use the same credits, templates and files.
- We show the whole key once, when you make it. We keep only its SHA-256 hash. Lists show its first 16 characters.
- The "last used" time of a key is updated at most once a minute.
Make and revoke keys
Open the editor, then Account, API keys.
Type a name of 1 to 100 characters, like "Production". Tick "Test key" for a test key.
Press "Make a key" and copy the key at once. It is not shown again.
Owners and editors can make keys. An owner can revoke any key of the workspace; an editor can revoke only the keys they made, and other keys answer 403 owner_only. Viewers can only see the list. "Revoke" stops the key at once, and the next call with it answers 401. When the person who made a key leaves the workspace, is removed from it, or deletes their account, their keys are revoked too. Keys are managed only in the signed-in account pages. An API key cannot make or revoke keys.
Send the key
Send the key as a bearer token on every call. This call reads your usage. Use it to check that a key works:
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)Keep keys on your server. Never put a key in browser code, an app you ship or a public repository. For images in web pages, use signed links. A signed link carries a signature and no key.
Test keys
| Live key (mr_live_) | Test key (mr_test_) | |
|---|---|---|
| Credits | 1 per image, 1 per PDF page | 0 |
| The file | As designed | With a grey "MintRender test" text repeated across each page |
| Cache | Shares stored files with other live renders | Has its own stored files: a test render never gives a live file |
| Rate limits and running jobs | The plan's limits | The same limits |
| Templates, assets, webhooks | Yes | Yes, the same workspace data |
| Idempotency keys | Live answers only | Test answers only: the two never share an answer |
Use a test key while you build a workflow in n8n, Make or your own code, then change it for a live key.
What a key can and cannot do
A key can call every route of the API reference: templates, assets, renders, batches, links, webhooks and usage. It also works on the MCP server. A key cannot manage API keys, the link key, the secret for webhook_url, members, billing or account deletion. Those need a person signed in to the account pages.
OAuth access tokens (mr_oat_…) from an MCP connection work only on /mcp. Every other route refuses them with 401.
Errors
| Status | Code | When |
|---|---|---|
| 401 | unauthorized | No Authorization header, a key that is not mr_live_ or mr_test_ and 32 letters and digits, or a revoked key. The answer has WWW-Authenticate: Bearer realm="mintrender". |
| 429 | rate_limited | The key made more calls this minute than the plan allows. Wait for Retry-After seconds. |
| 451 | frozen | The workspace is frozen. Write to support. |
| 451 | expired | A reviewer workspace has ended. |
Seen MintRender used for content that breaks our terms? Report it. Questions about the API: support@mintrender.com, with the request id.