Skip to content
Esc
navigateopen⌘Jpreview
On this page

Quickstart

Create an API key, send your first request, and validate your API setup.

Use this guide when integrating with api.quiver.ai.

Before you begin

Create a QuiverAI public beta account at quiver.ai/start, then sign in to app.quiver.ai.

Create an API key

  1. Open API Keys in the Developer Platform.
  2. Click Create API key and give it a name.
  3. Copy the key immediately. It is shown only once and cannot be retrieved later.

In API Keys, you can also verify whether a key is active and see its latest usage timestamp.

The QuiverAI API uses bearer authentication:

Authorization: Bearer <QUIVERAI_API_KEY>

Never commit API keys to source control.

Create new API key

Store the key in your environment

Save the key as QUIVERAI_API_KEY.

export QUIVERAI_API_KEY="<your-key>"
setx QUIVERAI_API_KEY "<your-key>"

Install the SDK

For Node.js, use the official Node.js SDK:

npm install @quiverai/sdk
yarn add @quiverai/sdk
pnpm add @quiverai/sdk

Send your first request

import { QuiverAI } from "@quiverai/sdk";

const client = new QuiverAI({
  bearerAuth: process.env["QUIVERAI_API_KEY"],
});

const logo = await client.createSVGs.generateSVG({
  model: "arrow-1.1",
  prompt: "A logo for the next AI design startup",
  instructions: "Use clean geometry, balanced spacing, and production-ready SVG structure.",
});

process.stdout.write(`${JSON.stringify(logo, null, 2)}\n`);

Use HTTP directly from any language.

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": "A logo for the next AI design startup",
  "instructions": "Use clean geometry, balanced spacing, and production-ready SVG structure.",
  "n": 1,
  "stream": false
}
'

A successful non-streaming response returns request metadata, one or more SVG payloads, and the request credit debit:

{
  "id": "resp_01J9AZ3XJ7D5S9ZV2Q5Z8E1A4N",
  "created": 1704067200,
  "data": [
    {
      "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12 2l8 20H4z\"/></svg>",
      "mime_type": "image/svg+xml"
    }
  ],
  "credits": 20
}

The deprecated usage token fields may still appear for compatibility, but use credits and pricing_credits for billing behavior.

Failures return a JSON error payload:

{
  "status": 429,
  "code": "rate_limit_exceeded",
  "message": "Rate limit exceeded",
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}
  • 401 Unauthorized: API key missing or invalid, or the organization could not be resolved for billing. Machine-readable codes include invalid_api_key and unauthorized.
  • 402 Payment Required: insufficient credits.
  • 403 Forbidden: frozen accounts use the account_frozen code.
  • 429 Too Many Requests: back off and retry. The default limit is 20 requests per 60 seconds per organization on SVG generation/vectorization endpoints. Respect Retry-After and X-RateLimit-* headers.

Billing model:

  • Debits use pricing credits in your balance; amounts are per model (see each model’s pricing_credits from GET /v1/models).
  • Generations debit n × svg_generate credits on success (n defaults to 1).
  • Vectorizations debit svg_vectorize credits per successful request.

To choose from models available to your organization, call GET /v1/models. Arrow 1.1 is the default recommendation for most integrations. Use Arrow 1.1 Max when higher output fidelity is worth the additional cost and runtime, especially for dense illustrations, technical diagrams, and other detail-sensitive SVGs.

Next steps

Was this page helpful?