Bitmap → SVG tracing. One endpoint, multipart upload, SVG back. Machine-readable summary at /llms.txt, full parameter schema at /api/schema.
| field | type | notes |
|---|---|---|
image | file | png / jpeg / webp / bmp / tiff — max 10MB |
settings | JSON string | optional — preset, engine, per-engine params |
Optional header X-API-Key: requests run on a dedicated processing lane and are usage-tracked per key.
curl -X POST https://vectorize.erpfit.com/api/vectorize \
-F "image=@logo.png" \
-F 'settings={"preset":"auto"}'
curl -X POST https://vectorize.erpfit.com/api/vectorize \
-H "X-API-Key: ef_vectorize_…" \
-F "image=@photo.jpg" \
-F 'settings={"engine":"tracecraft","tracecraft":{"maxColors":32}}'
Response: {"svg", "engine", "originalSize", "svgSize"}. Errors: 400 invalid input, 401 bad API key, 429 queue full (honor Retry-After), 503 job timeout.
| preset | best for |
|---|---|
auto (default) | let the service pick engine + settings from the image |
logo | flat logos, icons, brand marks |
photo | photographs, smooth gradients |
poster | illustrations, bold flat shapes |
lineart | sketches, engravings, monochrome |
| engine | what it is |
|---|---|
auto | tracecraft — it wins on quality and size on every benchmark image |
tracecraft | in-house engine — planar shared-edge topology, render-and-refine |
tracecraft2 | primitive recognition (rect/circle/ellipse) — smallest files |
potrace2 | color potrace via tracecraft segmentation |
vtracer / potrace | classic tracers |
"detectFonts": true also returns fonts.regions[] — each text region's box (uploaded-image pixels) with its closest font families. Logo symbols come back as fonts.marks[], without a font.
"editableText": true also reads each line (fonts.regions[].text) and appends an invisible <g id="editable-text"> to the SVG: real <text> in the matched font, sized to the traced glyphs. The SVG looks the same; in an editor, show the layer to retype the wordmark.
Per-engine parameters, ranges and defaults: GET /api/schema.
GET /api/health — status, queue lanes, workers. Jobs are processed through a bounded queue; on 429 retry after the indicated delay.