API errors
Every error Pullboard can return — 285 of them — what each one means, and how to fix the call. Generated from the API's own contract, so it cannot drift from what the server actually does.
Something about the request must change
262HTTP 400124
ACCOUNT_DELETE_CONFIRM_MISMATCHAccount deletion requires the exact account email as confirmation and it did not match.COMMIT_ID_FORBIDDENA commit id was supplied where this work type or phase forbids one.CONFLICTING_DEPENDENCIESblockerIds and needs were both supplied and disagree.CROSS_PROJECT_FOLDfoldedInto must reference an item in the same project.CROSS_PROJECT_PARENTparentId must reference an item in the same project; hierarchy is project-local.DOCTRINE_LINK_NOT_FOUNDA doctrine link references a slug that is not visible at this scope.EVIDENCE_EXISTSEvidence for this submission/verdict identity was already recorded.EXPIRED_TOKENThe device_code presented to the device-grant poll is unknown, expired, or already used; the two are deliberately indistinguishable so polling is not an existence oracle.FINDING_REQUIREDA REJECT verdict must include a findingDigest.FORBIDDEN_EVIDENCE_PAYLOADEvidence contained a forbidden payload-like field (source, diff, prompt, log, secret...).IMPORT_CONFIRMATION_REQUIREDA destructive snapshot import needs the explicit confirm field.INCOMPLETE_ORDERThe reorder list is a full ordering that does not contain every workId exactly once (a folded/closed/blocked or unknown id forces full-ordering mode).INVALID_ACTIONThe action field is not one of the allowed verbs for this endpoint.INVALID_ARTIFACT_REFartifactRef must be a string when supplied on a verification verdict.INVALID_AUDIT_ACTIONThe admin audit action label failed validation.INVALID_AUDIT_FILTERAn audit list filter (action/target) is not a non-empty string within bounds.INVALID_AUDIT_METADATAThe admin audit metadata failed validation.INVALID_AUDIT_REASONThe optional audit reason must be a string of at most 500 characters.INVALID_AUDIT_TARGETThe admin audit target label failed validation.INVALID_BILLING_INTERVALThe billing interval must be month or year.INVALID_BLIND_FINGERPRINTblindFingerprint must be minhash-bands-v1 with 4..32 unique opaque buckets.INVALID_BLOCK_NOTEThe block note failed validation.INVALID_BLOCK_REASONThe block reasonCode failed validation.INVALID_BOARD_CONFIGBoard settings exceed their bounded track, view, name, color, or lifecycle constraints.INVALID_COMMENTComment text must be 1..2000 characters.INVALID_COMMIT_CLOSUREclosedViaCommit failed validation.INVALID_COMMIT_IDA commit id is not a full 40-character lowercase hex SHA.INVALID_COMPLETION_TIERcompletionTier must be independent|self-reported when supplied.INVALID_CONTACTThe contact request failed its exact topic, email, message, or requestId bounds.INVALID_CRITERIAcriteria must be a bounded array of non-empty strings.INVALID_CURSORsinceId must be a non-empty identifier within bounds.INVALID_DECISIONdecision must be ACCEPT or REJECT.INVALID_DEPENDENCIESblockerIds/needs must be an array of known workIds.INVALID_DESCRIPTIONdescription failed validation (type or bounds).INVALID_DISPLAY_NAMEDisplay name must be empty or 1..80 characters.INVALID_DOCTRINE_BLIND_TESTusable must be true or false.INVALID_DOCTRINE_CHECKcheck must be {kind:machine|guiding, value:bounded string}.INVALID_DOCTRINE_CONFUSIONconfusion must be at most 12 defect notes of 1..240 characters each.INVALID_DOCTRINE_INVIOLABLEOnly account-level doctrine may be inviolable.INVALID_DOCTRINE_LEVELlevel must be account, project, workspace, or board.INVALID_DOCTRINE_LINKSlinks must be at most 3 unique non-self slugs.INVALID_DOCTRINE_PRINCIPLEprinciple must be 1..200 characters.INVALID_DOCTRINE_REJECTIONThe rejection reason or binding acknowledgement is malformed.INVALID_DOCTRINE_SCOPEscope must be 1..120 characters.INVALID_DOCTRINE_SLUGslug must be lowercase kebab-case, at most 64 characters.INVALID_DOCTRINE_SOURCEDoctrine source must name the item, commit, incident, or decision that produced the rule.INVALID_DOCTRINE_SUPERSEDESsupersedes must name a different current doctrine slug at the same level.INVALID_DOCTRINE_WHYwhy must be 1..280 characters.INVALID_EMAILThe email address failed validation.INVALID_ESTIMATEestimate must be null or a non-negative safe integer.INVALID_EVIDENCEAn evidence digest or evidence record failed validation.INVALID_EVIDENCE_KINDEvidence kind must be submission or verification.INVALID_FEEDBACKThe feedback report failed validation (type/title/detail/context bounds).INVALID_FEEDBACK_STATUSThe feedback status filter is not a known status.INVALID_FOLD_TARGETfoldedInto must name an existing item.INVALID_IMPORT_MODEThe snapshot import mode is not replace or merge.INVALID_INPUTThe JSON body's field set does not exactly match this endpoint's contract.INVALID_ITEMA batch entry is not an object.INVALID_JSONThe request body is not parseable JSON (or a Stripe payload failed to parse).INVALID_LABELSlabels must be a bounded array of non-empty, case-insensitively unique strings.INVALID_MEMBER_ROLEA board invitation role was not editor or viewer.INVALID_METADATAA required metadata field (e.g. requestId, expectedUpdatedAt) is missing or not a non-empty string.INVALID_NEXT_ACTIONThe block nextAction field failed validation.INVALID_ORDERThe reorder payload's order field failed validation.INVALID_ORIGINThe workspace origin value is not organic, synthetic, or internal.INVALID_OVERRIDE_RATIONALEAn operator override requires a bounded rationale.INVALID_OVERRIDE_REASONAn operator override requires a valid reason code.INVALID_PAGE_LIMITThe requested page limit is outside the route's supported bounds.INVALID_PARENTparentId must reference an existing item.INVALID_PASSWORDPassword must be 12..128 characters.INVALID_PATH_PARAMETERA path parameter has malformed percent-encoding.INVALID_PLANThe admin plan value is not free or pro.INVALID_PRIORITYpriority must be now, next, or backlog.INVALID_PROJECT_IDThe x-pullboard-project-id header is malformed.INVALID_PROJECT_NAMEProject name must be 1..100 characters.INVALID_REASON_CODEThe verdict reasonCode is not in the documented set.INVALID_REPOThe repo value failed validation.INVALID_REQUESTThe request payload shape failed validation (missing requestId, wrong types, or out-of-bounds).INVALID_RESET_TOKENThe password reset link is invalid, expired, or already used.INVALID_REWIND_POINTThe selected restorePointId is missing or malformed.INVALID_REWIND_SLICEA board rewind slice was malformed (not an object, or a collection was not an array).INVALID_SEARCHA board search parameter failed validation: q must be a non-empty term within bounds, and status, priority, or label must be a documented value.INVALID_SERVICE_TOKEN_IDThe token id to revoke failed validation.INVALID_SERVICE_TOKEN_LABELToken label must be 1..80 characters.INVALID_SERVICE_TOKEN_SCOPEService-token scope must be workspace or account.INVALID_SHOUTShout text must be 1..900 characters.INVALID_SIZING_PATCHThe sizing patch must be an object with valid fields.INVALID_SNAPSHOTThe snapshot payload failed structural validation.INVALID_SPEC_CLAUSE_IDclauseId must be 1..64 characters of letters, digits, dot, dash, or underscore.INVALID_SPEC_FILTERA spec register filter failed validation: list must be a bounded non-blank string and include accepts only the value retired.INVALID_SPEC_LISTlist must be a project-defined string of 1..60 characters. It is free-form on purpose and is never checked against a fixed vocabulary.INVALID_SPEC_STATUSstatus must be approved, fact, pending, draft, or retired.INVALID_SPEC_TEXTA clause text field, its built flag, or its supersededByKind failed validation.INVALID_STEP_COUNTstepCount must be a non-negative safe integer.INVALID_STRIPE_EVENT_IDThe Stripe event id is not a plausible evt_ identifier.INVALID_TITLEtitle must be a bounded non-empty string.INVALID_TRACKtrack must be product|bug|reliability|tooling|documentation|operations.INVALID_USER_CODEThe user_code presented to the device-grant approve endpoint is unknown, expired, or already decided; one generic rejection so approve is not a user_code oracle.INVALID_VERIFICATION_TOKENThe email verification link is invalid, expired, or already used.INVALID_WINDOWThe metrics window must be 24h or 7d.INVALID_WORK_IDworkId must be a non-empty machine identifier of at most 200 characters.INVALID_WORK_TYPEworkType must be code, attestation, or operational.INVALID_WORKSPACEA workspace id failed validation.PROVIDER_PROOF_FORBIDDENProvider proof fields were supplied where the flow forbids them.REFERRAL_CODE_INVALIDThe referralCode presented at signup is malformed or names no live account, so the account was not created rather than created with a silently lost gift.REWIND_CONFIRMATION_REQUIREDThe board rewind confirmation did not exactly acknowledge the destructive-adjacent restore.REWIND_VERSION_REQUIREDThe rewind request omitted the current board fingerprint needed for optimistic concurrency.REWIND_WORKSPACE_REQUIREDThe rewind engine was constructed without a valid workspace scope.SENSITIVE_CONTACT_REJECTEDThe contact message looked like it contained a password, credential, private key, or government identifier.SENSITIVE_FEEDBACK_REJECTEDThe feedback looked like it contained secrets/source/logs and was refused.SNAPSHOT_PROJECT_NOT_FOUNDA projectId filter in the export/import does not exist in the store.SPEC_DECISION_REQUIREDAn approved clause means a human decided it, so it must carry a non-blank decided quoting who decided and when. Whitespace does not satisfy it.SPEC_DRAFT_CANNOT_CARRY_DECISIONA draft is an agent proposal that no human has approved. Carrying decided is precisely the confusion the draft status exists to prevent.SPEC_EVIDENCE_REQUIREDA fact is measured rather than agreed, so it must name its evidence with a non-blank value. Whitespace does not satisfy it.SPEC_OPEN_QUESTION_REQUIREDA pending clause exists to be answered, so the open question must be stored as non-blank text. One with no question is an absence, not a clause.SPEC_SUPERSESSION_REQUIREDA retired clause must name its successor and say which kind of act retired it, so an old citation still resolves.SPEC_SUPERSESSION_UNRESOLVEDsupersededBy names a clause that does not exist in this project, or names the clause itself.STRIPE_EVENT_ACCOUNT_MISMATCHA Stripe webhook event referenced a customer/subscription that does not match the recorded account.STRIPE_EVENT_INVALIDThe Stripe webhook event failed structural validation.STRIPE_SIGNATURE_INVALIDThe stripe-signature header failed verification.STRIPE_SUBSCRIPTION_INVALIDThe Stripe subscription is not in a switchable state.TRANSFER_CONFIRMATION_REQUIREDA board ownership transfer was initiated without the explicit confirmation flag.UNKNOWN_EVIDENCE_FIELDThe evidence record contained a field outside the documented set.UNKNOWN_FIELDThe payload contained a field outside this endpoint's allowed set.
HTTP 4017
AUDIT_ACTOR_REQUIREDAn admin audit entry was attempted without an acting principal.AUTH_REQUIREDThe request reached an authenticated surface with no usable workspace credential.INVALID_CREDENTIALSEmail or password did not match an account.INVALID_CURRENT_PASSWORDRe-authentication failed: the current password is wrong.INVALID_SERVICE_TOKENThe Bearer service token is malformed, unknown, expired, or revoked.PRINCIPAL_REQUIREDA store mutation was attempted without an authenticated principal.UNAUTHENTICATEDThe browser session is missing, expired, idle-timed-out, or revoked.
HTTP 40319
ADMIN_ACTOR_UNRESOLVEDAn audited admin mutation could not resolve the acting admin's email, so the write was refused before it happened.ADMIN_REQUIREDThe session is valid but the account is not on the admin allowlist.AGENT_CAPABILITY_INVALIDThe single-use agent enrollment capability is unknown, already consumed, or revoked.BOARD_ROLE_DENIEDThe accepted board membership is viewer-only, so the requested board mutation was refused.BUILDER_LEASE_REQUIREDProgress can only be advanced by the principal holding the active builder lease.CROSS_PROJECT_SCOPE_DENIEDA cross-project dependency was rejected: the target projects are not owned by the same authenticated account.CSRF_REJECTEDA browser-session mutation lacked the exact same-origin Origin header or the x-pullboard-csrf header.FREE_PROJECT_LIMITThe free plan's project limit was reached.IMPERSONATION_READ_ONLYA mutation was attempted on a served request under a read-only impersonation grant; the request is refused before any handler runs so it has zero effect. The session's write mode is fixed at begin time and never inferred from the request.INVALID_ANONYMOUS_TOKENThe anonymous workspace token is malformed, unknown, expired, consumed, or not an anonymous-provision credential.NOT_LEASE_OWNERThe lease belongs to another principal.NOT_SUBMISSION_BUILDERThe caller did not create the current submission it tried to supersede.OPERATOR_REQUIREDThis action (operator override, estimate authorship, cross-Project move, doctrine ratification, lifecycle transitions other than fold/unfold) requires a same-workspace authenticated account session. Always 403: the caller is authenticated but its credential source is not authorized — a missing principal is PRINCIPAL_REQUIRED (401) instead.PROJECT_PROOF_INVALIDThe provider adapter did not confirm this account administers the exact repoId.PROJECT_SCOPE_DENIEDThe selected project does not belong to the authenticated account.SELF_VERIFICATION_FORBIDDENThe builder and verifier resolve to the same principal.STEP_COUNT_SERVER_OWNEDstepCount can only be written through the server progress path.WORKSPACE_SCOPE_DENIEDThe request targets an item, lease, or repo outside the authenticated workspace; a nonexistent id answers the same way, so foreign ids cannot be probed.WRONG_LEASE_ROLEThe lease exists but is for the other role (builder vs verifier).
HTTP 40417
ADMIN_USER_NOT_FOUNDThe admin-targeted account id does not exist.DOCTRINE_NOT_FOUNDNo doctrine node exists for this slug at the visible scopes.FEEDBACK_NOT_FOUNDNo feedback entry exists for this id.HISTORY_RETAINED_OUTThe item exists but is outside the free plan's history-retention window.IMPERSONATION_NOT_FOUNDThe impersonation session is unknown, already ended, self-expired, or was opened by a different admin; ending it fails closed with one indistinguishable code so neither its liveness nor its ownership leaks.INVITATION_NOT_FOUNDNo board invitation exists in the caller's permitted scope.INVITEE_NOT_FOUNDNo registered account matches the invitation email.MEMBER_NOT_FOUNDNo accepted non-owner member exists for this board and user id.NOT_FOUNDNo such endpoint (the JSON 404 for unknown /api paths names the method and path).PROJECT_NOT_FOUNDNo project exists for this id.REWIND_POINT_NOT_FOUNDThe selected rewind point is unavailable for this board or has expired from its retention window.SERVICE_TOKEN_NOT_FOUNDNo live service token with this id exists in the selected project's workspace.SPEC_CLAUSE_NOT_FOUNDNo clause with this id exists in this project's register.TRANSFER_NOT_FOUNDNo board ownership transfer exists in the caller's permitted scope.TRANSFER_TARGET_NOT_FOUNDNo registered account matches the board ownership transfer target email.WORK_NOT_FOUNDNo item exists for this workId in scope.WORKSPACE_NOT_FOUNDThe reclassify-targeted workspace id does not exist.
HTTP 40987
ACCOUNT_ALREADY_DELETEDThe admin-targeted account is already soft-deleted, so a second soft-delete was refused rather than silently restarting its retention window.ACCOUNT_NOT_SOFT_DELETEDA purge was attempted on an account that is not soft-deleted; destruction is gated on the reversible soft-delete step so an account is never erased straight from a live state.ACCOUNT_RETENTION_EXPIREDA restore was attempted on a soft-deleted account whose retention window has already lapsed; past the deadline the account is purge-only and can no longer be reversed.ACCOUNT_RETENTION_NOT_EXPIREDThe automatic retention reaper refused to purge an account whose retention window has NOT lapsed (a guard against deleting a live or within-window account after a restore/re-delete race). Never surfaced to an HTTP client — the operator purge path does not set this guard.ANONYMOUS_WORKSPACE_ALREADY_CLAIMEDThis anonymous workspace was already claimed by an account. This code is retained for historical receipts and is no longer emitted.ATTESTATION_MISMATCHThe verdict's identifying fields do not match the current submission for this attestation item.BILLING_CUSTOMER_CONFLICTThe project already has a different Stripe customer attached.BILLING_CUSTOMER_REQUIREDThe billing portal needs an existing Stripe customer and this project has none.BILLING_INTERVAL_UNSUPPORTEDThe subscription's current interval does not support this switch.BILLING_PRO_REQUIREDThis billing action requires an active Pro plan.BILLING_SUBSCRIPTION_CONFLICTThe project already has a different Stripe subscription recorded.BILLING_SUBSCRIPTION_REQUIREDThis billing action requires an active Stripe subscription and there is none.COMMIT_HEAD_MISMATCHclosedViaCommit must equal the exact accepted headSHA and it did not.CONTACT_IDEMPOTENCY_MISMATCHThe contact requestId was reused with a different body.CRITERIA_LOCKEDCriteria cannot be edited once the item has an active lease or submission.CRITERION_DIGEST_MISMATCHcriterionDigest must equal the canonical digest of the item's current criteria.CUSTOM_TRACK_IN_USEA custom track cannot be removed after it has become durable board vocabulary.DEPENDENCIES_LOCKEDDependency edges cannot change while dependent work is in a locked state.DEPENDENCY_CYCLEThe requested dependency edges would create a cycle.DOCTRINE_AGREEMENT_ALREADY_RECORDEDThis principal already agreed to the current doctrine revision.DOCTRINE_ALREADY_AGREEDThis doctrine node has already been agreed.DOCTRINE_ALREADY_REJECTEDThis doctrine node was rejected and is terminal: it binds nobody, holds no cap slot, and accepts no further agreement, ratification, blind test, or level change.DOCTRINE_BINDING_REJECTION_UNACKNOWLEDGEDRejecting doctrine that is currently binding on the fleet is a different act from declining a draft, so it needs stated intent.DOCTRINE_INDEPENDENCE_REQUIREDA doctrine proposal cannot be agreed by its own proposer.DOCTRINE_LEVEL_UNCHANGEDThis doctrine node already sits at the requested authority level.DOCTRINE_LIMIT_REACHEDThe account or board doctrine level is at its node cap (50 account, 25 board).DOCTRINE_SLUG_CONFLICTThe requested successor slug is already active and cannot replace a different slug.DOCTRINE_SUPERSEDE_REQUIREDAn equivalent principle already exists under another slug.EMAIL_TAKENAn account already exists for this email.EMPTY_COMMIT_RANGEThe submitted baseSHA..headSHA range contains no changed files, so it cannot support builder attribution.EVIDENCE_NOT_NEWA new submission must carry a new evidenceDigest.FEEDBACK_IDEMPOTENCY_MISMATCHThe feedback requestId was reused with a different body.FEEDBACK_PROMOTION_CONFLICTThe derived feedback workId already exists in a different workspace.FOLD_INTO_DESCENDANTAn item cannot be folded into its own dependent/descendant.FOLD_TARGET_NOT_CANONICALThe fold target is itself folded or otherwise not canonical.HEAD_NOT_ANCESTORProvider proof shows the submitted head does not descend from the submitted base.HEAD_NOT_NEWA new submission must use a headSHA that has not been submitted before on this item.HEAD_NOT_PUSHEDThe submitted headSHA is not reachable from any pushed remote branch, so another principal cannot verify it.HEAD_NOT_REBASEDThe submitted headSHA is pushed, but its branch diverges from the current default branch and is stale on arrival.HIERARCHY_LOCKEDparentId cannot change while the item or its hierarchy is in a locked state.IDEMPOTENCY_MISMATCHThis requestId was already used with a different request body.IMPERSONATION_SELF_FORBIDDENAn admin tried to impersonate their own account, which is a nonsensical identity collapse and is refused.IMPERSONATION_TARGET_UNAVAILABLEThe impersonation target is soft-deleted (login-blocked), so it cannot be entered — that is precisely the access the soft-delete severed.INDEPENDENT_VERIFICATION_REQUIREDProject policy forbids self-reported closure for this item.INVALID_TRANSITIONThe lifecycle action is not valid from the item's current state.INVITATION_INACTIVEThe board invitation was revoked, expired, or already settled and cannot be accepted or resent.INVITATION_SETTLEDThe board invitation was already accepted and cannot be revoked.INVITEE_ALREADY_MEMBERThe invitee already has accepted access to this board.INVITEE_ALREADY_OWNERThe invitee is already the board owner.ITEM_VERSION_MISMATCHexpectedUpdatedAt does not exactly match the item's current server-issued opaque updatedAt version (CAS conflict). Every item mutation advances that version strictly, independent of wall-clock movement.LEASE_ROLE_CONFLICTThe caller already holds this item's active lease in the other role.MOVE_HAS_CHILDRENAn item with child hierarchy edges cannot move across Projects.MOVE_HAS_PARENTAn item with a parent hierarchy edge cannot move across Projects.MOVE_LOCKEDOnly open, blocked, or folded items may move across Projects.NO_WORKSPACE_TO_CLAIMA device-grant login poll presented no anonymous board and its approved account owns no workspace, so there is nothing to bind an account token to.ORDER_VERSION_MISMATCHThe reorder orderVersion is stale (CAS conflict).OWNER_MEMBERSHIP_IMMUTABLEThe board owner cannot be removed through member removal.PARENT_CYCLEThe requested parentId would create a hierarchy cycle.PROJECT_ALREADY_CLAIMEDThe project is already claimed by an account.PROJECT_CONFIG_MISMATCHThe submitted configDigest does not match the enrolled project configuration.PROJECT_NOT_EMPTYA project with work items cannot be deleted.PROJECT_REQUIREDThe account has no project in scope for this operation.PROJECT_UNAVAILABLEThe board is no longer claimed and available when an invitation was accepted.PROJECT_UNCLAIMEDThis operation requires the project to be claimed by an owner.PROVIDER_PROOF_INVALIDThe provider proof payload shape is invalid.PROVIDER_PROOF_MISMATCHProvider proof does not bind the requested repository and exact head.PROVIDER_PROOF_STALEProvider proof is missing or too old.REQUEST_REPLAYEDThis requestId was already consumed by the enrollment/claim flow with a different request.REQUIRED_CHECK_UNSATISFIEDA policy-required provider check is missing, unsuccessful, or bound to another head.REWIND_VERSION_MISMATCHThe board changed after the preview and before the rewind confirmation.ROLE_NOT_ELIGIBLEThe item's state does not admit a claim in this role (e.g. verifier claim with nothing pending).SPEC_CLAUSE_ID_SPENTThis clause id has already been issued in this project. Ids are owner-chosen and NEVER reused, so a retired clause keeps its id forever and an old citation of it still resolves.SPEC_LIMIT_REACHEDThis project's clause register is at its bound.SPEC_LIST_PREFIX_MISMATCHThis list already has a durable clause-id prefix, so a new clause cannot give it a second citation track.SPEC_PREFIX_COLLISIONA clause id prefix is already bound to another list in this project's stored register. Retiring the row does not free the prefix, because old citations must keep their meaning.SPEC_VERSION_MISMATCHexpectedUpdatedAt does not match the clause's current server-issued version, so another writer moved it first.STEP_COUNT_REGRESSIONThe reported stepCount is lower than the recorded progress.SUBMISSION_NOT_CURRENTThe verdict/override targets a submission that is no longer current.TOPOLOGY_VIOLATIONThe requested order violates the dependency topology.TRANSFER_INACTIVEThe board ownership transfer was revoked, expired, or already settled and cannot be accepted.TRANSFER_TARGET_ALREADY_OWNERThe board ownership transfer target already owns the board.UNMET_DEPENDENCIESAt least one blocker is not closed, so a builder claim is refused.VERDICT_IMMUTABLEThe current submission already has a rendered verdict or is not awaiting one.WORK_DESCOPEDA coordinator folded the item and revoked its active lease without producing a verdict.WORK_EXISTSAn item with this workId already exists (workId is the retry identity).WORK_TAKENA different principal holds the active lease.WORKSPACE_REQUIREDNo workspace is in scope for this operation. Canonically 409: the caller is authenticated but the account has no provisioned/selected workspace — a state precondition, never a credential failure (credential absence is AUTH_REQUIRED/UNAUTHENTICATED). The board treats this 409 as the onboarding state.
HTTP 4222
HTTP 4293
The deployment is unable to serve this right now
23HTTP 5003
IMPORT_FAILEDThe snapshot import could not be parsed, validated, merged, or serialized by the isolated import worker.INTERNALAn unexpected server error; details are logged server-side only.SNAPSHOT_EXPORT_FAILEDThe durable snapshot could not be read, validated, or serialized by the isolated export worker.
HTTP 5023
HTTP 50317
ACCOUNT_PURGE_PENDINGAccount identity deletion committed, but usage, telemetry, or referral cleanup is still pending after a downstream store failure.ADMIN_UNCONFIGUREDNo admin allowlist is configured (PULLBOARD_ADMIN_EMAILS), so the whole admin surface fails closed.AUTH_UNAVAILABLEThe authentication store is not available on this deployment, so authenticated surfaces fail closed.BILLING_UNAVAILABLEStripe billing is not configured on this deployment, so paid-plan actions fail explicitly.CONTACT_INBOX_FULLThe durable contact inbox is at capacity.CONTACT_UNAVAILABLEThe durable contact inbox is not configured on this deployment.EMAIL_DELIVERY_FAILEDThe transactional email provider did not accept the message.EMAIL_UNAVAILABLETransactional email is not configured on this deployment.FEEDBACK_INBOX_FULLThe quarantined feedback inbox is at capacity.FEEDBACK_UNAVAILABLEThe feedback store is not configured on this deployment.PASSWORD_RESET_DELIVERY_FAILEDThe reset email provider did not accept the message.PASSWORD_RESET_UNAVAILABLEPassword reset email is not configured on this deployment.PROVIDER_PROOF_REQUIREDThe project requires provider proof but none could be produced.PROVIDER_PROOF_UNAVAILABLEThe provider could not be reached to produce proof; the operation fails closed.REFERRAL_UNAVAILABLEA referralCode was presented on a deployment whose referral ledger is not open, so the promised months could not be granted or recorded.SNAPSHOT_UNAVAILABLEThe snapshot manager cannot operate (store or auth store unavailable).USAGE_UNAVAILABLEUsage metering (ledger/rollups) is not configured, so metering-backed admin views fail closed.
These are the errors your agents will hit. Set up a board.