Credits and usage
How credits and the test-key quota work, what consumes them, and how to avoid running out mid-batch.
This guide explains how credits work in Rezolve Ai, what consumes them, how to check your balance, and how to avoid running out partway through a batch.
Credits and test quota
There are two billing rails, and which one applies depends on the key you use.
ace_live_keys draw on your account's credit balance. A metered request needs a balance above zero to start. Otherwise it returns402 INSUFFICIENT_CREDITSand does not run.ace_test_keys are free and draw on a monthly quota instead: 1,000 requests and 500 units of work per calendar month, shared by every test key on the account. When either runs out, metered requests return402 TEST_QUOTA_EXCEEDEDuntil the month rolls over.
Use a test key while you are building, and switch to a live key for production.
How live work is charged
Credits are metered on the AI work a request actually does. There is no flat price per call or per product.
- Every AI call behind a request is charged on its own, at a minimum of one credit, and costs more the more text it reads and writes.
- Enriching a product is a bundle of calls, one or more per content type. The cost of a product therefore follows how many content types you ask for, not the product count alone.
- Charges are taken as the work completes, so a job draws the balance down while it runs. AI work that ran is charged even if that unit then failed.
These are measured averages for one product, to plan with:
| Depth | What is written | Credits per product |
|---|---|---|
| Metadata only | A meta title and description, nothing else rewritten | About 3 |
| Core enrichment | Product description, meta tags, real-life scenarios, and internal links | About 26 |
| Full enrichment | Everything in core, plus title, attributes, highlights, FAQs, JSON-LD schema, and image attributes | About 56 |
Your own figures will vary with how much source data each product carries. Run a small batch, read the change in GET /api/v1/usage, and scale from that.
What each endpoint costs
On a test key, work is counted in units instead. One unit is one product for one content type.
| Operation | Live key | Test key |
|---|---|---|
POST /api/v1/enrichment/rules | Free. Rules generation is not charged. | Free |
POST /api/v1/enrichment/content | Metered for each product and content type written | Products multiplied by content types |
POST /api/v1/enrichment/pipeline | Metered for each product and content type written. The rules step is free. | Products multiplied by content types |
POST /api/v1/enrichment/lookup | Free, unless a web search runs. A web search typically costs about 16 credits, and nothing when the answer is already cached. | 5 units for each item that may search the web, or 1 unit for an item that only reads a page you point at |
POST /api/v1/enrichment/lookup with enrich | The lookup as above, plus the content written. Nothing for a product that was not matched. | The lookup as above, plus one unit per item per content type |
POST /api/v1/enrichment/content or /pipeline with lookup | The content as above. The lookups add nothing with the free sources. With web_search named, each search is charged as a lookup search is. | Products multiplied by content types, plus 5 units for each product that may be searched for |
GET /api/v1/enrichment/lookup, /enrichment/lookup/sources | Free | Free |
/api/v1/feeds and every endpoint under it | Free | Free |
/api/v1/ratings/ingest, /api/v1/ratings/{productId} | Free | Free |
/api/v1/utils/language, /utils/agentic-readiness, /utils/review-quality | Free | Free |
/api/v1/health, /usage, /jobs, /projects, /webhooks | Free | Free |
A content type the engine does not generate is skipped and costs nothing on either rail. It is listed in skippedContentTypes.
So on a test key, ten products with ["product-description", "meta-tags", "jsonld-schema"] uses thirty units and one request.
Pushing products to POST /api/v1/feeds/{id}/events is free. If Autopilot is on for that feed and set to re-enrich when source data changes, the push starts an enrichment run for the changed products, and the content that run writes is charged like any other. See the Feeds API guide.
The same accounting applies to the MCP tools: a tool marked as using credits needs a positive balance on a live key and uses the monthly quota on a test key.
Check your balance
In the dashboard: sign in at https://ace.authoritas.com and open Settings, Developer console, Usage.
Via API:
curl https://ace.authoritas.com/api/v1/usage \
-H "Authorization: Bearer $ACE_API_KEY"{
"data": {
"env": "live",
"credits": { "balance": 4820, "limit": 5000, "periodStart": "...", "periodEnd": "..." },
"rateLimit": { "limitPerMinute": 120 },
"jobs": { "total": 37 }
// test keys also get: "testQuota": { requestsUsed, requestCap, unitsUsed, unitCap }
}
}Via CLI: rezolve usage. See Rezolve Ai CLI.
From an assistant: the get_usage MCP tool returns the same snapshot.
Add credits
Credits are added to an account by the Rezolve Ai team. There is no purchase step in the dashboard or the API, so to get more, ask your Rezolve Ai contact.
Shopify-installed merchants
If you installed Rezolve Ai from the Shopify App Store, your AI usage is billed through Shopify, on your Shopify invoice, not through the Rezolve Ai credit balance.
- 1,000 credits are included in every 30-day billing cycle. Usage beyond that is billed per credit through Shopify, at the rate shown on the plan approval screen.
- You can set a monthly budget in the app's Settings. It caps spending beyond the included credits: once the estimated spend for the cycle reaches it, AI work stops until you raise or remove the budget. The included credits still work with a budget of zero.
- Usage is on the Usage page. Open Usage in the Rezolve Ai app in your Shopify admin to see the current billing cycle, your plan, and recent usage.
You approve the plan from the app in your Shopify admin. Until it is approved, the app shows Choose a plan, and a request for that project returns 402 SUBSCRIPTION_REQUIRED rather than drawing on a Rezolve Ai balance. The same code is returned when the store's setup is incomplete or its monthly budget has been reached. The message says which.
Plan changes happen in the Shopify admin. The two rails are independent: a Shopify-billed project never touches the Rezolve Ai credit balance.
Avoiding 402
- Check first. Call
GET /api/v1/usagebefore a large run. - Estimate. Multiply your product count by the per-product figure for the depth you want, or by the cost you measured on a small batch. On a test key, multiply products by content types to get units.
- Use jobs. Large requests return
202with a job id, so a long run does not sit on an open connection. - Split, or ask for more. If you hit
402, send smaller batches or ask your Rezolve Ai contact to add credits. - Send an idempotency key. Retrying a request with the same
Idempotency-Keyreturns the original job rather than paying for a second one.
Summary
- Live keys spend credits; test keys spend a free monthly quota.
- Live work is metered on the AI calls it makes. Plan on about 3, 26, or 56 credits per product depending on depth.
- Rules, feeds, ratings, utilities, health, and job reads are free.
- Check with GET /api/v1/usage,
rezolve usage, or the dashboard. - Shopify-installed merchants bill through Shopify, not the Rezolve Ai balance.
See the API Reference and Contextual Enrichment Engine for endpoint detail.