mirror of
https://github.com/Haidra-Org/AI-Horde.git
synced 2026-11-06 05:17:31 +00:00
- Strict tool definitions (`function.strict: true`) pass the structural rules of a strict `response_format`, with OpenAI's wording at `tools[i].function.parameters` - The front bounds every OpenAI sampling parameter with OpenAI's ranges and messages before the native call (temperature 0 to 2, top_p 0 to 1, penalties -2 to 2, `n` 1, at most 4 stops, at least one message); `max_tokens` below the native floor of 16 is refused with the floor stated; a native validation failure maps to the failing `param` - Responses carry `system_fingerprint`, a short hash of the serving worker and model; the front reference and how-to list the deliberate deviations from OpenAI - A refused worker reply records its message and return code on the request and the return code on the generation; a faulted request reports `fault_reason` and `fault_rc` on status and in the fault event, and the front's 502 states the refusal with the code in metadata - A fault that follows a `ChatSubmitNonconformant` refusal counts in the worker's `nonconformant_replies`, exposed in worker details and the moderation report, and leaves the dropped-job counts unchanged, since the worker generated and the reply failed the contract; structural refusals count as dropped jobs - A chat fault submit accepts an optional `fault_reason` from a fixed vocabulary (`prompt_overflow`, `unbuildable_grammar`, `tool_violation`, `reply_refused`, `generation_error`); a known value stores the server's sentence for it with return code `ChatWorkerFault`, and does not overwrite a reason the server recorded when it refused the same generation; an unknown value is ignored; a reason does not change how the fault is counted - The front waits while jobs remain and checks a done status without a generation again before answering `ChatRequestNoGeneration`; cancelled requests without a result settle promptly, and completion mapping requires a generation - Migration 5.1.15 adds `chat_fault_reason`, `chat_fault_rc`, `processing_gens.chat_refusal_rc` and `workers.nonconformant_replies`; docs and tests per item
19 KiB
19 KiB
AI Horde Errors
Every time an exception is raised by the AI Horde, it will return both the http code, a human-readable "message" and an rc field which will contain a unique string code for each type of error the horde might raise. You can use these to better adjust your client logic or for informing your users using your own words or in other languages.
This page will list all existing Horde RCs
Format
The errors returned by the AI horde are always in this json format
{
"message": "Human readable explanation on what went wrong",
"rc": "SomeReturnCodeInCamelCase"
}
Return Codes
| RC | Explanation |
|---|---|
| MissingPrompt | The generation prompt was not given |
| CorruptPrompt | The prompts was rejected as unethical |
| KudosValidationError | Something went wrong when transferring kudos. This is a base rc, so you should never typically see it. |
| NoValidActions | Something went wrong when modifying an entity on the horde. This is a base rc, so you should never typically see it. |
| InvalidSize | Requested image size is not a multiple of 64 |
| InvalidPromptSize | Prompt is too large |
| TooManySteps | Too many steps requested for image generation |
| Profanity | Profanity Detected. This is a base rc, so you should never typically see it. |
| ProfaneWorkerName | Profanity detected in worker name |
| ProfaneBridgeAgent | Profanity detected in bridge agent |
| ProfaneWorkerInfo | Profanity detected in worker info |
| ProfaneUserName | Profanity detected in username |
| ProfaneUserContact | Profanity detected in user contact details |
| ProfaneAdminComment | Profanity detected in admin comment |
| ProfaneTeamName | Profanity detected in team name |
| ProfaneTeamInfo | Profanity detected in team info |
| TooLong | Provided string was too long. This is a base rc, so you should never typically see it. |
| TooLongWorkerName | The provided worker name is too long |
| TooLongUserName | The provided username is too long |
| NameAlreadyExists | The provided name already exists. This is a base rc, so you should never typically see it. |
| WorkerNameAlreadyExists | The provided worker name already exists |
| TeamNameAlreadyExists | The provided team name already exists |
| PolymorphicNameConflict | The provided worker name already exists for a different worker type (e.g. Dreamer VS Scribe) |
| ImageValidationFailed | Source image validation failed unexpectedly |
| SourceImageResolutionExceeded | Source image resolution larger than the max allowed by the AI Horde |
| SourceImageSizeExceeded | Source image file size larger than the max allowed by the AI Horde |
| SourceImageUrlInvalid | Source image url does not contain an image |
| SourceImageUrlRefused | A source image or chat image URL is not http(s), does not resolve, resolves or redirects to a private, loopback, link-local, multicast or otherwise non-public address, or redirects more than 3 times |
| SourceImageUnreadable | Source image could not be parsed |
| InpaintingMissingMask | Missing mask or alpha channel for inpainting |
| SourceMaskUnnecessary | Source mask sent without a source image |
| UnsupportedSampler | Selected sampler unsupported with selected model |
| UnsupportedModel | The required model name is unsupported with this payload. This is a base rc, so you should never typically see it. |
| ControlNetUnsupported | ControlNet is unsupported in combination with this model |
| ControlNetSourceMissing | Missing source image for ControlNet workflow |
| ControlNetInvalidPayload | sent CN source and requested CN source at the same time |
| SourceImageRequiredForModel | Source image is required for using this model |
| UnexpectedModelName | Model name sent is not a Stable Diffusion checkpoint |
| TooManyUpscalers | Tried to use more than 1 upscaler at a time |
| ProcGenNotFound | The used generation for aesthetic ratings doesn't exist |
| InvalidAestheticAttempt | Aesthetics rating attempt failed |
| AestheticsNotCompleted | Attempted to rate non-completed request |
| AestheticsNotPublic | Attempted to rate non-shared request |
| AestheticsDuplicate | Sent duplicate images in an aesthetics set |
| AestheticsMissing | Aesthetic ratings missing |
| AestheticsSolo | Aesthetic ratings best-of contain a single image |
| AestheticsConfused | The best image is not the one with the highest aesthetic rating |
| AestheticsAlreadyExist | Aesthetic rating already submitted |
| AestheticsServerRejected | Aesthetic server rejected submission |
| AestheticsServerError | Aesthetic server returned error (provided) |
| AestheticsServerDown | Aesthetic server is down |
| AestheticsServerTimeout | Aesthetic server timed out during submission |
| InvalidAPIKey | Invalid AI Horde API key provided |
| WrongCredentials | Provided user does not own this worker |
| NotAdmin | Request needs AI Horded admin credentials |
| NotModerator | Request needs AI Horded moderator credentials |
| NotOwner | Request needs worker owner credentials |
| NotRequestOwner | Request parameters can only be retrieved with the API key that submitted the request |
| NotPrivileged | This user is not hardcoded to perform this operation |
| AnonForbidden | Anonymous is not allowed to perform this operation |
| AnonForbiddenWorker | Anonymous tried to run a worker |
| AnonForbiddenUserMod | Anonymous tried to modify their user account |
| NotTrusted | Untrusted users are not allowed to perform this operation |
| UntrustedTeamCreation | Untrusted user tried to create a team |
| UntrustedUnsafeIP | Untrusted user tried to use a VPN for a worker |
| WorkerMaintenance | Worker has been put into maintenance and cannot pop new jobs |
| WorkerFlaggedMaintenance | Worker owner has been flagged and worker has been put into permanent maintenance |
| TooManySameIPs | Same IP attempted to spawn too many workers |
| WorkerInviteOnly | AI Horde is in worker invite-only mode and worker owner needs to request permission |
| UnsafeIP | Worker attempted to connect from VPN |
| TimeoutIP | Operation rejected because user IP in timeout |
| TooManyNewIPs | Too many workers from new IPs currently |
| KudosUpfront | This request requires upfront kudos to accept |
| SharedKeyEmpty | Shared Key used in the request does not have any more kudos |
| InvalidJobID | Job not found when trying to submit. This probably means its request was delected for inactivity |
| RequestNotFound | Request not found. This probably means it was delected for inactivity |
| WorkerNotFound | Worker ID not found |
| TeamNotFound | Team ID not found |
| FilterNotFound | Regex filter not found |
| UserNotFound | User not found |
| DuplicateGen | Job has already been submitted |
| AbortedGen | Request aborted because too many jobs have failed |
| RequestExpired | Request expired |
| TooManyPrompts | User has requested too many generations concurrently |
| NoValidWorkers | No workers online which can pick up this request |
| MaintenanceMode | Request aborted because horde is in maintenance mode |
| TargetAccountFlagged | Action rejected because target user has been flagged for violating Horde ToS |
| SourceAccountFlagged | Action rejected because source user has been flagged for violating Horde ToS |
| FaultWhenKudosReceiving | Unexpected error when receiving kudos |
| FaultWhenKudosSending | Unexpected error when sending kudos |
| TooFastKudosTransfers | User tried to send kudos too fast after receiving them from the same user |
| KudosTransferToAnon | User tried to transfer kudos to Anon |
| KudosTransferToSelf | User tried to transfer kudos to themselves |
| KudosTransferNotEnough | User tried to transfer more kudos than they have |
| NegativeKudosTransfer | User tried to transfer negative kudos |
| KudosTransferFromAnon | User tried to transfer kudos using the Anon API key |
| InvalidAwardUsername | Tried to award kudos to non-existing user |
| KudosAwardToAnon | Tried to award kudos to Anonymous user |
| NotAllowedAwards | This user is not allowed to Award Kudos |
| NoWorkerModSelected | No valid worker modification selected |
| NoUserModSelected | No valid user modification selected |
| NoHordeModSelected | No valid horde modification selected |
| NoTeamModSelected | No valid team modification selected |
| NoFilterModSelected | No valid regex filter modification selected |
| NoSharedKeyModSelected | No valid shared key modification selected |
| BadRequest | Generic HTTP 400 code. You should typically never see this |
| Forbidden | Generic HTTP 401 code. You should typically never see this |
| Locked | Generic HTTP code. You should typically never see this |
| ControlNetInpaintingMismatch | ControlNet cannot be used with inpainting at this time |
| ControlNetInpaintingMismatch | ControlNet does not work with SDXL currently |
| HiResFixMismatch | hires fix does not work with SDXL currently |
| TooManyLoras | You cannot request more than 5 loras per generation |
| BadLoraVersion | explicit LoRa version requests have to be a version ID (i.e integer). |
| TooManyTIs | You cannot request more than 20 Textual Inversions per generation. |
| BetaAnonForbidden | Anonymous users cannot use the SDXL_beta. |
| BetaComparisonFault | You need to request at least 2 images for SDXL to allow for comparison |
| BadCFGDecimals | cfg_scale must be rounded to 2 decimal places |
| BadCFGNumber | cfg_scale must be a valid number |
| BadClientAgent | Banned client Agent |
| SpecialMissingPayload | Special models have to include a special payload |
| SpecialForbidden | This model can only be requested by a specific username |
| SpecialMissingUsername | Special models must always include the username, in the form of 'horde_special::user#id' |
| SpecialModelNeedsSpecialUser | Only special users can request a special model.", "SpecialModelNeedsSpecialUser |
| SpecialFieldNeedsSpecialUser | Only special users can send a special field |
| Img2ImgMismatch | Img2Img cannot be used in combination with this model |
| TilingMismatch | Tiling cannot be used in combination with this model |
| ControlNetMismatch | ControlNet cannot be used in combination with this model |
| HiResMismatch | HiRes fix cannot be used in combination with this model |
| EducationCannotSendKudos | Education accounts cannot transfer kudos out |
| InvalidPriorityUsername | Prioritized user format wrong |
| SharedKeyExpired | This shared key has expired |
| SharedKeyInsufficientKudos | This Shared key has insufficient kudos for this request |
| OnlyServiceAccountProxy | This request requires a Service Account |
| RequiresTrust | This request requires the user to be trusted or a patreon |
| SamplerKnobInapplicable | The requested sampler has no such solver setting |
| SamplerKnobOutOfRange | A solver setting is outside the range this sampler accepts |
| SamplerSolverTypeUnsupported | This sampler does not accept the requested solver type |
| SamplerSchedulerMismatch | This sampler and scheduler combination does not converge |
| SchedulerBaselineMismatch | The requested scheduler is not defined for this model's baseline |
| FlowShiftInapplicable | Flow shift is not applied by the selected model baseline's backend graph |
| FlowShiftOutOfRange | Flow shift is outside the backend's accepted range |
| ControlStrengthWithoutControlType | Control strength was sent without a control type or the QR workflow to apply it to |
| ControlStrengthOutOfRange | Control strength is outside the accepted range |
| CannotDeleteMod | A moderator account cannot be deleted; contact an admin |
| CannotWipeActiveUser | An account that was active in the last 30 days cannot be wiped yet |
| DeletedUser | This account has been scheduled for deletion and is disabled |
| ExampleURLAlreadyInUse | The image style already has an example at this URL |
| ExcessiveStopSequence | The total length of the stop sequences exceeds the allowed limit |
| InvalidControlType | The annotation form requires a known control_type in its payload |
| InvalidExtraSourceImages | This request type does not accept extra source images |
| InvalidExtraTexts | This request type does not accept extra texts |
| InvalidModerationAddressFilter | The moderation evidence ipaddr or ip_subject_key filter is not a valid address, network or pseudonym |
| InvalidModerationEventID | The moderation evidence event_id filter is not a positive integer |
| InvalidModerationNote | A moderation note is 1 to 2000 characters and may not contain NUL bytes |
| InvalidModerationReason | The moderation evidence reason filter is not a known moderation reason |
| InvalidModerationTimeRange | The moderation evidence time bounds are not a valid range |
| InvalidOperationsCursor | The pagination cursor for a moderator operations listing is not positive |
| InvalidOperationsLimit | The page size for a moderator operations listing is out of range |
| InvalidPromptEncoding | The prompt contains characters that cannot be encoded (unpaired UTF-16 surrogates) |
| InvalidRemixModel | Image remix is not available for this model baseline |
| InvalidSuspicionID | No suspicion reason exists with the given ID |
| InvalidTransparencyCN | Transparent images cannot be generated in ControlNet workflows |
| InvalidTransparencyImg2Img | Transparent images cannot be generated in img2img workflows |
| InvalidTransparencyModel | Transparent images cannot be generated for this model baseline |
| InvalidWorkerID | The worker ID is not a UUID |
| MessagesOnlyOwnWorkers | Messages can only be sent to your own workers |
| MissingExtraTexts | This workflow requires the extra texts to be provided |
| MissingFullSamplerOrder | A custom sampler order must list every sampler |
| ModerationEventNotFound | No moderation event exists with the given ID |
| MoreThanMinExtraSourceImage | Only trusted users and patrons can send more than one extra source image, or more than one image on a chat request |
| NonServiceForbidden | Only service accounts can set a proxy passkey |
| NotUserOrMod | Only the user themselves or a moderator can delete a user |
| NulByteInPayload | The request payload may not contain NUL bytes |
| PromptExceedsContext | The prompt does not fit the context length the request would run under |
| SharedKeyAssignedStyles | This shared key is restricted to specific styles |
| SharedKeyInvalid | The shared key given for the style does not exist |
| StyleDeclarationInvalid | A style's stored parameter policy or template fields no longer pass validation, so the style cannot be applied |
| StyleGetMistmatch | The style exists, but its type does not match the route it was read through |
| StyleMismatch | The style's type does not match the request, or a collection mixes image and text styles |
| StyleParameterAboveCeiling | A requested parameter is above the ceiling the style puts on it |
| StylePolicyOverridableMisplaced | A style's overridable list is only read under the 'listed' override mode |
| StylePromptFieldInvalid | A text style prompt has a placeholder that is more than a bare name, or a brace that does not parse |
| StylePromptMissingVars | A style prompt lacks the '{p}' placeholder, or an image style prompt lacks '{np}' |
| StylesAnonForbidden | Anonymous users cannot create styles |
| StylesRequiresCustomizer | Only customizers and trusted users can create styles |
| TemplateFieldMissing | The style requires a template field the request did not supply |
| TemplateFieldUnknown | The request supplied a template field the style does not declare |
| TemplateFieldsMatchNoCollectionStyle | None of the collection's styles accepts the template fields the request supplies |
| TemplateFieldsRequireStyle | Template fields can only be sent alongside a style |
| ThingNotFound | No item exists with the given ID |
| TokenOverflow | More tokens were requested than the context length allows |
| TooManyExtraSourceImages | At most 5 extra source images, or 5 images on a chat request, can be sent |
| TooManyStopSequences | Too many stop sequences were specified |
| TooManyStyleExamples | An image style can have at most 4 examples |
| TooManyWorkers | Untrusted users can have at most 3 distinct workers |
| TooManyWorkersTrusted | Trusted users cannot onboard more than 20 workers without contacting the team |
| UnsupportedChatParameter | A chat request used a key, role, value or content part the horde does not serve, its tool history breaks OpenAI's rule (each assistant message's tool calls answered right after it, each id exactly once), a strict json_schema breaks OpenAI's structural rules, a schema nests too deeply, or its tools, response format or text exceed their size bound; the message names it |
| ChatRequestConflict | Two keys of a chat request contradict each other, such as differing max_tokens and max_completion_tokens, or both horde.only and horde.ignore, a tool_choice (none included) or parallel_tool_calls without tools, a tool_choice forcing a function the tools do not define, or, under horde.openai_guards, a json_object format without the word "json" in the messages |
| ChatAdmissionDisabled | This horde is not accepting new chat requests (HTTP 503); queued chat requests are still served |
| ChatDeclarationInvalid | A text pop set chat_jobs without chat_limits or model_id, with a negative chat_limits.tools_max_temperature, or with a model_id that is not one of the worker's models, or set prompt_jobs to false without chat_jobs |
| ChatSubmitInvalid | A chat job's submit lacked a valid message or finish_reason, had null content without tool_calls, gave the tool_calls finish reason without tool calls, called a function the request did not offer, gave two tool calls the same id, carried generation, or a text job's submit carried message |
| ChatSubmitNonconformant | A chat job's reply to a strict request broke its tool_choice (a call under none, no call under required, or a missing or other call under a named choice) or its response_format (content that is not a JSON object, content not matching a strict json_schema, or a strict schema that cannot be compiled) |
| ChatWorkerFault | Not sent as a refusal. The fault_rc of a faulted chat request whose worker sent a known fault_reason with its faulted submit; fault_reason holds the AI Horde's message for that reason. The OpenAI-compatible front returns it as metadata.rc of its 502 |
| ChatModelMismatch | A chat job's submit named another model_id than the model the job was assigned |
| UnknownChatModel | A chat request's model is not in the text model reference and no online worker serves chat jobs with it (HTTP 404) |
| ChatImageStorageUnavailable | A chat request's images could not be stored; nothing was queued or charged (HTTP 503) |
| OperationKeyConflict | A chat request reused an operation key the same user already claimed with a different request |
| RequestTooLarge | The request body is larger than the route accepts (HTTP 413) |
| UserNotDeleted | The user is not deleted and cannot be undeleted |