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 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/modelsGET /v1/models/{model}POST /v1/svgs/generationsPOST /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) fromGET /v1/models(andGET /v1/models/{model}). - Successful generations debit
n × svg_generatecredits (ndefaults to 1). - Successful vectorizations debit
svg_vectorizecredits 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.pricingfields, 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:
20requests per60seconds- Scoped per organization
- Applied to
POST /v1/svgs/generationsandPOST /v1/svgs/vectorizations - Exposed through
X-RateLimit-Limit,X-RateLimit-Remaining, andX-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 includeinvalid_api_keyandunauthorized.402 Payment Required: insufficient credits. Purchase more at Billing.403 Forbidden: frozen accounts return theaccount_frozencode.404 Not Found: the requested model does not exist.429 Too Many Requests: rate limit exceeded. Retry after the period in theRetry-Afterheader.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.