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
- Open https://suno.com/create in Chrome, complete one CAPTCHA/Create challenge manually, then re-run the command.
- Refresh session cookies (re-login to Suno in the browser profile the CLI uses).
- Switch off VPN/proxy or wait for the IP reputation to cool down before retrying.
- 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
- Avoid VPN/datacenter IPs when driving Suno.
- Keep a warm, logged-in browser profile with fresh cookies.
- Throttle generation requests instead of batching aggressively.
- On first captcha error, solve it manually before any retry loop.
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
- Ctrip is asking for a captcha; complete it in your browser s
- Ctrip flight API returned HTTP ${status}; complete any verif
- 请先在共享 Chrome 完成 1688 登录/验证,再重试(${action})
- Ctrip is asking for a captcha; complete it in your browser s
- Ctrip is asking for a captcha; complete it in your browser s
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/cf2c7c26963f93dc.
Report an issue: GitHub.