Skip to content
Best Grading Tools
API

Your card. On your website.

An interactive 3D card, ready to share. Add it to a shop, collection or article with a few lines of code.

Free for personal and commercial integration. BGT code remains proprietary. Usage license and third-party notices.

Integrate with AI

Demonstration artwork and simulated defect annotations. No customer photos.

Make it yours

In the app, open your graded card and publish its share link. Paste that link here to preview it and create your embed.

Anyone with the published link can see the card. Revoking it in the app blocks future loads. This page does not publish private cards.

Explore illustrated defect examples

Smart cutout, on your device.

Remove the background with the shared BGT Light HQ-SAM library. Your photo stays in this browser. No API key, upload or grading token is needed.

The first use downloads about 62 MiB (WASM) or 74 MiB (GPU) of model and runtime files. GPU acceleration is used when available, with a CPU fallback. Later uses can reuse the browser cache. Processing speed and memory depend on your device; an uncertain outline keeps the full photo.

Original
Result
JavaScript API and server API
import { createCardCutout } from
 'https://bestgradingtools.com/sdk/card-cutout/v1.1.0/index.js';

const engine = createCardCutout();
const result = await engine.crop(file, {
 onProgress: stage => console.log(stage)
});
// result.blob · result.status · result.reason · result.elapsedMs
engine.close(); // Release model memory when finished.

For server processing use POST /v1/cutouts with your private BGT API key. Server requests follow your plan’s quotas. Keep that key on your server.

Embedding on another website

If your site sets a Content Security Policy, merge these permissions into its existing directives. The Worker needs both the SDK origin and local blob URLs.

script-src 'self' https://bestgradingtools.com 'wasm-unsafe-eval';
connect-src 'self' https://bestgradingtools.com;
worker-src 'self' blob: https://bestgradingtools.com;
img-src 'self' blob:;
Read API documentation · Usage license and model notices

Two lights. Fewer reflections.

Combine a photo without flash and a photo with flash of the same side of the same card. Processing stays on your device, in a background worker.

Keep the card still and use the same framing. JPEG, PNG or WebP · up to 10 MiB and 16 MP each.

Original · without flash
Reduced reflections · derived image

This is a presentation image. Reflections visible in both photos cannot be recovered. Holographic colours may change; keep the originals for grading and defect inspection. Uncertain alignment keeps the original. The output retains the photo background.

Use the JavaScript library
import { createCardFusion } from
 'https://bestgradingtools.com/sdk/card-fusion/v1.0.1/index.js';

const engine = createCardFusion();
const result = await engine.combine(ambientFile, flashFile, {
 signal: controller.signal,
 onProgress: stage => console.log(stage)
});
// result.blob · result.status · result.reason · result.elapsedMs
// Keep the original and label a reduced result as a derived image.
engine.close();

First use loads about 10 MiB of OpenCV runtime. One reusable worker and a cache for the last pair avoid repeat processing. No API key or grading tokens. No cross-origin isolation required.

Free commercial integration license · OpenCV and distribution notices

Choose your integration

JavaScript & HTML

Use the web component with any framework, or call createCardViewer(options) from the ES module. Both front and back images are supported.

import { createCardViewer } from
  'https://bestgradingtools.com/sdk/card-viewer/v1.0.3.js';

container.append(createCardViewer({
  share: publicCardLink,
  lang: 'en'
}));

WordPress

Install the plugin ZIP, activate it, and add the generated shortcode to a post or page. Requires WordPress 6.5 or later.

Download plugin

Version 1.0.1 · License included

Built for interaction

Drag, tap, or use a keyboard. It respects reduced motion, keeps scrolling natural on mobile and shows when a card is unavailable.

Visualisation does not create a new grading or spend a G token. BGT scores remain independent estimates.