Назад към всички

quiverai

// Generate and vectorize SVG graphics via the QuiverAI API (Arrow model). Use when the user asks to create logos, icons, or illustrations as SVG, convert raster images (PNG/JPEG/WebP) to SVG, or generate vector graphics from text prompts.

$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namequiverai
descriptionGenerate and vectorize SVG graphics via the QuiverAI API (Arrow model). Use when the user asks to create logos, icons, or illustrations as SVG, convert raster images (PNG/JPEG/WebP) to SVG, or generate vector graphics from text prompts.
metadata[object Object]

QuiverAI — AI Vector Graphics

QuiverAI generates production-ready SVGs from text prompts or raster images.

  • Site: https://quiver.ai
  • Docs: https://docs.quiver.ai
  • API base: https://api.quiver.ai/v1
  • Model: arrow-preview
  • Auth: Bearer token via QUIVERAI_API_KEY
  • Billing: 1 credit per request (regardless of n).

Setup

Get an API key at https://app.quiver.ai/settings/api-keys (create account at https://quiver.ai/start first).

Text to SVG

Generate SVGs from a text description.

Endpoint: POST /v1/svgs/generations

curl -X POST https://api.quiver.ai/v1/svgs/generations \
  -H "Authorization: Bearer $QUIVERAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "arrow-preview",
    "prompt": "A minimalist monogram logo using the letter Q",
    "n": 1,
    "stream": false
  }'

Node.js SDK (npm install @quiverai/sdk):

import { QuiverAI } from "@quiverai/sdk";
const client = new QuiverAI({ bearerAuth: process.env.QUIVERAI_API_KEY });

const result = await client.createSVGs.generateSVG({
  model: "arrow-preview",
  prompt: "A minimalist monogram logo using the letter Q",
});
// result.data[0].svg contains the SVG markup

Parameters

ParamTypeDefaultDescription
modelstringRequired. Use arrow-preview.
promptstringRequired. Describes the desired SVG.
instructionsstringAdditional style guidance (e.g. "flat monochrome, rounded corners").
referencesarrayUp to 4 reference images ({ url } or { base64 }).
nint1Number of outputs (1–16).
temperaturefloat1Sampling temperature (0–2). Lower = more deterministic.
top_pfloat1Nucleus sampling (0–1).
max_output_tokensintUpper bound for output tokens (max 131072).
streamboolfalseSSE streaming (events: reasoning, draft, content).

Response

{
  "id": "resp_01J...",
  "created": 1704067200,
  "data": [{ "svg": "<svg ...>...</svg>", "mime_type": "image/svg+xml" }],
  "usage": { "total_tokens": 1640, "input_tokens": 1200, "output_tokens": 440 }
}

Image to SVG (Vectorize)

Convert a raster image (PNG/JPEG/WebP) into SVG.

Endpoint: POST /v1/svgs/vectorizations

curl -X POST https://api.quiver.ai/v1/svgs/vectorizations \
  -H "Authorization: Bearer $QUIVERAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "arrow-preview",
    "stream": false,
    "image": { "url": "https://example.com/logo.png" }
  }'

SDK:

const result = await client.vectorizeSVG.vectorizeSVG({
  model: "arrow-preview",
  image: { url: "https://example.com/logo.png" },
});

Additional parameters (beyond Text-to-SVG shared ones)

ParamTypeDefaultDescription
imageobjectRequired. { url: "..." } or { base64: "..." }.
auto_cropboolfalseCrop to dominant subject before vectorization.
target_sizeintSquare resize target in px (128–4096) before inference.

Response format is identical to Text-to-SVG.

Error codes

StatusCodeMeaning
400invalid_requestMalformed body or missing fields.
401unauthorizedBad or missing API key.
402insufficient_creditsOut of credits.
429rate_limit_exceededToo many requests; back off and retry.

Tips

  • Save SVG output to a .svg file for immediate use.
  • Use instructions to control style without changing the prompt.
  • For logos, try low temperature (0.3–0.5) for cleaner, more consistent results.
  • Use references to provide visual examples the model should match.
  • For vectorization, enable auto_crop: true when the source image has excess whitespace.