{"openapi":"3.1.0","info":{"title":"Vectorise.Me API","version":"1.2.0","description":"Quality-first image vectorization. Convert raster images to SVG, then export to PDF, EPS, DXF, PNG, JPG, or WEBP. Errors carry stable `code` values and Retry-After headers on 429/503/504."},"servers":[{"url":"https://vectorise.me"}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key"},"bearer":{"type":"http","scheme":"bearer"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["RATE_LIMITED","API_KEY_BUSY","QUEUE_FULL","QUEUE_TIMEOUT","AT_CAPACITY","INSUFFICIENT_CREDITS","STORAGE_FULL","UPSTREAM_UNAVAILABLE","INTERNAL_ERROR"]},"retry_after_seconds":{"type":"number"}},"required":["error"]}}},"security":[{"apiKey":[]},{"bearer":[]},{}],"paths":{"/api/v1/convert":{"post":{"summary":"Vectorize an image to SVG","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["imageFile"],"properties":{"imageFile":{"type":"string","format":"binary","description":"JPG/PNG/BMP/WEBP/AVIF up to 25 MB"},"preset":{"type":"string","enum":["auto","logo","illustration","photo","pixel_art","technical_drawing"],"description":"Friendly preset matching the app UI. Expands into engine settings; explicit fields you send alongside always win. Prefer this over quality_profile unless you know the engine."},"quality_tier":{"type":"string","enum":["fast","balanced_crisp","high_precision"]},"quality_profile":{"type":"string","enum":["auto","balanced_crisp","balanced_edge_clean","sharp_text_logo","sharp_guarded","photo_smooth","clipart","exact"]},"color_mode":{"type":"string","enum":["color","grayscale","bw","outline"]},"details_level":{"type":"string","enum":["auto","low","medium","high"]},"line_fit_tolerance":{"type":"string","enum":["coarse","medium","fine","super_fine"]},"simplification":{"type":"number","minimum":0,"maximum":1},"tiny_path_area":{"type":"number","minimum":0,"maximum":5000},"paletteCount":{"type":"integer","minimum":2,"maximum":128},"palette_count_mode":{"type":"string","enum":["auto","manual"]},"preserve_exact_colors":{"type":"boolean"},"fixed_palette":{"type":"string","description":"JSON array or comma list of hex colours"}}}}}},"responses":{"200":{"description":"Conversion result","content":{"application/json":{"schema":{"type":"object","properties":{"svg":{"type":"string"},"colorPalette":{"type":"array","items":{}},"colorGroups":{"type":"array","items":{}},"qualityDiagnostics":{"type":"object"},"traceStats":{"type":"object"},"downloadPathBasename":{"type":"string"},"downloadActualFilename":{"type":"string"},"convertedFileSize":{"type":"number"}}}}}},"402":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited / queue full / key busy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"At capacity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"504":{"description":"Queue timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/convert-batch":{"post":{"summary":"Vectorize up to 10 images in one request","description":"multipart/form-data with repeated `imageFiles` entries plus optional shared settings (preset, quality_tier, quality_profile, color_mode, ...) applied to every image. Images convert sequentially; each file gets an independent result and credits are charged per successful conversion. The batch stops early on 401/402.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["imageFiles"],"properties":{"imageFiles":{"type":"array","items":{"type":"string","format":"binary"},"description":"Up to 10 image files (repeated form entries)"},"preset":{"type":"string","enum":["auto","logo","illustration","photo","pixel_art","technical_drawing"]},"quality_tier":{"type":"string","enum":["fast","balanced_crisp","high_precision"]}}}}}},"responses":{"200":{"description":"Per-file results (individual failures do not fail the batch)","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string"},"ok":{"type":"boolean"},"svg":{"type":"string"},"colorPalette":{"type":"array","items":{}},"traceStats":{"type":"object"},"error":{"type":"string"},"code":{"type":"string"}}}},"succeeded":{"type":"integer"},"failed":{"type":"integer"},"totalRequested":{"type":"integer"}}}}}},"400":{"description":"No files / bad preset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"More than 10 files","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/export":{"post":{"summary":"Export an SVG to another format","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["svg","format"],"properties":{"svg":{"type":"string"},"format":{"type":"string","enum":["svg","pdf","eps","dxf","png","jpg","webp"]},"filenameBase":{"type":"string"},"exportOptions":{"type":"object"}}}}}},"responses":{"200":{"description":"Export result","content":{"application/json":{"schema":{"type":"object","properties":{"downloadPathBasename":{"type":"string"},"downloadActualFilename":{"type":"string"},"convertedFileSize":{"type":"number"},"actualFormat":{"type":"string"}}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/batch":{"post":{"summary":"Export multiple SVGs as a ZIP (Pro)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","maxItems":20,"items":{"type":"object","required":["svg","format"],"properties":{"svg":{"type":"string"},"format":{"type":"string"},"filenameBase":{"type":"string"},"exportOptions":{"type":"object"}}}}}}}}},"responses":{"200":{"description":"ZIP export result","content":{"application/json":{"schema":{"type":"object","properties":{"zipBasename":{"type":"string"},"zipFilename":{"type":"string"},"itemCount":{"type":"number"},"failed":{"type":"array","items":{}}}}}}}}}},"/download-file":{"get":{"summary":"Download a produced file","parameters":[{"name":"fileBasename","in":"query","required":true,"schema":{"type":"string"}},{"name":"actualFilename","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"File stream"},"404":{"description":"File expired or not found"}}}},"/api/v1/usage":{"get":{"summary":"Usage and credits for the calling API key","security":[{"apiKey":[]}],"responses":{"200":{"description":"Usage summary","content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string"},"status":{"type":"string"},"api_credits_balance":{"type":"number"},"api_credits_used_this_period":{"type":"number"},"monthly_credits_quota":{"type":"number"},"key_prefix":{"type":"string"}}}}}},"401":{"description":"Missing or invalid key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/capabilities":{"get":{"summary":"Export formats, tooling, and option availability","responses":{"200":{"description":"Capabilities document"}}}},"/api/v1/status":{"get":{"summary":"API health check","responses":{"200":{"description":"Status document"}}}}}}