Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API times out (change in Suno UI?) #241

Open
guillefixx opened this issue Mar 12, 2025 · 6 comments
Open

API times out (change in Suno UI?) #241

guillefixx opened this issue Mar 12, 2025 · 6 comments

Comments

@guillefixx
Copy link

guillefixx commented Mar 12, 2025

Describe the bug

I believe Suno's website UI recently changed, which is making playwright fail to find the create button. Inside of src/lib/SunoApi.ts:

const button = page.locator('button[aria-label="Create"]').locator('div.flex');
this.click(button);

I tried changing it to be like this but got the same issue:

const button = page.locator('div:has-text("Create")');
this.click(button);

Below you will find the full trace of my terminal.

To Reproduce
Steps to reproduce the behavior:

  1. Call /api/custom_generate
  2. See error

Expected behavior
Two generated songs should be retrieved as a response.

Desktop:

  • OS: Linux (Raspberry OS) and MacOS 15.3.1
  • Browser: Chromium
  • Version: 131

Additional context
Full terminal trace:


> [email protected] dev
> next dev

 ⚠ Port 3000 is in use, trying 3001 instead.
   ▲ Next.js 14.1.4
   - Local:        http://localhost:3001
   - Environments: .env
   - Experiments (use at your own risk):
     · serverMinification

 ✓ Ready in 3.3s
 ○ Compiling /docs ...
 ✓ Compiled /api/custom_generate in 13.4s (3234 modules)
{"level":30,"time":1741776545177,"pid":13913,"hostname":"MBP-C02DV36JMD6N","msg":"Getting the session ID"}
{"level":30,"time":1741776546018,"pid":13913,"hostname":"MBP-C02DV36JMD6N","msg":"KeepAlive...\n"}
{"level":30,"time":1741776546233,"pid":13913,"hostname":"MBP-C02DV36JMD6N","msg":"KeepAlive...\n"}
 ✓ Compiled in 2.4s (1997 modules)
{"level":30,"time":1741776547148,"pid":13913,"hostname":"MBP-C02DV36JMD6N","required":true}
{"level":30,"time":1741776547148,"pid":13913,"hostname":"MBP-C02DV36JMD6N","msg":"CAPTCHA required. Launching browser..."}
{"level":30,"time":1741776548146,"pid":13913,"hostname":"MBP-C02DV36JMD6N","msg":"Waiting for Suno interface to load"}
{"level":30,"time":1741776551015,"pid":13913,"hostname":"MBP-C02DV36JMD6N","msg":"Triggering the CAPTCHA"}
Timeout 30000ms exceeded.
Call log:
  - waiting for locator('button[aria-label="Create"]').locator('div.flex')

    at captureRawStack (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/utils/stackTrace.js:50:17)
    at captureLibraryStackTrace (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/utils/stackTrace.js:56:17)
    at Frame._wrapApiCall (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/channelOwner.js:167:65)
    at Proxy.eval (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/channelOwner.js:128:33)
    at Frame.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/frame.js:291:32)
    at Locator.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/locator.js:90:30)
    at SunoApi.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:192:32)
    at SunoApi.getCaptcha (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:294:14)
    at async SunoApi.generateSongs (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:473:20)
    at async SunoApi.custom_generate (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:444:24)
    at async POST (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/app/api/custom_generate/route.ts:23:31)
    at /Users/myuser/Documents/scripts/suno-api/async /Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:63809
    at async eU.execute (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:53964)
    at async eU.handle (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:65062)
    at async doRender (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1317:42)
    at async cacheEntry.responseCache.get.routeKind (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1539:28)
    at async DevServer.renderToResponseWithComponentsImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1447:28)
    at async DevServer.renderPageComponent (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1844:24)
    at async DevServer.renderToResponseImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1882:32)
    at async DevServer.pipeImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:895:25)
    at async NextNodeServer.handleCatchallRenderRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/next-server.js:269:17)
    at async DevServer.handleRequestImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:791:17)
    at /Users/myuser/Documents/scripts/suno-api/async /Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/dev/next-dev-server.js:331:20
    at async Span.traceAsyncFn (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/trace/trace.js:151:20)
    at async DevServer.handleRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/dev/next-dev-server.js:328:24)
    at async invokeRender (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:174:21)
    at async handleRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:353:24)
    at async requestHandlerImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:377:13)
    at async Server.requestListener (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/start-server.js:140:13) {
  name: 'TimeoutError'
}
Timeout 30000ms exceeded.
Call log:
  - waiting for locator('button[aria-label="Create"]').locator('div.flex')

    at captureRawStack (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/utils/stackTrace.js:50:17)
    at captureLibraryStackTrace (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/utils/stackTrace.js:56:17)
    at Frame._wrapApiCall (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/channelOwner.js:167:65)
    at Proxy.eval (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/channelOwner.js:128:33)
    at Frame.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/frame.js:291:32)
    at Locator.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/locator.js:90:30)
    at SunoApi.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:192:32)
    at SunoApi.getCaptcha (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:294:14)
    at async SunoApi.generateSongs (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:473:20)
    at async SunoApi.custom_generate (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:444:24)
    at async POST (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/app/api/custom_generate/route.ts:23:31)
    at /Users/myuser/Documents/scripts/suno-api/async /Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:63809
    at async eU.execute (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:53964)
    at async eU.handle (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:65062)
    at async doRender (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1317:42)
    at async cacheEntry.responseCache.get.routeKind (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1539:28)
    at async DevServer.renderToResponseWithComponentsImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1447:28)
    at async DevServer.renderPageComponent (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1844:24)
    at async DevServer.renderToResponseImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1882:32)
    at async DevServer.pipeImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:895:25)
    at async NextNodeServer.handleCatchallRenderRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/next-server.js:269:17)
    at async DevServer.handleRequestImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:791:17)
    at /Users/myuser/Documents/scripts/suno-api/async /Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/dev/next-dev-server.js:331:20
    at async Span.traceAsyncFn (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/trace/trace.js:151:20)
    at async DevServer.handleRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/dev/next-dev-server.js:328:24)
    at async invokeRender (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:174:21)
    at async handleRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:353:24)
    at async requestHandlerImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:377:13)
    at async Server.requestListener (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/start-server.js:140:13) {
  name: 'TimeoutError'
}
 ⨯ unhandledRejection: Timeout 30000ms exceeded.
Call log:
  - waiting for locator('button[aria-label="Create"]').locator('div.flex')

    at captureRawStack (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/utils/stackTrace.js:50:17)
    at captureLibraryStackTrace (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/utils/stackTrace.js:56:17)
    at Frame._wrapApiCall (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/channelOwner.js:167:65)
    at Proxy.eval (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/channelOwner.js:128:33)
    at Frame.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/frame.js:291:32)
    at Locator.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/locator.js:90:30)
    at SunoApi.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:192:32)
    at SunoApi.getCaptcha (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:294:14)
    at async SunoApi.generateSongs (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:473:20)
    at async SunoApi.custom_generate (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:444:24)
    at async POST (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/app/api/custom_generate/route.ts:23:31)
    at /Users/myuser/Documents/scripts/suno-api/async /Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:63809
    at async eU.execute (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:53964)
    at async eU.handle (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:65062)
    at async doRender (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1317:42)
    at async cacheEntry.responseCache.get.routeKind (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1539:28)
    at async DevServer.renderToResponseWithComponentsImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1447:28)
    at async DevServer.renderPageComponent (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1844:24)
    at async DevServer.renderToResponseImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1882:32)
    at async DevServer.pipeImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:895:25)
    at async NextNodeServer.handleCatchallRenderRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/next-server.js:269:17)
    at async DevServer.handleRequestImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:791:17)
    at /Users/myuser/Documents/scripts/suno-api/async /Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/dev/next-dev-server.js:331:20
    at async Span.traceAsyncFn (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/trace/trace.js:151:20)
    at async DevServer.handleRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/dev/next-dev-server.js:328:24)
    at async invokeRender (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:174:21)
    at async handleRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:353:24)
    at async requestHandlerImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:377:13)
    at async Server.requestListener (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/start-server.js:140:13) {
  name: 'TimeoutError'
}
 ⨯ unhandledRejection: Timeout 30000ms exceeded.
Call log:
  - waiting for locator('button[aria-label="Create"]').locator('div.flex')

    at captureRawStack (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/utils/stackTrace.js:50:17)
    at captureLibraryStackTrace (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/utils/stackTrace.js:56:17)
    at Frame._wrapApiCall (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/channelOwner.js:167:65)
    at Proxy.eval (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/channelOwner.js:128:33)
    at Frame.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/frame.js:291:32)
    at Locator.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/node_modules/rebrowser-playwright-core/lib/client/locator.js:90:30)
    at SunoApi.click (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:192:32)
    at SunoApi.getCaptcha (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:294:14)
    at async SunoApi.generateSongs (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:473:20)
    at async SunoApi.custom_generate (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/lib/SunoApi.ts:444:24)
    at async POST (/Users/myuser/Documents/scripts/suno-api/webpack-internal:/(rsc)/src/app/api/custom_generate/route.ts:23:31)
    at /Users/myuser/Documents/scripts/suno-api/async /Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:63809
    at async eU.execute (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:53964)
    at async eU.handle (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:65062)
    at async doRender (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1317:42)
    at async cacheEntry.responseCache.get.routeKind (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1539:28)
    at async DevServer.renderToResponseWithComponentsImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1447:28)
    at async DevServer.renderPageComponent (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1844:24)
    at async DevServer.renderToResponseImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:1882:32)
    at async DevServer.pipeImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:895:25)
    at async NextNodeServer.handleCatchallRenderRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/next-server.js:269:17)
    at async DevServer.handleRequestImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/base-server.js:791:17)
    at /Users/myuser/Documents/scripts/suno-api/async /Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/dev/next-dev-server.js:331:20
    at async Span.traceAsyncFn (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/trace/trace.js:151:20)
    at async DevServer.handleRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/dev/next-dev-server.js:328:24)
    at async invokeRender (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:174:21)
    at async handleRequest (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:353:24)
    at async requestHandlerImpl (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/router-server.js:377:13)
    at async Server.requestListener (/Users/myuser/Documents/scripts/suno-api/node_modules/next/dist/server/lib/start-server.js:140:13) {
  name: 'TimeoutError'
}
Error: No hCaptcha request occurred within 1 minute.
    at Timeout.eval [as _onTimeout] (webpack-internal:///(rsc)/./src/lib/utils.ts:76:24)
    at listOnTimeout (node:internal/timers:569:17)
    at process.processTimers (node:internal/timers:512:7)
Error: No hCaptcha request occurred within 1 minute.
    at Timeout.eval [as _onTimeout] (webpack-internal:///(rsc)/./src/lib/utils.ts:76:24)
    at listOnTimeout (node:internal/timers:569:17)
    at process.processTimers (node:internal/timers:512:7)
 ⨯ src/lib/utils.ts (83:15) @ Timeout.eval [as _onTimeout]
 ⨯ unhandledRejection: Error: No hCaptcha request occurred within 1 minute.
    at Timeout.eval [as _onTimeout] (webpack-internal:///(rsc)/./src/lib/utils.ts:76:24)
    at listOnTimeout (node:internal/timers:569:17)
    at process.processTimers (node:internal/timers:512:7)
  81 |         page.off('request', onRequest);
  82 |         cleanupListeners();
> 83 |         reject(new Error('No hCaptcha request occurred within 1 minute.'));
     |               ^
  84 |       } else {
  85 |         // Start waiting for no hCaptcha requests
  86 |         resetTimeout();
 ⨯ src/lib/utils.ts (83:15) @ Timeout.eval [as _onTimeout]
 ⨯ unhandledRejection: Error: No hCaptcha request occurred within 1 minute.
    at Timeout.eval [as _onTimeout] (webpack-internal:///(rsc)/./src/lib/utils.ts:76:24)
    at listOnTimeout (node:internal/timers:569:17)
    at process.processTimers (node:internal/timers:512:7)
  81 |         page.off('request', onRequest);
  82 |         cleanupListeners();
> 83 |         reject(new Error('No hCaptcha request occurred within 1 minute.'));
     |               ^
  84 |       } else {
  85 |         // Start waiting for no hCaptcha requests
  86 |         resetTimeout();
guillefixx added a commit to guillefixx/suno-api-1 that referenced this issue Mar 12, 2025
@guillefixx
Copy link
Author

guillefixx commented Mar 12, 2025

This should fix the issue

const button = page.locator('button:has-text("Create")');
this.click(button);

https://github.com/guillefixx/suno-api-1/blob/fix-button-locator-reference/src/lib/SunoApi.ts

Edit: nevermind, this only worked for a day.

@guillefixx
Copy link
Author

It seems even more UI changes are coming, thus breaking even more stuff:

Image

@guillefixx
Copy link
Author

Well, it seems they also updated the auth service:

{"level":30,"time":1741970764213,"pid":88507,"hostname":"...","msg":"Getting the session ID"}
Error generating custom audio: Error: Failed to get session id, you may need to update the SUNO_COOKIE
    at SunoApi.getAuthToken (webpack-internal:///(rsc)/./src/lib/SunoApi.ts:126:19)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async SunoApi.init (webpack-internal:///(rsc)/./src/lib/SunoApi.ts:92:9)
    at async sunoApi (webpack-internal:///(rsc)/./src/lib/SunoApi.ts:727:22)
    at async POST (webpack-internal:///(rsc)/./src/app/api/custom_generate/route.ts:23:38)

@akarshtruefan
Copy link

What is the fix for this error. ?

@guillefixx
Copy link
Author

guillefixx commented Mar 15, 2025

What is the fix for this error. ?

Honestly, no idea. I've been trying to fix it by myself but it goes beyond my knowledge. Some reverse engineering needs to be done to fix this API.

At least these two things need to be done:

  • Fixing the authentication. It now fails to get the last active session ID. The Suno devs have probably changed their auth method. All I was able to see is that Suno uses is now using Clerk v5.56.0, whereas this project has a hardcoded 5.15.0 version (probably a different endpoint as well, just a theory).
  • Suno's UI has changed quite a lot, which means the getCaptcha method needs updating as well.

@gohoski
Copy link
Contributor

gohoski commented Mar 16, 2025

The fix is to move to Riffusion. I'm sorry, but I will no longer maintain suno-api because it's just much more feasible to move to a competitor. Until someone figures out how to properly bypass/solve the Cloudflare Turnstile CAPTCHA, I will definitely not develop this project any further. The anti-bot pressure that Suno makes ('fake app' & 403 bans) is genuinely so bad that it affects normal users. Riffusion is also way better for free users. Test it out on www.riffusion.com if you haven't already.

I will not make my Riffusion API project public, as you know what Suno did to suno-api, but I can give you access when I will finish it. Just message me on Discord/Telegram in my bio.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants