Developers · Beta

The Vectenza API.

Turn logos, icons and illustrations into clean SVG from your own code. The same results as the Studio, with one request.

Beta pricing

Free while we're in beta.

Vectenza Free Beta

$0 /month

Free during beta

Daily allowance

— credits

Shared across Studio and API

Developer bonus

100 credits

One-time, for approved beta testers

1 credit = 1 new image conversion. Converting the same image again on the same day is free. Daily credits are used first, then bonus credits. No credit card required. Failed jobs don't use credits. Want the bonus? Ask to join the developer beta.

Your account

API keys and credits.

Loading…

Quickstart

From PNG to SVG in two requests.

  1. Create a key above and keep it in an environment variable, VECTENZA_API_KEY.
  2. POST /v1/vectorizations with the image. The job comes back finished.
  3. Download the file from result.url.
# 1. Convert (the response is the job, with a link to its result)
curl https://vectenza.com/v1/vectorizations \
  -H "Authorization: Bearer $VECTENZA_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F image=@logo.png

# 2. Download the SVG, using the "id" from step 1
curl https://vectenza.com/v1/vectorizations/vec_…/result \
  -H "Authorization: Bearer $VECTENZA_API_KEY" -o logo.svg
Reference

API reference.

Base URL https://vectenza.com. Send your key in every request as Authorization: Bearer vz_…. The full contract is in the OpenAPI document. Within v1, fields may be added but are never renamed or removed.

Endpoints

POST/v1/vectorizationsConvert an image. Returns the finished job (201).
GET/v1/vectorizations/{id}Get a job you created.
GET/v1/vectorizations/{id}/resultDownload its SVG (or PNG).
GET/v1/creditsCredits left today, and bonus credits.

Request

multipart/form-data with an image file (PNG, JPEG, GIF, WebP or BMP). Optional fields:

  • output.file_format: svg (default) or png.
  • processing.max_colors: limit the palette; 0 means no limit.
  • Any other setting the Studio uses. /config/fields lists them all with their defaults.

Retries and idempotency

Send an Idempotency-Key header (any unique string, such as a UUID) with each POST. If the connection drops, retry with the same key: you get the first job back (header Idempotent-Replayed: true) and aren't charged twice. A failed request can be retried with the same key.

Response

{
  "id": "vec_3f2a…",
  "object": "vectorization",
  "status": "succeeded",
  "created_at": "2026-11-02T10:15:03.120Z",
  "completed_at": "2026-11-02T10:15:04.870Z",
  "credits_charged": 1,
  "result": {
    "format": "svg",
    "content_type": "image/svg+xml",
    "bytes": 18234,
    "url": "/v1/vectorizations/vec_3f2a…/result"
  }
}

Errors

Every error is JSON: {"error": {"status", "type", "message"}}. Check type.

400invalid_requestThe image or a field is invalid. Fix the request; don’t retry as is.
401unauthorizedMissing, invalid or revoked API key.
402insufficient_creditsNo credits left. Daily credits reset at 00:00 UTC.
409conflictIdempotency-Key reused for a different request, or that request is still running.
413payload_too_largeThe upload is too large.
429rate_limitedToo many requests or jobs at once. Wait for Retry-After.
500internal_errorSomething went wrong on our side. Nothing was charged; retry.
503server_busyAll workers are busy. Wait for Retry-After, then retry.

Limits during beta

  • Up to 2 jobs at once per account, and a per-key limit on requests per minute.
  • Uploads up to 30 MB and 50 megapixels.
  • Download results soon after they're made.
  • Keep keys on your server. Never put them in browser or mobile app code.