Skip to content
Esc
navigateopen⌘Jpreview

SVG edit

Edits an input SVG from inline SVG markup or a remote/base64 SVG source.

POST/v1/svgs/edits
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
One of:
object
max_review_stepsinteger
Maximum edit review and redo steps after the initial edit.
min 0 · max 5 · default: 0
modelstringrequired
Model identifier to use for editing.
min length 1
promptstringrequired
Instruction describing how to edit the source SVG.
min length 1 · max length 4000
reasoning_effortstring
Reasoning effort applied to this editing. When omitted, Arrow uses its default.
Allowed:lowmediumhighxhigh
reference_imagesImageInputReference[] | null
Optional image references for the edit.
max items 4
Show properties
Array of ImageInputReference
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
settingsEditSettings | null
Show properties
max_output_tokensinteger | null
Upper bound for final edit output token count.
min 1 · max 65536
orchestrator_max_output_tokensinteger | null
Optional provider orchestrator token budget.
min 1 · max 65536
shallow_max_output_tokensinteger | null
Optional provider shallow edit token budget.
min 1 · max 65536
temperaturenumber | null
Edit sampling temperature.
min 0 · max 2
streamboolean
When true, emits a Server-Sent Events stream.
default: false
svgstringrequired
Inline SVG markup to edit.
min length 1 · max length 200000
svg_sourceany
object
max_review_stepsinteger
Maximum edit review and redo steps after the initial edit.
min 0 · max 5 · default: 0
modelstringrequired
Model identifier to use for editing.
min length 1
promptstringrequired
Instruction describing how to edit the source SVG.
min length 1 · max length 4000
reasoning_effortstring
Reasoning effort applied to this editing. When omitted, Arrow uses its default.
Allowed:lowmediumhighxhigh
reference_imagesImageInputReference[] | null
Optional image references for the edit.
max items 4
Show properties
Array of ImageInputReference
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
settingsEditSettings | null
Show properties
max_output_tokensinteger | null
Upper bound for final edit output token count.
min 1 · max 65536
orchestrator_max_output_tokensinteger | null
Optional provider orchestrator token budget.
min 1 · max 65536
shallow_max_output_tokensinteger | null
Optional provider shallow edit token budget.
min 1 · max 65536
temperaturenumber | null
Edit sampling temperature.
min 0 · max 2
streamboolean
When true, emits a Server-Sent Events stream.
default: false
svgany
svg_sourceobjectrequired
Show properties
object
Responses
200When `stream` is false, returns `application/json` with the edited SVG. When `stream` is true, returns Server-Sent Events ending with `data: [DONE]`. Token-priced models report measured totals in `usage` and omit `credits`. Fixed-credit models retain compatibility token totals of `0` and report `credits`.
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
400Bad 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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
401Unauthorized – 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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
402Payment required – the organization has insufficient credits.
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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
403Forbidden – 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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
404Not found – the requested model does not exist.
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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
408Request 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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
413Payload 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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
429Rate 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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
500The 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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
502Bad 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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
503Service 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
request_idstringrequired
min length 1
retry_afterinteger
min 0 · max 86400
statusintegerrequired
min 400 · max 599
504Gateway 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
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/edits" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "max_review_steps": 2,
  "model": "arrow-2",
  "prompt": "Make the mark bolder and simplify the star points.",
  "reasoning_effort": "medium",
  "reference_images": [
    {
      "url": "https://example.com/uploads/reference1.png"
    }
  ],
  "settings": {
    "max_output_tokens": 4096,
    "orchestrator_max_output_tokens": 4096,
    "shallow_max_output_tokens": 2048,
    "temperature": 0.4
  },
  "stream": false,
  "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12 2l8 20H4z\"/></svg>",
  "svg_source": null
}'
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
  }
}