GUIDES

Errors and retries

Every refusal is { error: { code, message, requestId } }. Branch on code, show or log message, quote requestId if you write to us.

Answer
{
  "error": {
    "code": "insufficient_credits",
    "message": "This account has no credit left to unlock the image.",
    "requestId": "req_8Gq2Lw0fTz1kVb6s"
  }
}

When to retry

  • 429: wait the Retry-After seconds, then send the same request.
  • 500 and 503: wait a moment and retry with the same Idempotency-Key: it is never charged twice.
  • Every other 4xx: fix the request first. The same request gets the same answer.

Every code

Generated from the API's own registry, the list every answer is checked against.

StatusCodeWhat it meansWhat to do
400captcha_failedThe challenge was not passed.Complete the challenge again, then send the request.
400code_invalidThe sign-in code is wrong, used or expired.Ask for a new code.
400confirmation_requiredErasing an account needs the typed confirmation in the body.Send the exact phrase the reference shows.
400dimensions_too_largeThe image is wider or taller than we convert.Send an image of at most the limit on each side.
400file_emptyThe file has no bytes.Upload the file again.
400file_too_largeThe file is over the size limit.Send a smaller file.
400format_unavailableThis result has no file in that format.Ask for one of the formats the conversion lists.
400input_hash_mismatchThe inputHash you sent is not the hash of the stored file.Upload the file again; the stored bytes are not the ones you meant.
400invalid_colorsA color mapping names a color the result does not have, or is not a hex color.Map only the result's own colors, as #rrggbb.
400invalid_countryThe country is not a two-letter ISO 3166 code.Send a code like US or SG, or leave it out.
400invalid_cursorThe page cursor is not one this list returned.Start again from the first page, or pass the nextCursor you were given.
400invalid_emailThat is not an email address.Check the address and send it again.
400invalid_filterThe list filter is not one this list offers.Use one of the filters the reference names.
400invalid_idAn id in the path is not a UUID.Use the id exactly as the API returned it.
400invalid_idempotency_keyThe idempotency key is too short, too long or has characters we do not take.Send a UUID, or 8 to 200 letters, digits and . _ : ~ -
400invalid_input_keyThat upload does not belong to this account.Upload the file with this account, then convert it.
400invalid_optionsAn option is out of bounds or not offered yet.Read the message for the bounds, or leave the option out.
400invalid_paletteThe palette's name or colors cannot be taken.Give it a name and 1 to 24 distinct #rrggbb colors.
400invalid_requestA field is missing, has the wrong type, or is not one this endpoint takes.Read the message: it names the field. Fix it and send again.
400invalid_sizeThe declared size is not a positive whole number of bytes.Send the file's exact size in bytes.
400invalid_sortThe list order is not one this list offers.Use one of the orders the reference names.
400invalid_tilesA tile asked for a layer, level or position this result does not have.Ask only for tiles inside the result's levels.
400invalid_tokenThe link's token is malformed, expired or already used.Ask for a new link.
400invalid_urlWe do not fetch that URL: only https on the standard port, with no user name or password, on the public internet.Send a public https link to the image, or the image itself.
400invalid_verdictThe verdict's vote, reasons or note cannot be taken.Read the message: it names the field.
400layer_unavailableThis result has no such layer.Ask for a layer the reference names.
400malformed_bodyThe body is missing, or is not a JSON object (or, where the endpoint takes a file, form data).Send a JSON object with Content-Type: application/json, or multipart/form-data where the endpoint takes a file.
400malformed_imageThe file is not a readable image of the type it claims.Export the image again and send that file.
400same_planThe account is already on that plan level.Nothing to do. Pick another level to change it.
400unknown_packThere is no credit pack by that name.Use one of the items GET /prices lists.
400unknown_planThere is no plan level by that name.Use one of the plan items GET /prices lists.
400unknown_presetThere is no preset by that name.Use one of the presets the message lists.
400unknown_providerThat is not a way to sign in here.Use one of the methods GET /session offers.
400unsupported_typeWe do not convert that kind of file.Send one of the formats the message lists.
400url_unreachableWe could not fetch the image at that URL: no answer, a missing page, too slow, too many redirects, or too large.Read the message for which. Check the link opens in a private window, or send the image itself.
401invalid_api_keyThe API key is unknown, revoked, past its end, or mistyped.Copy the key again, or make a new one on the developer page.
401unauthenticatedNobody is signed in, or the session or key is not valid.Sign in again, or send a valid key as Authorization: Bearer.
402insufficient_creditsThere are not enough credits for this unlock. None was spent.Buy credits, then send the same request again.
402unlock_requiredThis image is not unlocked yet, so its files do not download.Unlock it (1 credit, once per image), then download.
403account_requiredTrying without an account does not include this.Sign in or create an account. The conversions come with you.
403api_key_not_allowedAn API key cannot do this: it manages the account, so only its signed-in owner may.Do it on vecsnap.com, signed in.
403email_unverifiedThe sign-in provider has not verified this email address.Verify the address with the provider, or sign in with the email code.
403forbiddenThis caller may not do that.Read the message: it says who may.
403plan_requiredLive API keys and live webhooks come with the Pro plan, and this account is not on Pro.Choose Pro, or use test mode: it is free.
404api_key_not_foundThere is no such key in this account.Use a key id GET /api-keys listed.
404no_planThis account has no plan to act on.Subscribe first.
404not_foundThere is nothing at that id for this caller.Check the id. Another account's objects read as not found too.
404original_unavailableThis conversion's original is not shown here.Show its redraw instead.
404palette_not_foundThere is no such palette in this account.Use a palette id GET /palettes listed.
404variant_not_foundThere is no such recolor of this result.Use a variant id this result listed.
404webhook_delivery_not_foundThere is no such webhook delivery in this account.Use a delivery id GET /webhook-deliveries listed.
404webhook_endpoint_not_foundThere is no such webhook endpoint in this account.Use an endpoint id GET /webhook-endpoints listed.
409account_existsAn account already holds this email address under another spelling.Sign in with that account.
409already_signed_inAn account is already signed in here.Sign out first to start a guest.
409already_subscribedThis account already has a plan.Change the plan instead of buying another.
409api_key_limitThe account has the most keys of this mode it can keep.Revoke a key you no longer use, then make the new one.
409conversion_failedThe conversion ended without a result.Convert the image again. Converting is free.
409conversion_runningThe image is still converting.Wait for it to finish, then try again.
409idempotency_key_reusedThat idempotency key was used for a different request.Make a new key for a new request.
409not_deletedThe image is not in Recently deleted.Delete it first, or leave it.
409not_in_test_modeTest mode makes the conversion and its SVG files only.Use a live key for it, or test the conversion and its SVG files.
409not_readyThe conversion is still running.Wait for it to finish (a webhook, the events stream, or a read), then ask again.
409not_waitingOnly a conversion waiting in line can be canceled.Let a running conversion finish.
409original_not_keptThe image's file is no longer kept, so it cannot be converted again.Upload the file again.
409palette_limitThe account has the most palettes it can keep.Delete a palette, then save the new one.
409plan_activeThe account's plan still renews.Cancel the plan first.
409plan_endingThe plan is set to end.Keep the plan first, then change it.
409plan_past_dueThe plan's last payment did not go through.Update the payment method in the billing portal.
409plan_renewal_pendingA renewal is being paid right now.Try again in a few minutes.
409plan_renewingThe plan renews in the next few minutes.Try again after the renewal.
409plan_switch_waitingA change of plan is already waiting for the next renewal.Wait for it, or keep the current plan.
409result_outdatedThis result was made before files were kept per format.Convert the image again.
409too_many_active_jobsYour conversions running at once are at their limit.Wait for one to finish, or send queue: true to wait in line.
409too_many_colorsThis result has too many colors to edit one by one.Redraw it with fewer colors first.
409unlock_pendingA conversion of this image is already unlocking it.Wait for that conversion to finish.
409webhook_delivery_pendingThat delivery did not end in a failure: it was delivered, or it is still on its way.Retry only a delivery that failed.
409webhook_endpoint_limitThe account has the most webhook endpoints of this mode it can keep.Delete an endpoint you no longer use, then add the new one.
422email_refusedWe do not open accounts for that email domain.Use another address.
429free_capacity_reachedEveryone's free conversions for today are used.Come back after Retry-After (UTC midnight), or unlock with a credit.
429free_limit_reachedToday's free conversions are used.Come back after Retry-After (UTC midnight), or unlock with a credit.
429rate_limitedToo many requests in a short time.Wait the Retry-After seconds, then send it again.
500internal_errorSomething failed on our side.Send it again. If it keeps failing, quote the requestId to support.
502code_unavailableThe sign-in email could not be sent just now.Try again in a minute.
502derive_failedA preview file could not be made just now.Try again. The coarser picture still shows.
502sign_in_failedThe sign-in provider did not finish the sign-in.Start the sign-in again.
502sign_in_unavailableThe sign-in provider could not be reached.Try again in a minute.
503auth_unavailableWe could not check who you are just now. You are not signed out.Send it again in a few seconds.
503billing_unavailableBilling could not be reached just now.Try again in a few minutes.
503checkout_unavailableCheckout is not open yet.Try again later.
503purchases_unavailablePurchases are not open on this deployment.Try again later.
503sign_out_failedThe session could not be ended just now.Try again.