API reference
Every endpoint enabled on production, generated from the API's own route table. 29 endpoints across 8 groups.
Base URL https://api.voxelion.ai. All requests need an
Authorization: Bearer header unless marked otherwise — see
Authentication.
Service
Liveness check.
This document.
The rate card: per-GB price for each launched engine, credit packs and top-up bounds.
Responses: 200 { perGbMillicents, engines[], packs[], minTopUpCents, maxTopUpCents, checkoutEnabled }
Unauthenticated and safe to poll from a browser. Lists only engines that are enabled here — it is a price list, not a roadmap.
Auth
Request a magic sign-in link.
Body: {"email":"string"}
Exchange a magic token for a session JWT.
Body: {"token":"string"}
The identity behind the current token.
Consent
The current policy version and whether this account has accepted it.
Accept the current policy version.
Body: {"version":"string"}
Deduplication
Deduplicate a batch, synchronously. Returns the full report in the response.
Body: multipart/form-data: files[] (images or a .zip), maxDistance? (0-64, or 0-256 in volumetric mode), volumetric? (true|false; default auto-detect), engine? (health|curate; default: your account's)
Accepts: PNG, JPEG, WebP, TIFF, BMP, HEIC/HEIF, and DICOM (.dcm: uncompressed, RLE, JPEG-baseline, JPEG-2000; grayscale and RGB/YBR).
Responses: 200 DedupReport + chargedCents, balanceCents · 402 INSUFFICIENT_CREDITS · 403 CONSENT_REQUIRED / ACCOUNT_SUSPENDED
Use this for batches that fit in one request. For a large archive, queue a job instead.
Queue a large .zip archive for asynchronous deduplication. Returns immediately; poll the job for progress.
Body: multipart/form-data: file (.zip), maxDistance?
Responses: 202 { job } · 402 INSUFFICIENT_CREDITS · 403 CONSENT_REQUIRED / ACCOUNT_SUSPENDED
Credit is reserved at submission and settled when the run finishes. A failed job is refunded in full.
List this account's jobs, most recent first.
One job's status and progress.
Reports
List persisted reports. Includes `volumetric` and `volumeLeakage`, so scan runs are identifiable without fetching each one.
One report in full: hashes, pairs, clusters — plus volumes, volumePairs, volumeClusters, volumeLeakage, redundantSlices and suppressedIntraVolume when the run was volumetric.
The keep/drop manifest for a cleaned export. For volumetric reports the unit of removal is the SCAN: every slice of a redundant volume is dropped and the most complete copy kept — never N-1 slices of a series.
Usage
Account identity, consent status, and usage counts.
Credit balance: balanceCents, heldCents, spendableCents.
The credit ledger: every top-up and every charge, with the balance each produced.
Current prices and credit packs.
Monthly usage statements available for this account.
One month's statement (period is YYYY-MM), with line items and totals.
Payment receipts for this account.
One receipt in full.
Request log for this account's API keys. `?keyId=` `?status=errors` `?limit=`.
Session traffic is not recorded, so this is exactly your integration's own history.
API keys
List this account's keys (masked).
Create a key. The secret is returned ONCE and never again.
Body: {"name":"string","live":"boolean?"}
Revoke a key immediately.
Engines
Which engines this deployment offers and which one your account defaults to.
Set your account's default engine.
Body: {"engine":"health|drive|curate"}
Responses: 400 BAD_ENGINE — unknown, or not enabled here
Reference generated from live API (https://api.voxelion.ai) on 2026-08-30. The endpoint list, error codes and limits on this page are produced from the API's own route table — if an endpoint is not listed here, it is not enabled on production.