These API Terms govern use of the moonstone Scan API. They are part of the Terms of Use and should be read with them: the warranty disclaimer, the limitation of liability, the indemnity, and the governing-law and dispute provisions there apply to API use in full. What an API plan costs, when it renews and how to cancel it are in the Billing Terms. Where this document and the general Terms of Use differ about programmatic access, this document governs.

“You” means the account the API key was issued to, and the business or person behind it.

What the API is

The Scan API takes a card photograph and returns an identification with the market price we hold for the card it matched. The documented endpoints are POST /api/v1/scan, which reads one card, and POST /api/v1/binder, which reads a nine-pocket binder page. Both are documented at moonstonehq.com/developers, and the documentation is part of these terms to the extent it describes limits and behavior.

Plans are Sandbox (free), Developer, Growth and Scale. Each carries a monthly scan quota and a per-minute rate limit, listed on the pricing page. Quotas and rate limits are enforced per account across every key you hold, not per key.

Your key

Keys are issued to your moonstone account. Treat one like a password: keep it on your server, never ship it in a browser bundle, a mobile app, or a public repository. You are responsible for every call made with your key, including calls you did not intend and calls made by someone who obtained the key from you.

You may hold up to five active keys. If a key leaks, revoke it in the keys dashboard; a revoked key stops working on its next call. Tell us at support@moonstonehq.com if you believe a key was used by someone else.

What you may do with a result

Call the documented endpoints from your own software, within your plan's limits, and use what comes back inside your own product. That includes showing a user the card we identified, its set and printing, and its price; recording the identification against an item that user owns; and building features of your own on top of those results.

Attribution is not required. If you do name us, call it the moonstone Scan API, and do not suggest that moonstone supplies, endorses, or is affiliated with your product.

What you may not do

The API is a per-item lookup service, not a data feed, and the limits below are what keeps it one. You may not resell, redistribute, sublicense, syndicate, or publish moonstone data as data, whether raw, reformatted, or inside a file, export, feed, or API of your own.

You may not use the API to assemble a copy of the catalog or of the price data, or any substantial part of either, whether by working through cards systematically, by sending images produced for that purpose, or by accumulating results over time. You may not use moonstone outputs to build, train, evaluate, or publish a card-identification model, a pricing model, or a competing catalog or price feed.

You may not continue to present a price we returned as current more than 24 hours after we returned it. Our own prices are refreshed daily, so a figure older than that is not what we would tell you now. Cache a result for as long as your product needs it to work; refresh it before you show it again as today's price.

You may not share, rent, or sell access to a key, act as a front through which other people reach the API on their own account, or work around a rate limit or a monthly quota, including by splitting traffic across several accounts. You may not probe, load-test, or attempt to reverse-engineer the recognition pipeline, or send traffic designed to degrade the service for anyone else.

Rate limits, quotas and no overage

Every response carries your plan's per-minute rate limit and your monthly quota and usage in response headers, so a client can see a ceiling coming rather than discover it. A call refused for rate (429) and a scan that never completed do not count against your quota.

A completed scan counts one unit, including when the honest answer is that the photo is a card back, a sealed product, or nothing we can identify. A binder page counts nine units, because it is nine scans. When your monthly quota is spent the API returns 402 with an upgrade link. There are no overage charges: the API stops rather than bills.

Unused scans do not roll over. Your quota resets when your billing period does.

Images you send us

Photographs sent to the API are processed to produce an answer and are not retained afterwards. No copy is kept, and nothing sent through the API enters the corpus we use to improve the scanner. That corpus comes from the scanner on this website, and the Privacy Policy describes it.

While a call is running, the image is passed to the third-party processors named in the Privacy Policy, which read text and describe the card. You must have the right to send us each image, and you must not send images containing personal information beyond the card itself. Because we keep nothing, we cannot retrieve an image for you afterwards.

Suspension and termination

We may throttle, suspend, or revoke a key, or end an API plan, if it is used in a way these terms prohibit, if the traffic threatens the stability of the service for other customers, if payment fails, or if the account is being used fraudulently. Where the problem looks fixable and not deliberate, we will normally contact you first and give you a chance to fix it. Where it is deliberate, bulk extraction and redistribution above all, we may act immediately.

If we end a paid plan because these terms were broken, the remaining period is not refunded. If you stop paying, your keys keep working on the free Sandbox plan and its limits rather than being deleted, as described in the Billing Terms.

You can stop using the API at any time. Revoking your keys and cancelling your plan are both self-service.

Changes to the API

We may add endpoints, fields and capabilities at any time. Adding a field to a response is not a breaking change, so write clients that ignore fields they do not recognise. Before a change that would break a conforming client, we will email the address on your account and give you reasonable notice first.

We may update these API Terms. Material changes will be reflected by the “Last updated” date above, and continuing to call the API after that counts as accepting them.

Accuracy, and what not to rely on

Identification is automated and can be wrong. We publish the measured accuracy of the engine and the method behind it at /developers rather than asking you to take a number on trust, but a measured rate is not a guarantee about your next call. Prices are recorded market data, not quotes, appraisals, or offers to buy or sell anything. Read the Financial Disclaimer.

The API is provided “as is” and “as available”, with no warranty of accuracy, availability, or fitness for a particular purpose, and we publish no uptime commitment. Do not make the API the sole basis for a payment, a payout, an insurance valuation, a grading submission, or anything else where a wrong answer costs money without a human check.

Trademarks

Results contain the names and numbers of Pokémon cards. Those marks belong to their owners. moonstone is not affiliated with, sponsored by, or endorsed by Nintendo, Creatures Inc., Game Freak, The Pokémon Company (International), TCGplayer, eBay, or PSA, and neither is your use of the API. Do not present your product as official or licensed.

Questions

API questions, key problems and permission requests go to support@moonstonehq.com. If you want to do something these terms prohibit, ask: a written licence is a conversation we are happy to have, and silence is not permission.