MintRender
All docs pages

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_ or mr_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

  1. Open the editor, then Account, API keys.

  2. Type a name of 1 to 100 characters, like "Production". Tick "Test key" for a test key.

  3. 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_)
Credits1 per image, 1 per PDF page0
The fileAs designedWith a grey "MintRender test" text repeated across each page
CacheShares stored files with other live rendersHas its own stored files: a test render never gives a live file
Rate limits and running jobsThe plan's limitsThe same limits
Templates, assets, webhooksYesYes, the same workspace data
Idempotency keysLive answers onlyTest 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

StatusCodeWhen
401unauthorizedNo 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".
429rate_limitedThe key made more calls this minute than the plan allows. Wait for Retry-After seconds.
451frozenThe workspace is frozen. Write to support.
451expiredA 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.