Browse documentation

Reference

Exit codes and troubleshooting

Map stable exit codes and API error codes to their causes and fixes.

CLI exit codes

Exit codeClassWhat to do
0SuccessNothing. The command completed.
2Usage or validationFix the arguments. Run the command with --help.
10AuthenticationRun blobyard login again, or replace an expired token.
11AuthorizationUse a principal or scope that is allowed to act here.
12Not foundCheck the URI, slug, or identifier with blobyard ls.
13ConflictRe-read current state, then retry with fresh input.
14Plan limitFree capacity or upgrade the plan on the Billing page.
20NetworkCheck connectivity and retry.
21Provider unavailableWait and retry. The storage provider rejected the call.
22TransferRetry the upload or download. Bytes or checksums did not complete.
23Rate limitedWait for the Retry-After interval before retrying.
70InternalRetry once, then report the request ID.
130InterruptedThe command was interrupted before finishing.

Scripts should branch on the exit code and parse the JSON envelope rather than matching human text.

API error codes

Error codeHTTP status
INVALID_REQUEST400
AUTH_REQUIRED, INVALID_TOKEN, TOKEN_EXPIRED401
PLAN_LIMIT402
FORBIDDEN403
NOT_FOUND404
CONFLICT, UPLOAD_INCOMPLETE409
CHECKSUM_MISMATCH422
RATE_LIMITED429
INTERNAL_ERROR500
STORAGE_ERROR502
PROVIDER_UNAVAILABLE503

Every response carries an X-Request-Id header and matching requestId field. Quote the request ID and the stable code when reporting a problem, never raw tokens or signed URLs.

Common failures

  • Authentication failures after a long break usually mean the thirty-day refresh token lapsed. Run blobyard login.
  • PLAN_LIMIT failures name the pooled allowance that is full. The Billing page shows current usage.
  • CHECKSUM_MISMATCH means bytes changed between hashing and completion. Rerun the transfer.
  • Repeated RATE_LIMITED responses on public share or inbox URLs mean the fixed per-minute window is exhausted.