Rate limits & billing
What a call costs, how fast you can send it, and what happens when credit runs out.
Cost per call
You pay for answers, not attempts: only a 200 is charged. Errors, timeouts and empty searches
are free.
| Endpoint | Per 1,000 calls |
|---|---|
/movie | $0.80 |
/query | $0.40 |
/idols | $0.50 |
/random | $0.20 |
/discover/* | $0.40 |
/resolve/compare, /resolve/provenance, /resolve/streams | $0.40 |
/resolve (card) | $1.20 |
/resolve/batch | $0.40 per started group of 10 unique codes |
/analytics/* | $0.60 |
GET /stats | free |
/discover/* is Discover, /analytics/* Analytics,
/resolve* Resolve. GET /stats is the public catalog counter
(Stats), free and keyless. A /resolve/batch call takes up to 100 codes, billed
one group per started 10 unique codes.
New accounts start with $0.02 of free credit, about 50 searches — enough to build something small.
Bigger pages cost more
/query, /idols and /random take a num from 1 to 50. Prices above buy 10 results; more
scales with page size, rounded up:
cost = max(base price, base price × num ÷ 10)So for /query, per 1,000 calls:
num | Per 1,000 calls |
|---|---|
| 1–10 | $0.40 |
| 20 | $0.80 |
| 50 | $2.00 |
Five calls at num=10 cost what one call at num=50 does. Page size is convenience, not a
discount.
Same formula for /discover/* and /analytics/*, where several endpoints default to a num
above 10 and cost more than the base rate:
| Endpoint | Default num | Per 1,000 calls |
|---|---|---|
/discover/similar | 12 | $0.48 |
/discover/trending | 20 | $0.80 |
/discover/underrated | 20 | $0.80 |
/discover/series | 20 | $0.80 |
/discover/for-you | 20 | $0.80 |
/discover/studios | 30 (20 with q) | $1.20 ($0.80 with q) |
/discover/tags | 30 | $1.20 |
/discover/genres | 60 | $2.40 |
/analytics/leaderboard | 20 | $1.20 |
/analytics/idols/costars | 15 | $0.90 |
Pass num=10 or less to pay the base price. Unlisted endpoints take no num (or default to 10
or less) and always cost the base rate.
/random now returns 10 results by default, down from 20. Pass num=20 to keep the old size;
same results, twice the price.
Nothing found is not an error
A /query with no matches returns 200 with count: 0 and an empty results array, free.
Check count, not the status code.
Preview delivery
Preview clips come from cdn.javinfo.dev, billed by data, not call: $0.30 per GB, charged once
on first pull from the source. After that they live in our object storage and every later view
is free, for everyone.
Quality follows your account: after one top-up you get the best version a title has; before, previews are standard.
Video URLs are tied to your account and never expire, so a link saved last year still plays. Anyone you hand it to streams on your balance: treat preview URLs like an API key.
How fast you can call
Limits are per account, shared across every key you own.
| Account state | Requests per minute |
|---|---|
| Before first top-up | 10 |
| After first top-up | 60 |
Over the cap you get 429 with Retry-After. It lifts on its own once your first payment
settles — nothing to request.
Hourly limits on live providers
FANZA, DMM and providers served from our own catalog have no hourly cap. Providers fetched from the source at request time cost a real upstream request, so they share an hourly budget:
- 6,000 results per hour, per account. Over it,
/queryreturns429withRetry-After. - 3,000 calls per hour, per provider, across everyone. When one is busy we drop it and answer
from the others; if you pinned it with
providers=, there is no fallback and you get503withRetry-After.
Ordinary use doesn't come close: the account budget sits well above the busiest legitimate hour on record. It stops one runaway script from getting a source blocked for everyone.
One related guard: paging past page 50 with an empty q returns 422. Deep paging with no
search text enumerates a catalog, not search. Add a q, or narrow the filter.
When credit runs out
The API returns 402 Payment Required and charges nothing. Retry-After is an hour — a hint
for automated clients, not a lockout. Top up and the next call goes through.
Top up from your dashboard. Payments of $15 or more earn bonus credit; $50 or more earns the largest, up to 10%, rolled per payment.
Response headers
X-Response-Time-Ms— server time in milliseconds.X-Balance-Remaining— credit left after the call.X-Cache: HIT | MISS— cache hit or miss. Present on/movie,/query,/idolsand cached discovery, analytics and resolve endpoints. A hit is free.X-Degraded— number of failed index reads while assembling the answer; such answers are free and not cached.Retry-After— seconds to wait on429,402and503. Respect it.
For the full status-code list, see Errors.