Scan, fix, vectorize, and mock up DTF artwork straight from your own app, store, or fulfilment pipeline. Same processing engine as the DTFWiz web tools, over a plain REST API. Available on the Business plan.
All API requests require an API key passed in the x-api-key header. Keys are tied to your DTFWiz account, require an active Business plan, and count toward your daily limit. Treat a key like a password: it carries your billing, so keep it server-side and never ship it in browser or app code.
Base URL: https://dtfwiz.com/api/v1 · All endpoints accept multipart/form-data
No API access
Keys cannot be created
No API access
Use the web tools instead
999,999 requests / day
Per key, and adjustable per account on request. Background removal and upscale carry their own lower daily caps.
The API is Business-only. Entitlement is checked live on every request, not just when the key is created. If the Business plan lapses or the account is suspended, existing keys stop working immediately and return a 402. Reactivating the plan brings the same keys back with no need to reissue them.
Most endpoints run on our own servers, so the per-key ceiling above is the only limit that applies. Two of them call out to paid AI services on every request, and those carry a smaller daily cap per account:
POST /api/v1/remove-bgBackground removal. Each call consumes one image from our monthly provider allowance.POST /api/v1/upscaleAI upscale. Each call consumes GPU time against a monthly budget.These caps count per account over a rolling 24 hours, across every key the account holds, so adding keys does not raise them. They are also set per account, so if your volume needs a different allowance than the default, tell us and we will raise yours specifically. Going over returns 429 with code: "fair_use_exceeded" plus limit, used and retry_after_seconds, and a standard Retry-After header. Read your live upscale position any time from GET /api/v1/upscale (fairUsePerDay, fairUseUsed, fairUseRemaining), which is itself unmetered. Running a high-volume pipeline? Talk to us and we will size a limit to it.
API limits and in-app limits are separate. The Business plan's unlimited AI tools refer to the DTFWiz web tools, which have no daily cap on that plan. API keys are metered on their own counters, described here. Work you do in the editor never consumes your API allowance, and vice versa.
All daily limits reset on a rolling 24-hour window, not at midnight.
/api/v1/scanAnalyze a DTF artwork file and get a detailed JSON quality report. Detects DPI, background type, alpha fringe, speck noise, edge quality, and more.
imageFilerequiredPNG, JPEG, or WebP fileprint_width_inchesnumberoptionalTarget print width in inches (default: 12)curl -X POST https://dtfwiz.com/api/v1/scan \ -H "x-api-key: dtf_your_key_here" \ -F "image=@artwork.png" \ -F "print_width_inches=12"
/api/v1/fixApply one or more fixes to a DTF artwork file. Remove edge fringe, trim transparent borders, remove noise specks, and resize — all in one call. Returns a clean PNG.
imageFilerequiredPNG, JPEG, or WebP filefix_alpha_thresholdbooleanoptional"true" to cut semi-transparent edge fringealpha_thresholdnumberoptionalAlpha cutoff 0–255 (default: 144). Lower = more aggressive.fix_halftonebooleanoptional"true" to convert soft fades and glows into fully-opaque halftone dots instead of removing them. The opposite remedy to fix_alpha_threshold; use the scan's transparency_fix.recommended to pick. If both are sent, halftone wins and the alpha threshold is skipped. Dots are created after any resize, at final output resolution.halftone_lpinumberoptionalHalftone dot frequency in lines per inch, 15–65 (default: 35). Lower = bigger dots.print_width_inchesnumberoptionalTarget print width; sizes the halftone dots for the physical print (default assumes 300 DPI artwork)fix_trimbooleanoptional"true" to trim transparent border pixelsfix_despecklebooleanoptional"true" to remove isolated noise pixelsresize_width_pxnumberoptionalResize output to this pixel width (maintains aspect ratio)resize_height_pxnumberoptionalResize output to this pixel height (use both for exact dimensions)curl -X POST https://dtfwiz.com/api/v1/fix \ -H "x-api-key: dtf_your_key_here" \ -F "image=@artwork.png" \ -F "fix_alpha_threshold=true" \ -F "fix_trim=true" \ -F "fix_despeckle=true" \ -o fixed.png
/api/v1/remove-bgAI-powered background removal using PhotoRoom. Returns a clean PNG with transparent background. Works on complex artwork, logos, and photos. Typical response: 3–5 seconds. Subject to a daily fair-use cap — see Plan Requirement & Rate Limits.
imageFilerequiredPNG or JPEG file (max 25MP)curl -X POST https://dtfwiz.com/api/v1/remove-bg \ -H "x-api-key: dtf_your_key_here" \ -F "image=@photo.jpg" \ -o transparent.png
/api/v1/remove-bgRead the input cap and your live fair-use position before sending work. This endpoint carries the tightest daily cap on the API, because every request consumes an image from a fixed monthly provider allowance, so it is the one worth pacing against. Unmetered, and it does not count against the cap it reports.
curl https://dtfwiz.com/api/v1/remove-bg \ -H "x-api-key: dtf_your_key_here"
/api/v1/upscaleUpscale low-resolution artwork by 2× or 4× using Real-ESRGAN. Recovers fine detail lost in compression or small source files. Returns a URL to the upscaled image, hosted by us so you can store it. Subject to a daily fair-use cap — see Plan Requirement & Rate Limits.
imageFilerequiredPNG or JPEG file. Inputs over the GPU budget are shrunk to it automatically (up to 4× the budget in pixels, 2× linear); larger files get a 413 { code: "image_too_large", maxPixels, pixels }scalenumberoptional2 or 4 (default: 4)curl -X POST https://dtfwiz.com/api/v1/upscale \ -H "x-api-key: dtf_your_key_here" \ -F "image=@low_res.png" \ -F "scale=4"
/api/v1/upscaleRead the effective input caps and your live fair-use position before uploading. maxPixels / maxPixels4x are the largest inputs accepted per scale including the auto-shrink allowance; budget / budget4x are the sizes the AI actually runs at (anything above is shrunk to it first). Admin-tunable, so read at runtime rather than hardcoding. autoShrink: true means your app no longer needs to pre-shrink. Unmetered, and it does not count against the fair-use cap it reports.
curl https://dtfwiz.com/api/v1/upscale \ -H "x-api-key: dtf_your_key_here"
/api/v1/vectorizeConversions run one at a time on the server. Check the live queue before converting so your app can show a loader for a short wait or its own message for a long one.
curl https://dtfwiz.com/api/v1/vectorize \ -H "x-api-key: dtf_your_key_here"
/api/v1/vectorizeTraces artwork into a clean, infinitely scalable SVG tuned for DTF: exact color palettes, smooth edges, no speck noise. Auto color mode picks the right number of colors for the art. Typical response: 3–15 seconds plus any queue wait.
imageFilerequiredPNG, JPEG, or WebP file (max 25MB)colorsstringoptional"auto" (default — server picks 4–20), a number 1–20 (1 = single-color silhouette), or "unlimited"detailstringoptional"smoother", "balanced" (default), or "precise" (best for sharp text)shape_stylestringoptional"stacked" (default, overlapping layers — easy to edit) or "cutout" (flat pieces)speck_sizenumberoptionalRemove blobs under this many px across, 0–16 (default: 4)smooth_bandsbooleanoptional"false" to skip color-band smoothing (default: true). Only affects colors="unlimited"; other modes always smooth.edge_cleanupbooleanoptional"false" to keep semi-transparent edge pixels (default: true)gradientsbooleanoptional"true" lets shaded or painted art use smooth gradient fills. Default false: every shape has one solid color.print_width_inchesnumberoptionalWrites the SVG at a physical size so RIP software imports it print-readycurl -X POST https://dtfwiz.com/api/v1/vectorize \ -H "x-api-key: dtf_your_key_here" \ -F "image=@artwork.png" \ -F "colors=auto" \ -o artwork.svg
/api/v1/mockup/templatesLists the available garment photos and their named placements (Center, Left Chest, Full Front, ...). Use the ids or names in POST /v1/mockup.
curl https://dtfwiz.com/api/v1/mockup/templates \ -H "x-api-key: dtf_your_key_here"
/api/v1/garmentsSearches every connected blank supplier (S&S Activewear, SanMar) plus DTFWiz blanks. With no q, returns the featured blanks. Use the returned key in GET /v1/garments/style and POST /v1/mockup.
qstringoptionalBrand, style number or type, e.g. "gildan 5000", "hoodie", "PC54"supplierstringoptionalComma list to filter: ss, sanmar, housecurl "https://dtfwiz.com/api/v1/garments?q=gildan%205000" \ -H "x-api-key: dtf_your_key_here"
/api/v1/garments/styleOne style in full: every color with its hex and front/back product photo, sizes with SKU and in-stock flags, chest width per size (when the supplier publishes specs), and the print placements valid for the garment type. Wholesale prices are never returned.
keystringrequiredStyle key from GET /v1/garments, e.g. "ss:39"curl "https://dtfwiz.com/api/v1/garments/style?key=ss:39" \ -H "x-api-key: dtf_your_key_here"
/api/v1/mockupRenders your design onto a real garment photo. Pass style to use any catalog blank in any color, placed TRUE TO SIZE: print_width_in is real inches on the shirt and top_in is measured from the collar, the same way a press operator specs a job. The ink follows the fabric folds. Returns the PNG, or JSON with the print spec and printer warnings for order records. The older template_id / garment / scale fields still work unchanged.
imageFilerequiredThe design. Transparent PNG recommended.stylestringoptionalCatalog style key from GET /v1/garments, e.g. "ss:39". Turns on true-to-size mode.colorstringoptionalColor id or name, e.g. "Black" (default: black, else the first color)placementstringoptionalleft-chest, center-chest, full-front, oversized, right-chest, back-neck, upper-back or full-back (see the style listing)viewstringoptional"front" or "back". Defaults to the placement's side.print_width_innumberoptionalReal print width in inches (default: the placement's standard, e.g. 11 for full front)top_innumberoptionalTop of the design below the collar, inches (default 3)offset_x_innumberoptionalSideways offset from the center line, inches. Positive = toward the right of the photo (wearer's left on the front, wearer's right on the back).sizestringoptionalGarment size to show at true scale, e.g. "2XL" (uses the supplier's chest spec)fabricnumberoptionalFabric realism 0 to 1 (default 0.8), or "false" for a flat pasteoutput_sizenumberoptionalLong side in pixels, 400 to 4000 (default 2000)framestringoptional"native" (photo shape, default) or "square"formatstringoptional"png" (default) or "jpeg"responsestringoptional"image" (default) or "json": base64 image plus the print spec, effective DPI and warningstemplate_id / garment / placement_id / scalelegacyoptionalOlder box-placement mode for DTFWiz blanks (see GET /v1/mockup/templates). Used when style is omitted.curl -X POST https://dtfwiz.com/api/v1/mockup \ -H "x-api-key: dtf_your_key_here" \ -F "image=@design.png" \ -F "style=ss:39" \ -F "color=Black" \ -F "placement=full-front" \ -F "print_width_in=11" \ -o mockup.png
API keys come with the Business plan. Create one from your account and start scanning, fixing, and vectorizing DTF artwork from your own app.
Get your API key