Docs

Limits and billing

Last updated: 2026-10-033 min read

Rate limits

Every key has two limits: requests per minute and per day (the day is counted in UTC). GET /me shows the values for your key in rateLimit (rpm and rpd).

Every response to an authenticated call carries the state of the limit that is closer to running out - file downloads included (they count against the rate limit too). Answers made before the key or the limit is checked carry no such headers: an invalid key (401), a malformed body (400), an unknown path (404), invalid query parameters (400 validation), a missing scope (403 forbidden_scope), a write refused for a test key (403).

In the browser (CORS) the RateLimit-*, Retry-After, Grem-Sandbox, X-Request-Id and Content-Range headers are readable.

RateLimit-Limit: 60
RateLimit-Remaining: 12
RateLimit-Reset: 41
HeaderMeaning
RateLimit-Limitrequests allowed in the current window
RateLimit-Remainingrequests left
RateLimit-Resetseconds until the window resets

Over the limit you get 429 with title: rate_limited and a Retry-After header. The rate limit is a technical guard; it never charges anything.

Watch RateLimit-Remaining and spread requests over time. Job status polling counts against the rate limit too, although it is free - poll no more often than every few seconds, or switch to webhooks.

Billing

There is no separate API plan: access is part of your subscription, and paid actions are charged to the same wallet as in the cabinet.

A paid call has two parts:

  1. The API call. Taken from the API call pool included in your plan. Beyond the pool, calls are paid as you go.
  2. The tool price - the same as the action costs in the cabinet (from the plan's included quota or from the wallet).

API call pool per plan:

PlanAPI calls per month
Free100
Start5,000
PRO25,000
MAX100,000
Agency Start50,000
Agency Growth250,000
Agency Scaleunlimited within fair use

For other plans and current tool quotas and prices, see the plans page in the cabinet.

What is paid and what is free

Each operation's billing class is in /openapi.json, field x-grem-billing: free, api_call or api_call+sku:... (a call plus the tool price).

PaidFree
running tools (POST to valuation, texts, video, photo, PDF, site and so on) - call + tool priceevery read (GET), including job polling and file downloads
flyer and report-review confirmation - call onlylistings: create, edit, delete
chat message - call + message priceleads and Swipe Match: create, edit, events
creating, editing and deleting chat sessions - call onlyimage uploads
webhook management

A refused request (4xx or 5xx) uses no API call. The exception is 502 provider_error after a timeout: the work may still finish and be charged - check GET /works (photo enhancement, site and draft: the cabinet or your listings). A retry of the express valuation with the same Idempotency-Key returns the result free of charge (neither the valuation nor the API call); on other tools the key stays taken for 15 minutes after a timeout - check the result instead of repeating.

Calls, spend and errors per key are in the cabinet on the API page, Analytics tab.

Was this article helpful?