Skip to main content
This section covers the API at api.quiver.ai.
If you are using the app at app.quiver.ai, start with the App docs.

Authentication

The QuiverAI API uses API keys with bearer authentication.
  • Create and manage keys in API Keys.
  • Follow the Quickstart to run your first call.
  • Keep keys server-side and load them from environment variables or secret managers.
Authorization: Bearer <QUIVERAI_API_KEY>

Base URL and headers

Send API requests to: https://api.quiver.ai/v1 Use these headers on JSON requests:
Authorization: Bearer <QUIVERAI_API_KEY>
Content-Type: application/json
When stream is false, SVG endpoints return JSON with id, created, data, and credits. Deprecated usage token fields may still appear for compatibility. When stream is true, the endpoints return text/event-stream with reasoning, draft, and content events, followed by data: [DONE].

Core endpoints

  • GET /v1/models
  • GET /v1/models/{model}
  • POST /v1/svgs/generations
  • POST /v1/svgs/vectorizations

Billing and usage records

  • Current released models include Arrow 1.0, Arrow 1.1, and Arrow 1.1 Max. Arrow 1.1 is the default recommendation for most API use cases; Arrow 1.1 Max trades more runtime and credits for higher output fidelity.
  • Usage is billed in pricing credits. Each model lists pricing_credits (svg_generate, svg_vectorize) from GET /v1/models (and GET /v1/models/{model}).
  • Successful generations debit n × svg_generate credits (n defaults to 1).
  • Successful vectorizations debit svg_vectorize credits once per request.
  • For purchase limits, defaults, and legacy model.pricing fields, see API pricing.
  • In Usage, API calls appear with a request ID.

Errors and rate limits

The API returns standard HTTP status codes and a JSON error payload. Current public API rate limit for SVG endpoints:
  • 20 requests per 60 seconds
  • Scoped per organization
  • Applied to POST /v1/svgs/generations and POST /v1/svgs/vectorizations
  • Exposed through X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset
{
  "status": 429,
  "code": "rate_limit_exceeded",
  "message": "Rate limit exceeded",
  "request_id": "550e8400-e29b-41d4-a716-446655440000"
}
  • 400 Bad Request: malformed body, missing required fields, or invalid parameter values.
  • 401 Unauthorized: API key missing, malformed, revoked, otherwise invalid, or the organization could not be resolved for billing. Machine-readable codes include invalid_api_key and unauthorized.
  • 402 Payment Required: insufficient credits. Purchase more at Billing.
  • 403 Forbidden: frozen accounts return the account_frozen code.
  • 404 Not Found: the requested model does not exist.
  • 429 Too Many Requests: rate limit exceeded. Retry after the period in the Retry-After header.
  • 500 Internal Server Error: unexpected server error.
  • 502 Bad Gateway: an upstream processing dependency returned an error.
  • 503 Service Unavailable: an upstream processing dependency could not be reached.
Use exponential backoff for retries and respect Retry-After when present.

SDKs

QuiverAI provides an official Node.js SDK:
npm install @quiverai/sdk
For other languages, call the REST API directly.