runlot
Reference

Error codes

The list of error codes the CLI prints in its 오류 [code] … format. In a program, branch on code and use message for display only.

The reference sources for this page are the Go sources in cp/internal/public, cp/internal/core, node/internal/front and node/internal/agent. The content is generated from those sources when the documentation is built.

Reading an error response

Every failed API response uses the same structure.

{ "error": { "code": "database_required", "message": "먼저 데이터베이스를 생성하세요" } }

The CLI prints this response in the form 오류 [database_required] … and exits with code 1. In automation scripts, branch on code. message is an explanation for users and may change at any time.

The same code can be returned with several HTTP status codes depending on the situation. Where that applies, all of them are shown in the status column.

오류 코드 목록 (76)

CodeHTTP statusDescription
access_denied401The access control bypass secret is not correct.
access_exchange_failed502Could not complete the access permission check. Please try again in a moment.
access_required401This deployment has access control enabled, so login is required.
access_unavailable503The request was not processed because access permission could not be verified.
already_member409The user is already a member of the organization. Change the role with a separate command.
already_pro409이미 프로 요금제다
backendThe backend service could not process the request.
backup_failed503Failed to create the database backup.
bad_request400The request format is not valid.
bad_signature403웹훅 서명이 맞지 않는다
billing_off501결제가 설정되지 않았다
billing_unavailable502결제 서비스가 응답하지 않는다
bundle_too_largeThe bundle size exceeds the upload limit.
cold503A cold project is being restored from backup. Please try again in a moment.
compatibility_date_unsupported400compatibilityDate … exceeds this runtime's maximum … — lower the value in runlot.json to … or earlier
confirm_mismatch400The confirmation string does not match the project name.
cron_limit400the … plan allows up to … scheduled executions per organization (… now, and this deploy adds …)
drain_incomplete503Existing requests have not finished, so the switch cannot be made safely.
email_failed503
email_not_declared409
email_rate_limited429
export_failed502 · 503Failed to export the database diagnostics.
forbidden403You are authenticated but do not have permission to perform this operation.
front_not_ready503The traffic frontend has not finished its initial sync.
front_unacked503The traffic frontend has not acknowledged the configuration change.
git_unavailable503Repository browse is not enabled
git_unreachable503Could not read the repository
github_token502Failed to exchange the GitHub token.
github_user502Failed to look up the GitHub user information.
grant_failed500Failed to renew the deployment permission.
hostname_taken409This hostname is already in use by another project.
internal500An internal server error occurred. Please try again in a moment.
invite_expired409만료된 초대입니다 — 관리자에게 다시 보내 달라고 요청해 주세요
invite_revoked409취소된 초대입니다 — 관리자에게 다시 요청해 주세요
invite_used409이미 수락된 초대입니다
last_admin409This is the last admin of the organization. Changing the role would leave no user able to manage it.
no_core503The control plane core service address is not configured.
no_email501This node cannot receive mail
no_host400The request has no Host header.
no_log_buffer503No log source is configured for the admin API.
no_placement503The project has not been placed on a node yet.
no_ses_hook501The SES webhook is off
no_wake501This node cannot start an idle project.
no_writable_state501This node has no storage that can perform that database operation.
node_unreachable502Cannot connect to the node. Please try again in a moment.
not_a_member403The user is not a member of this organization.
not_found404The requested organization, project or deployment was not found.
not_here404This node cannot serve the requested project.
not_pro409프로 요금제가 아니다
not_ready503The initial configuration sync has not finished yet.
op_conflict409The same operation ID is already in use by a different operation.
op_in_flight503 · 409The same operation is already in progress.
org_slug_taken409This organization slug is already in use.
project_name_taken409This project name is already in use.
rate_limitedThe request limit has been exceeded. Please try again in a moment.
repo_exists409Repository … already exists
reserved_name400This is a reserved name and cannot be used.
restore_busy429The number of restore operations that can run at once has been exceeded.
restore_failed500Failed to restore the database.
restore_stalled503The database restore was aborted. Please contact support.
restore_too_large429The restore exceeds the node's restore capacity limit.
restoring503The database is being restored. Please try again once it finishes.
revoked403The permission for this placement has been revoked.
seal_failed503Failed to save the final database generation.
ssh_key_exists409The public key is already registered
suspended403 · 409The project is suspended.
unauthorized401The token is missing or expired. Run runlot login again.
unknownThe response came from an intermediate proxy rather than a runlot server.
unknown_hostname404No project bound to that hostname was found on this node.
unknown_node503Could not determine the project's home node address.
unknown_state503Unrecognized placement state.
unsupportedThe current storage backend does not support this feature.
upstream_unreachableCannot connect to the deployed worker. Check the deployment status.
user_not_found404There is no login record for this account. Please log in once first.
wake_failed503Failed to start the idle project.
workerd_unchecked503 · 500Could not check the worker's commit path status.

Errors returned by the production service (55)

These error codes are returned when an internal runlot operation such as placement, restore or lease management fails. Most are resolved by retrying in a moment. If the same error keeps occurring, please contact support.

CodeHTTP statusDescription
already_done409The requested operation has already completed.
cas_conflict409The resource state changed, so the request cannot be applied. Check the latest state and try again.
cert_generation403The certificate generation used in the request has been revoked.
claimed409Another instance is using this database. Please try again in a moment.
cname_conflict409A CNAME record and records of other types cannot coexist on the same DNS name.
database_required409A database is required first. Add "database": true to runlot.json and deploy.
db_rewound409The metadata DB was restored to an earlier state, so lease issuance has been halted. Operator recovery is required.
dek_unwrap_failed500Failed to decrypt the project data encryption key.
dns_not_configured503The nameserver setup is not complete, so the domain cannot be purchased.
dnssec_off409DNSSEC is disabled for the domain zone. Enable it first.
domain_taken409The domain is already registered.
domain_unavailable409The domain cannot be registered.
email_address_taken409The address … is in use by another project
email_unavailable409This deployment has no mail domain (RUNLOT_MAIL_DOMAIN) — email cannot be turned on
era_ahead409The state version (era) in the request is higher than the version stored in the control plane.
era_write_failed500Failed to save the state version (era).
identity_mismatch403The hostname in the certificate does not match the hostname in the request body.
invalid_provider400Unsupported auth provider.
last_node_unavailable503The node holding the final database generation is unavailable.
lease_alive409The existing lease is still valid, so the request cannot be processed.
lease_drain_pending409The existing lease is being terminated. Please try again in a moment.
lease_quarantine409The lease is quarantined, so the request cannot be processed.
lease_seq_ahead409The lease sequence number in the request is ahead of the state the control plane knows.
lifecycle_disabled503Lifecycle operations are disabled.
managed_rrset409This DNS record is managed by runlot and cannot be edited directly.
master_key_version503The control plane does not currently hold the master key version the request requires.
no_access_key503The key for creating access control cookies is not configured.
no_database409This project has no database attached.
no_home_node503 · 409Could not determine the project's home node address.
no_last_node503Could not identify the node that held the final database generation.
no_master_key503The control plane master key is not configured.
no_node503There is no node available for placement.
no_node_admin503The node admin API address is not configured.
no_session_key503The key required for login session binding is not configured.
no_slot503No capacity is available. Please try again in a moment.
node_not_active409This node is not currently in a state where it can perform placement.
not_abortable409The operation has reached an irreversible stage and cannot be aborted.
not_active409This operation cannot be performed in the current state.
not_cold409The project is not cold, so the reactivation cannot be started.
not_granted404This project has no auth service attached.
not_home403 · 409This node is not the home node for the requested project generation.
not_quarantined409The lease is not quarantined, so it cannot be activated.
not_terminal409The operation is not in a terminal state yet.
op_stalled409The operation is in an aborted state. Resolve the cause and start it again.
payment_failed402The payment was not approved. Check your payment method.
registrar_error502The domain registrar returned an error.
registrar_not_configured503The domain registrar is not connected yet.
registrar_rejected422An earlier purchase of this name was rejected: …
saga_incomplete502The domain purchase did not finish. Sending the same request again resumes it.
stale_epoch409This request is from an earlier project generation. Try again from the latest state.
storage_unavailable409The node this project is placed on has no file storage backend — an operator has to attach a backend to the node
too_largeThe raw message exceeds … bytes
user_rrset409This DNS record was created by the user, so it cannot be overwritten by a managed record.
witness_unavailable503The witness information that verifies the metadata DB state could not be read, so lease issuance and activation were withheld.
zone_taken409This DNS zone already exists.

On this page