Production automation hits the same API errors repeatedly. This table maps symptoms → root cause → fix — verify exact response fields against current Multilogin API docs (endpoints evolve between MLX launcher and cloud API).

HTTP & auth

SignalLikely causeFix
401 UnauthorizedExpired/rotated API token, wrong Bearer headerRegenerate token; use Authorization: Bearer <token>
403 ForbiddenToken lacks workspace permission for profileCheck workspace ACL; automation SA in correct folder
404 Not FoundWrong profile UUID or deleted profileSync profile list via API; validate UUID before queue
429 Too Many RequestsLaunch/stop burst exceeds rate limitSemaphore 3–5; backoff — see production recipe
500 / 502 / 503Launcher crash, host OOM, update in progressRetry with jitter; restart Multilogin agent; check disk/RAM

Profile launch (application-level)

SymptomCauseFix
Start returns OK but no CDP URLProfile still booting; proxy connectingPoll status 1–2s interval, max 60s timeout
PROXY_CONNECTION_FAILEDDead SOCKS/HTTP endpoint, auth typoPre-flight proxy check; rotate pool — alignment guide
Profile stuck STARTINGMimic/Stealthfox binary lock, zombie processForce stop via API; kill orphan browser on host
Immediate stop after startCorrupt profile storage, extension crashClone profile; disable extensions; test manual launch
CDP connect refusedFirewall blocks local WebSocket portAllow localhost ports; use launcher-reported host

Playwright attach errors

Debug snippet (log full 4xx body)

import httpx

def launch(client, headers, profile_id):
    r = client.post("/profile/start", headers=headers, json={"profile_id": profile_id})
    if r.status_code >= 400:
        raise RuntimeError(f"{r.status_code} {r.text}")
    return r.json()

Related

Disclosure: MLX-MMO affiliated with Multilogin. Error strings vary by API version — treat as patterns, not guarantees.