Troubleshooting CI runs
| You see | Meaning | Fix |
|---|---|---|
secret key was rejected (HTTP 401) | The RL_API_KEY is missing, wrong, revoked or expired | Store a valid key as a CI secret (Masked and Protected on GitLab); run rl doctor |
not allowed to do this (HTTP 403) | The key lacks a scope or is bound to another site | A sync needs strings:write, translations:write and bundles:publish; a preview needs sites:read and translations:read |
account suspended (HTTP 403) | Writes are refused; published translations keep being served | Contact support |
plan, allowance or licence limit (HTTP 402) | Not a permission problem | Run rl quota; upgrade or wait for the reset date shown. See Errors |
service unavailable or rate limited (HTTP 503/429) | The control plane is busy; the CLI already retried | Re-run later; scheduled syncs may use on-unavailable: warn |
the job failed or timed out (exit 4) | A translation or publish job did not finish | rl jobs get ID; raise timeout |
Offline count only ... in the preview | No key in this run (a fork pull request) | Expected; a maintainer re-runs it |
could not post the comment | A read-only token | Give the workflow pull-requests: write |
bundle integrity check failed | The signature, SHA-256 or rollback check refused the bundle | Check RL_PUBLIC_KEY and RL_SITE_KEY; during a key rotation list both keys (see Signing and key epochs) |
hreflang / SEO check failed | The output has non-reciprocal or relative hreflang, a missing x-default, and so on | Fix the listed pages; hand-written alternates in source pages are the usual cause |
Exit codes of rl: 3 for 401 and 403, 4 for a job that failed or timed out, 5 for 402, 6 for 429, 502, 503, 504 or a network error.