Skip to content

Errors ​

Every failure is a JSON envelope with a stable machine code, an optional reason that refines it, a message for people and the request ID for support. Clients decide by code and reason, never by the message text.

json
{ "code": "conflict", "reason": "version_exists", "message": "…", "requestId": "…" }

Codes ​

CodeHTTP statusMeaning
invalid_input400The request is malformed or a value is not allowed; fix the request before sending it again.
not_found404The object does not exist, or the caller may not see it.
conflict409The request conflicts with the current state; re-read the state, then decide.
forbidden403The credential is valid but lacks the permission for this action.
unauthorized401No valid credential: missing, wrong, expired or revoked.
capacity_exceeded507A quota, capacity or limit would be exceeded.
integrity_mismatch422The bytes do not match the declared size or SHA-256.
busy503The server is at its admission limit; repeat after Retry-After.
unavailable503A dependency is not available right now; repeat after Retry-After.
rate_limited429Too many attempts; wait for Retry-After.
read_only405This node does not accept changes (a read gateway answers this way; a mirror answers conflict with the reason mirror_read_only).
internal500An unexpected server defect; the request ID helps support find it. Do not repeat blindly.

Reasons ​

CodeReasonHTTP statusMeaning
invalid_inputvalidation400A field is missing or has a value outside its rules; details name the field.
invalid_inputmalformed_json400The body is not valid JSON.
invalid_inputbody_too_large413The body is larger than this operation accepts.
invalid_inputunsupported_media_type415The Content-Type is not one this operation accepts.
invalid_inputmethod_not_allowed405The path exists but not with this method.
invalid_inputrange_not_satisfiable416The requested byte range lies outside the content.
not_foundroute_not_found404There is no such route.
conflictupload_expired409The upload session expired before it was completed.
conflictupload_state409The upload is not in a state that allows this step.
conflictrevision_mismatch409The expected revision is not the current one (another change came first).
conflictversion_exists409This version was already published with other content.
conflictpart_mismatch409A part does not match its declared size or SHA-256.
conflictparts_incomplete409Not every part of the upload has arrived yet.
conflictidempotency_mismatch409The Idempotency-Key was used before with a different request.
conflictalready_exists409An object with this name or path already exists.
conflictstage_limit409The artifact has the maximum number of stages.
conflictstate_conflict409The object is in a state that does not allow this change.
conflictmirror_read_only409The repository is a mirror; it changes only through synchronization.
forbiddenpermission_missing403The credential lacks the action this operation needs.
forbiddenread_only_token403A read-only personal token cannot change anything.
forbiddencredential_revoked403The key or token was revoked.
forbiddensession_required403Only a signed-in account session may do this, not a key.
forbiddenadministrator_required403Only an administrator may do this.
forbiddenregistration_disabled403Self-registration is turned off on this server.
forbiddenorigin_not_allowed403The browser origin is not in ARKVORY_CORS_ORIGINS.
unauthorizedinvalid_credentials401The account name or password is wrong.
unauthorizedcurrent_password_invalid401The current password is wrong.
unauthorizedcredential_missing401The request carries no credential.
unauthorizedcredential_invalid401The credential is not a valid key, token or session.
unauthorizedsession_expired401The session expired; sign in again.
unauthorizedtoken_expired401The personal token expired.
capacity_exceededstorage_quota507The repository quota would be exceeded.
capacity_exceededstorage_full507The server disk keeps its free-space reserve; no room for more.
capacity_exceededaccount_limit507The number of accounts is at its limit.
capacity_exceededgroup_limit507The number of groups is at its limit.
capacity_exceededmembership_limit507The number of group members is at its limit.
capacity_exceededgrant_limit507The number of grants is at its limit.
capacity_exceededkey_limit507The number of keys is at its limit.
capacity_exceededtoken_limit507The number of personal tokens is at its limit.
capacity_exceededdelegation_limit507The number of delegations is at its limit.
capacity_exceededcatalog_limit507The catalog capacity of the installation would be exceeded.
capacity_exceededqueue_full507The transfer queue is full.
capacity_exceededtransfer_limit507The caller has as many transfers as allowed.
busyrequest_limit503The server handles as many requests as it admits.
busydownload_queued503The download waits in the queue; come back after Retry-After. Arkvory-Queue-Position and Arkvory-Starts-At tell the place and the expected start.
unavailablefeedback_disabled503Feedback is turned off on this server.
unavailablehub_unreachable503The update hub cannot be reached.
unavailablereplication_degraded503An HA cluster has fewer complete copies than a write needs, so the change was not acknowledged; repeat after Retry-After. Downloads still work.
rate_limitedlogin_attempts429Too many sign-in attempts; wait.
rate_limitedregistration_attempts429Too many registration attempts; wait.
rate_limitedpassword_attempts429Too many password attempts; wait.
rate_limitedfeedback_attempts429Too many feedback reports; wait.

Arkvory · ProAnimaStudio