Skip to content

v2-web schema drift: generate/cover 422 body.params.* — missing token_provider, duration, edit_session_id, project_id, lyrics_project_id, lyricist_id #10

Description

@brivad

Symptom

Since ~2026-08-01, suno cover (and generate) fails on a captcha-cleared Pro account:

HTTP 422: {'type': 'string_type', 'loc': ['body', 'params', 'title'], 'msg': 'Input should be a valid string'}

(schema_drift error; the API returns body.params.* locs for the flat fields the CLI sends.)

Root cause

Suno's POST /api/generate/v2-web/ now requires fields that GenerateRequest (src/api/types.rs) omits:

  • token_provider (present as explicit null)
  • duration (null)
  • edit_session_id (null)
  • project_id (null)
  • lyrics_project_id (null)
  • lyricist_id (null)

The current web app sends all of them (reverse-engineered from the live suno.com JS bundle on 2026-08-01; body is still flat, no params wrapper — the body.params.* error loc is server-side wrapping).

Working body (validated HTTP 200, clips returned)

{
  "generation_type": "TEXT",
  "title": "...", "tags": "...", "negative_tags": "",
  "mv": "chirp-fenix", "prompt": "", "make_instrumental": false,
  "token": null, "token_provider": null,
  "user_uploaded_images_b64": null,
  "metadata": { "web_client_pathname": "/create", "is_max_mode": false,
    "is_mumble": false, "create_mode": "custom", "user_tier": "",
    "create_session_token": "<uuid>", "disable_volume_normalization": false },
  "override_fields": [],
  "cover_clip_id": "<clip>", "cover_start_s": null, "cover_end_s": null,
  "persona_id": null, "artist_clip_id": null, "artist_start_s": null,
  "artist_end_s": null, "continue_clip_id": null,
  "continued_aligned_prompt": null, "continue_at": null,
  "transaction_uuid": "<uuid>",
  "duration": null, "edit_session_id": null, "project_id": null,
  "lyrics_project_id": null, "lyricist_id": null
}

Note

The types.rs comment says token_provider "422s on a string" — with the new schema the KEY must be present (explicit null is fine). gpt_description_prompt is also sent for describe mode. Happy to open a PR with the updated GenerateRequest + tests if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions