jackwener/OpenCLI · error · CommandExecutionError

Suno requires a CAPTCHA challenge for this account/IP right

Error message

Suno requires a CAPTCHA challenge for this account/IP right now.

What it means

opencli's suno generate pre-flights a CAPTCHA check against Suno before submitting a generation. If the check reports captcha.required, Suno is demanding an interactive challenge for this account/IP and the CLI refuses to proceed programmatically.

Source

Thrown at clis/suno/generate.js:137

        const titleSource = titleArg || (isCustom ? (tags || lyrics.split('\n')[0]) : description);
        const title = titleSource.replace(/\s+/g, ' ').trim().slice(0, 60) || 'Untitled';

        const session = await ensureSunoSession(page);
        if (!session.planId) {
            throw new CommandExecutionError(
                `Suno generation needs a resolved plan id for the user_tier field, but billing/info did not surface one for this account (subscription_type=${session.planKey}). Verify the account is active at ${SUNO_URL}/account, then retry.`,
            );
        }
        const deviceId = session.deviceId;
        const captcha = await checkSunoCaptcha(page, deviceId);
        if (!captcha?.ok) {
            throw new CommandExecutionError(
                `Suno captcha pre-flight failed${captcha?.status ? ` (HTTP ${captcha.status})` : ''}.`,
                `Open ${SUNO_URL}/create in Chrome and verify the account is ready, then retry.`,
            );
        }
        if (captcha?.required) {
            throw new CommandExecutionError(
                'Suno requires a CAPTCHA challenge for this account/IP right now.',
                `Open ${SUNO_URL}/create in Chrome, solve a Create challenge once, then retry.`,
            );
        }
        if (session.totalCreditsAvailable < 10) {
            const b = session.breakdown;
            throw new CommandExecutionError(
                `Suno generation needs ~10 credits; you have ${session.totalCreditsAvailable} (monthly ${b.monthlyRemaining}/${b.monthlyLimit} + packs ${b.purchasedPacks} + leftover ${b.pack}). Top up at ${SUNO_URL}/account.`,
            );
        }

        const transactionUuid = crypto.randomUUID();
        const createSessionToken = crypto.randomUUID();

        const submission = await submitSunoGeneration(page, {
            mode: isCustom ? 'custom' : 'simple',
            model,
            title,

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Open https://suno.com/create in Chrome, complete one CAPTCHA/Create challenge manually, then re-run the command.
  2. Refresh session cookies (re-login to Suno in the browser profile the CLI uses).
  3. Switch off VPN/proxy or wait for the IP reputation to cool down before retrying.
  4. Reduce generation frequency to avoid repeated challenge triggers.

Example fix

// before: automated retries keep failing
while (!done) { await opencli('suno', 'generate', prompt); }
// after: pause and solve the challenge manually once, then resume
// 1. open https://suno.com/create and solve the challenge
// 2. re-run: opencli suno generate "lo-fi study beat"
Defensive patterns

Strategy: retry

Validate before calling

// Verify the account can generate before automating:
// open https://suno.com/create in the CLI's Chrome profile and confirm no challenge modal appears.
const canProceed = await checkSunoCaptcha(page, deviceId);
if (canProceed?.required) await openBrowserAndSolveChallenge('https://suno.com/create');

Type guard

function captchaCleared(c) { return !!c && c.ok === true && c.required !== true; }

Try / catch

try {
  await opencli('suno', 'generate', prompt);
} catch (e) {
  if (/CAPTCHA challenge/i.test(e.message)) {
    await pauseForManualChallenge('https://suno.com/create'); // solve once in Chrome
    await opencli('suno', 'generate', prompt); // single retry
  } else throw e;
}

Prevention

When it happens

Trigger: Running `opencli suno generate` after `checkSunoCaptcha(page, deviceId)` returns `{ok:true, required:true}` — Suno flagged the session for a Create-page challenge.

Common situations: Many rapid generation requests from one IP, datacenter/VPN IP ranges, new or unverified accounts, or stale browser cookies that make Suno distrust the session.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/cf2c7c26963f93dc. Report an issue: GitHub.