Error Codes

Persistly uses a small structured error vocabulary.

Exact error categories make SDK handling simpler and give coding agents stable patterns to generate around. Keep your game-specific messaging separate from the platform error code itself.

Error Schema

These error codes and HTTP statuses are the current public runtime set.

Persistly uses a small structured error vocabulary. Keep the numeric HTTP status visible and map your game-specific UX on top of the stable error code.

HTTP 400invalid_request

The request body, parameters, or payload shape is invalid for the runtime contract.

HTTP 401unauthorized

The runtime key is missing, malformed, revoked, or does not belong to the target environment.

HTTP 403forbidden

The account session token is missing, invalid, expired, revoked, or does not belong to the requested account or slot.

HTTP 404not_found

The referenced account or slot does not exist in the environment identified by the runtime key.

HTTP 409conflict

The submitted baseVersion is stale. Persistly returns local/cloud branches so the client can reconcile.

HTTP 413payload_too_large

The slotInfo or data payload exceeds Persistly's documented byte limits.

HTTP 402monthly_quota_exceeded

The workspace has exhausted its monthly runtime request quota for the current plan.

HTTP 429rate_limited

The client exceeded allowed request volume for the current environment or plan.

HTTP 400transfer_code_invalid

The transfer code is malformed, unknown, revoked, or belongs to a different environment.

HTTP 400transfer_code_expired

The transfer code has passed its short expiration window. Create a new code from the original device.

HTTP 400transfer_code_consumed

The transfer code was already used. Transfer codes are single-use.

HTTP 429transfer_code_rate_limited

Too many attempts were made against a real transfer code. Create a new code from the original device.

HTTP 400transfer_code_disabled

Transfer codes are not enabled for the current API deployment.

HTTP 500server_error

Persistly failed internally and the operation result should be treated as unknown.