Skip to content
Esc
navigateopen⌘Jpreview

Text to SVG

Generates one or more SVGs from a prompt and optional references.

POST/v1/svgs/generations
Authorization
AuthorizationBearer token · headerrequired

Authentication via Bearer token API key

Header parameters
x-trace-idstring

Optional client-supplied trace identifier. The API echoes this value in X-Trace-ID and includes it in request logs for client-side correlation.

min length 1 · max length 256
Request body
requiredapplication/json
attributesSvgAttributes | null

Optional SVG root attributes requested by the caller.

Show properties
viewBoxobject | null

SVG root viewBox attribute controls.

Show properties
heightnumberrequired

Height of the SVG viewBox. Must be greater than zero.

minXnumberrequired

Minimum x coordinate of the SVG viewBox.

minYnumberrequired

Minimum y coordinate of the SVG viewBox.

widthnumberrequired

Width of the SVG viewBox. Must be greater than zero.

max_output_tokensinteger

Upper bound for output token count.

min 1 · max 65536
modelstringrequired

Model identifier to use for generation or vectorization.

min length 1
presence_penaltynumber | null

Penalty for tokens already present in prior output.

min -2 · max 2 · default: 0
streamboolean

When true, emits a Server-Sent Events stream.

default: false
temperaturenumber

Sampling temperature.

min 0 · max 2 · default: 1
top_pnumber

Nucleus sampling probability.

min 0 · max 1 · default: 1
instructionsstring

Additional style or formatting guidance.

min length 1
ninteger

Number of outputs to generate.

min 1 · max 16 · default: 1
promptstringrequired

Primary text prompt that describes the desired SVG.

min length 1
reasoning_effortstring

Reasoning effort applied to this generation. When omitted, Arrow uses its default.

Allowed:lowmediumhighxhigh
referencesImageInputReferenceInput[]

Optional reference images to guide style/composition. Accepts { url }, { base64 }, or URL string shorthand. Runtime limits are model-specific, and a request that exceeds the selected model's limit is rejected.

max items 16
Show properties
Array of ImageInputReferenceInput
Any of:
ImageInputReferenceUrl
urlstring<uri>required

Network image URL. Only http/https URLs are allowed. The API fetches the URL, follows up to 3 redirects, blocks private or reserved network targets, requires an image response content type, and applies the same decoded image limits as base64 inputs.

ImageInputReferenceBase64
base64stringrequired

Base64-encoded image payload. Decoded images must be no larger than 12582912 bytes, 4096x4096 pixels, or 16777216 total pixels. Accepted direct media types: image/png, image/jpeg, image/webp, image/gif, image/svg+xml.

min length 1 · max length 16777216
string<uri>
string<uri>
Responses
200

When stream is false, returns application/json with the full SVG response. When stream is true, returns text/event-stream with Server-Sent Events. Each SSE message contains an event: line (generating, reasoning, draft, or content) and a data: line with a JSON payload. For n > 1, events are interleaved across outputs, each output keeps a stable data.id, and data.index indicates the output position. Token-priced models report measured totals in usage and omit credits. Fixed-credit models retain compatibility token totals of 0 and report credits; for streaming, fixed credits are emitted on completed content events. The stream terminates with data: [DONE].

createdintegerrequired
min 0
creditsinteger

Credit cost for fixed-credit models. Omitted for token-priced models, whose measured totals are returned in usage.

min 0
dataSvgDocument[]required
min items 1
Show properties
Array of SvgDocument
mime_typestringrequired
Allowed:image/svg+xml
svgstringrequired

Raw SVG markup.

min length 1
idstringrequired
min length 1
usageSvgUsage

Token totals for token-priced models. Fixed-credit models use credits for billing and may report compatibility zeros here.

Show properties
input_tokensintegerrequired

Measured token count for token-priced models. Fixed-credit models retain this field for compatibility and may report zero.

min 0
output_tokensintegerrequired

Measured token count for token-priced models. Fixed-credit models retain this field for compatibility and may report zero.

min 0
total_tokensintegerrequired

Measured token count for token-priced models. Fixed-credit models retain this field for compatibility and may report zero.

min 0
400

Bad request – malformed body, missing required fields, or invalid parameter values.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
401

Unauthorized – missing, malformed, revoked, otherwise invalid API credentials, or an organization that could not be resolved for billing.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
402

Payment required – the organization has insufficient credits, or a funding payment has not settled.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
403

Forbidden – the account is frozen, the request is not allowed, or content policy rejected the request.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
404

Not found – the requested model does not exist, or the endpoint path and method are not served.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
408

Request timeout – the request exceeded an allowed client-facing deadline.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
413

Payload too large – the submitted prompt, image, or SVG input is too large.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
415

Unsupported media type – the request body arrived without a JSON Content-Type, so it could not be read.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
429

Rate limit exceeded – request throughput or measured input/output token usage exhausted a binding ceiling. operation_rate_limit_exceeded identifies operation throughput; rate_limit_exceeded covers overall request and token rates. X-RateLimit-Dimension names the exact dimension. When Retry-After is present, retry after the indicated period.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
500

The request could not be completed. Please retry.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
502

Bad gateway – model execution returned an invalid or failed response.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
503

Service unavailable – model execution is temporarily unavailable.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
504

Gateway timeout – model execution exceeded the server deadline.

codestringrequired
Allowed:invalid_requestinvalid_api_keyunauthorizedfunding_payment_failedfunding_payment_method_requiredfunding_payment_action_requiredfunding_pendinginsufficient_creditsaccount_frozencontent_policy_violationmodel_not_foundpayload_too_largerequest_timeoutrate_limit_exceededoperation_rate_limit_exceededweekly_limit_exceededserver_errormodel_errormodel_unavailable
messagestringrequired
min length 1
paramstring

The request parameter the failure is about, as a path from the request body root: size.width, input[0].content. A parameter name, never a submitted value. The same field, with the same meaning, as param on the Open Responses error payload, so one name reads across a failure raised before streaming and one raised during it. Absent, rather than null, when the failure is not about one particular parameter.

min length 1 · max length 128
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
Try it
Server
Authorization
Parameters
Bodyapplication/json
Request
curl -X POST "https://api.quiver.ai/v1/svgs/generations" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "attributes": {
    "viewBox": {
      "height": 512,
      "minX": 0,
      "minY": 0,
      "width": 512
    }
  },
  "max_output_tokens": 4096,
  "model": "string",
  "presence_penalty": 0.2,
  "stream": false,
  "temperature": 0.4,
  "top_p": 0.95,
  "instructions": "Use a flat monochrome style with clean geometry.",
  "n": 1,
  "prompt": "Generate an icon of a unicorn",
  "reasoning_effort": "medium",
  "references": [
    {
      "url": "https://example.com/uploads/reference1.png"
    }
  ]
}'
Response
{
  "created": 1704067200,
  "credits": 1,
  "data": [
    {
      "mime_type": "image/svg+xml",
      "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12 2l8 20H4z\"/></svg>"
    }
  ],
  "id": "resp_01J9AZ3XJ7D5S9ZV2Q5Z8E1A4N",
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0,
    "total_tokens": 0
  }
}