Text to SVG
Generate SVG graphics from text prompts with optional reference images.
Generate one or more SVGs from a text prompt and optional reference images via POST /v1/svgs/generations.
Examples below use arrow-1.1. To discover model IDs available to your organization, call
GET /v1/models. Arrow 1.1 is the general-purpose release model; Arrow 1.1 Max is the higher-fidelity
variant for detail-sensitive work.
Set stream: true to receive reasoning, draft, and content Server-Sent Events while the SVG
is being produced.
Examples
Calligraphy
Prompt: “Elegant calligraphic script in a flowing hand-lettered style, single continuous stroke”
import { QuiverAI } from "@quiverai/sdk";
const client = new QuiverAI({
bearerAuth: process.env["QUIVERAI_API_KEY"],
});
const result = await client.createSVGs.generateSVG({
model: "arrow-1.1",
prompt: "Elegant calligraphic script in a flowing hand-lettered style, single continuous stroke",
});curl --request POST \
--url https://api.quiver.ai/v1/svgs/generations \
--header 'Authorization: Bearer <QUIVERAI_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "arrow-1.1",
"prompt": "Elegant calligraphic script in a flowing hand-lettered style, single continuous stroke"
}'Illustration
Prompt: “Japanese crane in traditional woodblock illustration style with warm earth tones”
const result = await client.createSVGs.generateSVG({
model: "arrow-1.1",
prompt: "Japanese crane in traditional woodblock illustration style with warm earth tones",
instructions: "Use a warm muted palette with detailed feather work",
});
Logo
Prompt: “Heraldic lion crest with ornate medieval style details and gold gradient accents”
const result = await client.createSVGs.generateSVG({
model: "arrow-1.1",
prompt: "Heraldic lion crest with ornate medieval style details and gold gradient accents",
});
Choosing a model
- Use
arrow-1.1for most text-to-SVG generation. It improves prompt following, structure, and cost efficiency over Arrow 1.0 while keeping outputs clean and editable. - Use
arrow-1.1-maxwhen output quality is the priority. It is better suited to dense illustrations, logos with tight geometry, technical diagrams, and other compositions where precision matters more than speed.
Writing prompts
Include these elements for the best results:
- Subject: What is in the image? Be specific. For example, “a logo for an eco-friendly coffee company”.
- Style: What is the overall aesthetic? For example, “line art”, “hand drawn”, “duotone”, or “flat monochrome icon”.
- Color palette: Which colors should be used? For example, “background: #e9edc9 and logo in #fb8500”.
- Composition: Include framing details like “centered icon” or “wide horizontal logo”.
- Text integration: Clearly state what text should appear and how. For example, “The headline ‘URBAN EXPLORER’ in bold white sans-serif at the top”.
You can also use the instructions parameter to provide separate style or formatting guidance without mixing it into the prompt.
Reference images
Reference images can be provided as { url: "..." }, { base64: "..." }, or URL string shorthand.
Direct base64 image payloads can be PNG, JPEG, WebP, GIF, or SVG. Decoded image inputs must be no
larger than 12,582,912 bytes, 4096 x 4096 pixels, or 16,777,216 total pixels.
Image URLs must use HTTP or HTTPS, resolve to a public network target, and return an image content type. The API follows up to 3 redirects and applies the same decoded image limits after fetching.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
model |
string | – | Required. Model identifier (for example, arrow-1.1 or arrow-1.1-max). |
prompt |
string | – | Required. Text description of the desired SVG. |
instructions |
string | – | Additional style or formatting guidance, separate from the prompt. |
references |
array | – | Reference images, provided by URL or base64, to guide generation. Arrow 1.1 supports up to 4 references; Arrow 1.1 Max supports up to 16. |
n |
integer | 1 |
Number of outputs to generate (1 to 16). |
stream |
boolean | false |
When true, returns a Server-Sent Events stream with progressive rendering phases (reasoning, draft, content). |
temperature |
number | 1 |
Controls randomness (0 to 2). Lower values produce more deterministic output; higher values increase variety. |
top_p |
number | 1 |
Nucleus sampling (0 to 1). Limits token selection to the smallest set whose cumulative probability exceeds this value. Lower values make output more focused. |
presence_penalty |
number | 0 |
Penalizes tokens already present in prior output (-2 to 2). Positive values encourage the model to explore new patterns. |
max_output_tokens |
integer | – | Upper bound for output token count (1 to 65536). |