QuiverAI

Data & APIs

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.

Install

openclaw skills install quiverai

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.