Match an error to its lifecycle stage.
Publishing errors use a JSON `error` code. Rate limits add retry headers; artifact delivery uses status codes for allowance, missing, and pruned states.
JSON errorsBounded ingest
Request limits
- JSON request body: 96 KiB maximum
- release notes: 64 KiB maximum
- signature: 32 KiB maximum
- content type: 200 printable characters and must contain
/ - artifact: 5 GiB default maximum; deployment override possible
- artifacts per draft: 32 distinct targets
- channel: 1–64 allowed characters
- version and target: 1–128 allowed characters
- format: leading
.and up to 64 following allowed characters
Authentication
| Status | Error |
|---|---|
| 401 | missing_token, malformed_token, unknown_key, invalid_signature, revoked |
| 403 | insufficient_scope, key_app_mismatch |
| 429 | rate_limited |
JSON and validation
| Status | Error |
|---|---|
| 400 | invalid_json, json_object_required, missing required fields, or invalid_* fields |
| 400 | notes_too_large, signature_too_large |
| 413 | request_body_too_large, artifact_too_large |
Draft and artifact state
| Status | Error |
|---|---|
| 404 | channel_not_found, draft_release_not_found |
| 409 | release_already_published, storage_quota_exceeded, artifact_count_limit_exceeded |
| 409 | artifact_upload_missing, artifact_size_mismatch |
| 400 | draft_release_artifacts_required, artifact_object_key_missing |
Unexpected publishing failures are normalized to
ingest_request_failed with status 500.
Edge delivery
| Status | Meaning |
|---|---|
| 200 | Complete manifest, metadata, or artifact response |
| 204 | No updater response body because no newer release applies |
| 206 | Artifact range response |
| 402 | Distribution allowance exhausted or configured invoice cap reached |
| 404 | App, domain, release, target, or artifact not found |
| 410 | Artifact metadata exists but the binary was pruned |
| 501 | Stored updater adapter is unsupported |
| 503 | Required control-plane or billing state is unavailable |
Retry behavior
The official Action retries network failures and statuses 408, 425, 429,
500, 502, 503, and 504 for eligible steps. It honors numeric
retry-after values up to five seconds. The final publish operation is attempted
once.