Color separation, as an API
POST a piece of artwork and get back press-ready spot inks, a film-positive for every ink, and a composite preview — in one request. Meter it by credit: pay-as-you-go or a monthly plan.
Quickstart
Send a base64 image and your key. One separation = one credit.
curl -X POST https://www.aiseparations.com/api/separate \ -H 'X-API-Key: sk_live_...' \ -H 'Content-Type: application/json' \ -d '{"image":"data:image/png;base64,iVBOR...","colors":6,"garment":"dark"}'
{
"count": 6,
"colors": ["#100c09", "#542a1d", "#963c26", "#c88756", "#fbfafa"],
"composite": "data:image/png;base64,...", // print-simulation preview
"plates": [{"ink":"#100c09", "image":"data:image/png;base64,..."}, /* one film-positive per ink */ ],
"recommend": "screen", // "screen" or "dtf"
"photographic": false, // measured from the art, not the ink count
"remaining": 199,
// every setting the request resolved to, echoed back
"mode": "sim", "lpi": 55, "dpi": 300, "angle_set": "Spot 15° offset (default)",
"choke": 1, "trap": 0, "ub_min_cov": 8.0, "regmarks": false,
"saturation": 0.7, "winner_boost": 0.4, "suppress_below": 0.08,
"ink_budget": 0.95, "gcr": 0.0, "ucr": 0.0,
"highlight": false, "hw_halftone": false
}Endpoints
POST /api/separate — separate an image (consumes 1 credit)
GET /api/credits — check your balance (free), header X-API-Key
Parameters
All fields go in the JSON body; only image is required.
Every knob below is optional and defaults to the values the browser app uses, so
{"image": "..."} alone gives you a sensible separation. Values outside a
listed range are clamped, not rejected. Images up to 12 MB.
Core
| Param | Type | Default | What it does |
|---|---|---|---|
image | string | — | Required. Base64 PNG/JPG/WEBP, raw or as a data: URL. |
colors | int 2–12 | auto | Target ink count. Omit to let the engine pick the plates a printer would actually burn. |
garment | "dark" | "light" | "dark" | "dark" adds the choked white underbase; "light" prints inks straight onto the shirt. |
mode | "sim" | "spot" | "sim" | Simulated process halftones every ink (photos, gradients). Spot prints each plate solid — crisp edges for logos and flat vector art. |
Halftone & film output
| Param | Type | Default | What it does |
|---|---|---|---|
lpi | int 25–80 | 55 | Halftone line frequency — dot fineness. |
mesh | int | — | Convenience: 110, 156, 200, 230, 280, 305 or 355 sets the lpi that mesh can hold (35/45/50/55/60/65/70). Ignored if you send lpi yourself. |
angle_set | string | "Spot 15° offset (default)" | Screen angles, cycled across plates. Also accepts "CMYK process (15/75/0/45)" and "Wide 30° spacing". Wider spacing is extra moiré safety on coarse mesh. |
dpi | int 150–1200 | 300 | Output resolution of the film positives. |
dot_gain | float 0–40 | 18 | Percent dot-gain compensation — pre-shrinks dots for ink spread on press. |
min_dot | float 0–30 | 0 | Percent. Smallest printable highlight dot; below it, coverage drops to zero instead of flashing an unholdable dot. |
max_dot | float 70–100 | 100 | Percent. Caps shadow coverage so dark areas don't plug. |
regmarks | bool | false | Stamp identical crosshair registration targets on every plate. |
Tone & mixing (simulated process only)
| Param | Type | Default | What it does |
|---|---|---|---|
saturation | float 0.1–1.5 | 0.7 | Gamma on each ink channel. Lower pulls colors apart harder — richer, more saturated. |
winner_boost | float 0–1 | 0.4 | Extra coverage pushed onto each pixel's dominant ink, toward solid. |
suppress_below | float 0–0.5 | 0.08 | Zero out any ink coverage under this — kills color speckle. |
ink_budget | float 0.4–1 | 0.95 | Max total ink coverage on a single pixel. |
gcr | float 0–1 | 0 | Gray Component Replacement — carries the neutral built by overlapping colors on the black plate instead. Saves ink, cleaner neutrals. |
mode: "spot" ignores them — solid plates have no tone to redistribute.
gcr additionally needs a near-neutral black ink in the palette to carry the gray, plus at least two other
chromatic inks to pull it from; if the darkest ink is saturated (a navy or maroon) it no-ops rather than muddying the
art — the same rule the desktop app applies.Underbase & trapping
| Param | Type | Default | What it does |
|---|---|---|---|
choke | int 0–4 | 1 | Pixels the white underbase is pulled inward, so it tucks under the colors and can't peek out. |
ub_min_cov | float 0–60 | 8 | Minimum ink coverage (0–255) before the underbase fires under a pixel. |
ucr | float 0–1 | 0 | Under-Color Removal — thins the white underbase beneath heavy black. Softer hand, less buildup. Needs a near-neutral black ink in the palette; works in both modes. |
trap | int 0–3 | 0 | Auto-trap strength in pixels. Dark inks spread, light inks choke, so a registration miss doesn't leave a hairline of bare shirt. |
choke, ub_min_cov and ucr only do anything
with garment: "dark" — a light garment gets no underbase to shape.
Highlight white (top pass · dark garments only)
| Param | Type | Default | What it does |
|---|---|---|---|
highlight | bool | false | Add a white plate printed on top of the colors to recover true whites. |
hw_brightness | float 0.5–1 | 0.85 | How bright a pixel must be to receive top white. Higher = only the very brightest spots. |
hw_max_sat | float 0–1 | 0.18 | Saturation ceiling. Vivid brights (a strong yellow) are excluded — their own plate handles them. |
hw_choke | int 0–6 | 2 | Choked harder than the underbase — it's the last screen down, so registration error has compounded. |
hw_halftone | bool | false | Fade highlights with dots on the next free screen angle instead of one hard solid white. |
The response echoes back every setting it resolved
(lpi, angle_set, gcr, ub_min_cov, …) so you can log exactly
what produced a given set of plates.
Pricing
One separation = one credit. Mix both models — your monthly allowance is spent first, then pack credits never expire.
Pay as you go
Monthly plans
| Plan | Separations / month | Price | Effective | |
|---|---|---|---|---|
| Lite | 150 | $29/mo | $0.19 ea | Subscribe |
| Pro | 750 | $99/mo | $0.13 ea | Subscribe |
| Scale | 3,000 | $299/mo | $0.10 ea | Subscribe |
Who it's for
- DTF & screen-print shops separating at volume — automate the prep step.
- Print-on-demand platforms — offer automatic separations inside your own app.
- Developers / integrators — drop prepress into a larger order pipeline.
Prefer a one-time app?
The AI Separations desktop app is $179 one-time and adds AI background removal, upscaling, the Separation Advisor, instant quoting, and ink matching — built for individual shops. Or try it live in your browser first.