Skip to content
Esc
navigateopen⌘Jpreview
On this page

Introduction

Authentication, base URL, endpoints, and error behavior for the QuiverAI API.

This section covers the API at api.quiver.ai.

Authentication

The QuiverAI API uses API keys with bearer authentication.

  • Create and manage keys in the Developer Platform under 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.
  • Monthly app subscription credits are not API balance and cannot be spent through api.quiver.ai.
  • For purchase limits, defaults, and legacy model.pricing fields, see API pricing.
  • In Billing, subscription credit usage is shown against the weekly allowance.

Errors and rate limits

The API returns standard HTTP status codes and a JSON error payload.

Rate limits resolve from the caller’s current organization, Project, operation class, and model-operation capacity. Read the response headers as one binding ceiling:

  • X-RateLimit-Limit: maximum requests in the current window.
  • X-RateLimit-Remaining: requests remaining in the current window.
  • X-RateLimit-Reset: Unix timestamp in milliseconds when the current window resets.
  • X-RateLimit-Scope: organization, project, operation_class, or model_operation.
  • X-RateLimit-Dimension: request_rate or operation_throughput.
  • X-RateLimit-Subject: customer-safe binding label; omitted for an organization-scoped ceiling.
  • Retry-After: seconds to wait before retrying a 429 response.
{
  "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 number of seconds in Retry-After.
  • 500 Internal Server Error: unexpected server error.
  • 502 Bad Gateway: server error while processing the request.
  • 503 Service Unavailable: server error while processing the request.

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.

Was this page helpful?