# 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.

- Skill: `dvcrn/quiverai` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dvcrn/quiverai`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/quiverai/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/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`

```bash
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`):

```typescript
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

```json
{
  "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`

```bash
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:

```typescript
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 `.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.

