quiverai
v1.0.0Generate 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.
Installation
Please help me install the skill `quiverai` from SkillHub official store.
npx skills add charmmm718/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
| Param | Type | Default | Description |
|---|---|---|---|
model |
string | — | Required. Use arrow-preview. |
prompt |
string | — | Required. Describes the desired SVG. |
instructions |
string | — | Additional style guidance (e.g. "flat monochrome, rounded corners"). |
references |
array | — | Up to 4 reference images ({ url } or { base64 }). |
n |
int | 1 | Number of outputs (1–16). |
temperature |
float | 1 | Sampling temperature (0–2). Lower = more deterministic. |
top_p |
float | 1 | Nucleus sampling (0–1). |
max_output_tokens |
int | — | Upper bound for output tokens (max 131072). |
stream |
bool | false | SSE 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)
| Param | Type | Default | Description |
|---|---|---|---|
image |
object | — | Required. { url: "..." } or { base64: "..." }. |
auto_crop |
bool | false | Crop to dominant subject before vectorization. |
target_size |
int | — | Square resize target in px (128–4096) before inference. |
Response format is identical to Text-to-SVG.
Error codes
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request |
Malformed body or missing fields. |
| 401 | unauthorized |
Bad or missing API key. |
| 402 | insufficient_credits |
Out of credits. |
| 429 | rate_limit_exceeded |
Too many requests; back off and retry. |
Tips
- Save SVG output to a
.svgfile for immediate use. - Use
instructionsto control style without changing the prompt. - For logos, try low
temperature(0.3–0.5) for cleaner, more consistent results. - Use
referencesto provide visual examples the model should match. - For vectorization, enable
auto_crop: truewhen the source image has excess whitespace.