Naar inhoud springen
API-referentie
API-referentie

Suno sectie vervangen

Gebruik het eindpunt voor het vervangen van secties om een asynchrone taak aan te maken.

01

Overzicht

Gebruik het eindpunt voor het vervangen van secties met een ondersteund model. Gebruik de geretourneerde taak-ID om de status op te halen, of geef callback_url op voor de hieronder gedocumenteerde leveringen.

Snelstart

  1. Maak een API-sleutel aan en stel deze in als RUNAPI_API_KEY.
  2. Kies een ondersteund model en stuur een POST-verzoek waarvan de body overeenkomt met het schema van dat model.
  3. Sla de geretourneerde taak-ID op en poll vervolgens totdat een eindstatus is bereikt, of verwerk de hieronder gedocumenteerde callbacks.

Eindpunt

POST /api/v1/suno/replace_section
Basis-URL
https://runapi.ai
API-versie
v1
Authenticatie
Authorization: Bearer YOUR_API_TOKEN
02

Ondersteunde modellen

Open een modelpagina voor actuele prijzen, snelheidslimieten en details over commercieel gebruik.

03

Verzoekschema

JSON-body

Velden en toegestane waarden zijn afhankelijk van het geselecteerde model. Indien opgegeven, ontvangt callback_url de hieronder gedocumenteerde taakaflevering.

Verzoekbody12 velden
audio_idstring
Optioneel

Audio-ID binnen de brontaak. Gebruik in combinatie met task_id; combineer niet met upload_url/model.

callback_urlstring
Optioneel

Webhook-URL voor asynchrone meldingen.

full_lyricsstring
Verplicht

Volledige songteksten voor context.

Grens: 5000
infill_end_timenumber
Verplicht

Eindtijd van het gedeelte in seconden; moet groter zijn dan infill_start_time en een vervangingsduur van minimaal 10 seconden opleveren.

infill_start_timenumber
Verplicht

Begintijd van het gedeelte in seconden; de vervangingsduur moet minimaal 10 seconden zijn.

lyricsstring
Verplicht

Vervangende sectieteksten.

Grens: 5000
modelstring
Optioneel

Model-slug voor geüploade bronaudio.

Toegestane waarden: suno-v4, suno-v4.5, suno-v4.5-all, suno-v4.5-plus, suno-v5, suno-v5.5
negative_tagsstring
Optioneel

Te vermijden stijlen.

tagsstring
Verplicht

Stijl- of genre-tags.

Grens: 1000
task_idstring
Optioneel

Brontask-ID. Gebruik met audio_id; combineer niet met upload_url/model.

titlestring
Verplicht

Songtitel.

Grens: 80
upload_urlstring
Optioneel

Geüploade bron-audio-URL. Gebruik met model; combineer niet met task_id/audio_id.

04

Acceptatie aanmaken

HTTP 202

POST /api/v1/suno/replace_section

Responsschema
JSON
{
  "properties": {
    "billing": {
      "properties": {
        "refund": {
          "oneOf": [
            {
              "properties": {
                "refunded_at": {
                  "type": "string"
                }
              },
              "required": [
                "refunded_at"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "reservation": {
          "oneOf": [
            {
              "properties": {
                "amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "amount_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "settlement": {
          "oneOf": [
            {
              "properties": {
                "amount_micro_cents": {
                  "type": "integer"
                },
                "charged_amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "charged_amount_cents",
                "amount_micro_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        }
      },
      "required": [
        "reservation",
        "settlement",
        "refund"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "processing"
      ],
      "type": "string"
    },
    "task_replayed": {
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "status",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "status": "processing"
}
05

Pollen bezig

HTTP 200

GET /api/v1/suno/replace_section/:id

Responsschema
JSON
{
  "properties": {
    "billing": {
      "properties": {
        "refund": {
          "oneOf": [
            {
              "properties": {
                "refunded_at": {
                  "type": "string"
                }
              },
              "required": [
                "refunded_at"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "reservation": {
          "oneOf": [
            {
              "properties": {
                "amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "amount_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "settlement": {
          "oneOf": [
            {
              "properties": {
                "amount_micro_cents": {
                  "type": "integer"
                },
                "charged_amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "charged_amount_cents",
                "amount_micro_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        }
      },
      "required": [
        "reservation",
        "settlement",
        "refund"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "processing"
      ],
      "type": "string"
    },
    "track": {
      "properties": {
        "audio_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "duration": {
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "image_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "lyrics": {
          "type": "string"
        },
        "model_name": {
          "type": "string"
        },
        "stream_audio_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "type": "object",
      "unevaluatedProperties": false
    }
  },
  "required": [
    "id",
    "status",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "status": "processing"
}
06

Pollen voltooid

HTTP 200

GET /api/v1/suno/replace_section/:id

Responsschema
JSON
{
  "properties": {
    "billing": {
      "properties": {
        "refund": {
          "oneOf": [
            {
              "properties": {
                "refunded_at": {
                  "type": "string"
                }
              },
              "required": [
                "refunded_at"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "reservation": {
          "oneOf": [
            {
              "properties": {
                "amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "amount_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "settlement": {
          "oneOf": [
            {
              "properties": {
                "amount_micro_cents": {
                  "type": "integer"
                },
                "charged_amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "charged_amount_cents",
                "amount_micro_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        }
      },
      "required": [
        "reservation",
        "settlement",
        "refund"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "completed"
      ],
      "type": "string"
    },
    "track": {
      "properties": {
        "audio_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "duration": {
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "image_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "lyrics": {
          "type": "string"
        },
        "model_name": {
          "type": "string"
        },
        "stream_audio_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "type": "object",
      "unevaluatedProperties": false
    }
  },
  "required": [
    "id",
    "status",
    "track",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "status": "completed",
  "track": {
    "audio_url": "https://file.runapi.ai/reference-audio.mp3",
    "id": "audio_replaced_section"
  }
}
07

Pollen mislukt

HTTP 200

GET /api/v1/suno/replace_section/:id

Responsschema
JSON
{
  "properties": {
    "billing": {
      "properties": {
        "refund": {
          "oneOf": [
            {
              "properties": {
                "refunded_at": {
                  "type": "string"
                }
              },
              "required": [
                "refunded_at"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "reservation": {
          "oneOf": [
            {
              "properties": {
                "amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "amount_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "settlement": {
          "oneOf": [
            {
              "properties": {
                "amount_micro_cents": {
                  "type": "integer"
                },
                "charged_amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "charged_amount_cents",
                "amount_micro_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        }
      },
      "required": [
        "reservation",
        "settlement",
        "refund"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "error": {
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "failed"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status",
    "error",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "error": "Task processing failed.",
  "id": "tsk_reference_demo",
  "status": "failed"
}
08

Callback van klant: voltooid

HTTP 200

POST callback_url

Responsschema
JSON
{
  "properties": {
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "completed"
      ],
      "type": "string"
    },
    "track": {
      "properties": {
        "audio_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "duration": {
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "image_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "lyrics": {
          "type": "string"
        },
        "model_name": {
          "type": "string"
        },
        "stream_audio_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "id"
      ],
      "type": "object",
      "unevaluatedProperties": false
    }
  },
  "required": [
    "id",
    "status",
    "track"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "id": "tsk_reference_demo",
  "status": "completed",
  "track": {
    "audio_url": "https://file.runapi.ai/reference-audio.mp3",
    "id": "audio_replaced_section"
  }
}
09

Callback van klant: mislukt

HTTP 200

POST callback_url

Responsschema
JSON
{
  "properties": {
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "properties": {
            "code": {
              "type": "string"
            },
            "limit_cents": {
              "type": "integer"
            },
            "message": {
              "type": "string"
            },
            "reset_at": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "used_cents": {
              "type": "integer"
            },
            "window": {
              "enum": [
                "1h",
                "1d",
                "7d",
                "daily",
                "weekly",
                "monthly",
                "lifetime"
              ],
              "type": "string"
            }
          },
          "required": [
            "code",
            "message"
          ],
          "type": "object",
          "unevaluatedProperties": false
        }
      ]
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "failed"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status",
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "error": {
    "code": "generation_failed",
    "message": "Task processing failed."
  },
  "id": "tsk_reference_demo",
  "status": "failed"
}
10

Fouten

HTTP 401

POST /api/v1/suno/replace_section

Responsschema
JSON
{
  "properties": {
    "error": {
      "description": "Leesbare foutmelding.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "error": "Authentication required"
}
11

Fouten

HTTP 401

GET /api/v1/suno/replace_section/:id

Responsschema
JSON
{
  "properties": {
    "error": {
      "description": "Leesbare foutmelding.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "error": "Authentication required"
}
12

Fouten

HTTP 400

POST /api/v1/suno/replace_section

Responsschema
JSON
{
  "oneOf": [
    {
      "properties": {
        "error": {
          "description": "Leesbare foutmelding.",
          "type": "string"
        }
      },
      "required": [
        "error"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    {
      "properties": {
        "error": {
          "description": "Leesbare validatiesamenvatting.",
          "type": "string"
        },
        "errors": {
          "additionalProperties": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": "Validatieberichten gekoppeld aan het openbare aanvraagveld, met een reeks leesbare tekenreeksen per veld.",
          "type": "object"
        }
      },
      "required": [
        "error",
        "errors"
      ],
      "type": "object",
      "unevaluatedProperties": false
    }
  ]
}

Responsvoorbeeld

JSON
{
  "error": "model must be one of: "
}
13

Fouten

HTTP 402

POST /api/v1/suno/replace_section

Responsschema
JSON
{
  "properties": {
    "error": {
      "description": "Leesbare foutmelding.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "error": "Insufficient balance"
}
14

Fouten

HTTP 429

POST /api/v1/suno/replace_section

Responsschema
JSON
{
  "properties": {
    "error": {
      "description": "Leesbare foutmelding.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "error": "API key credit limit exceeded"
}
15

Fouten

HTTP 409

POST /api/v1/suno/replace_section

Responsschema
JSON
{
  "properties": {
    "error": {
      "description": "Leesbare foutmelding.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "error": "The request uses features that are not supported for the selected model"
}
16

Fouten

HTTP 429

POST /api/v1/suno/replace_section

Responsschema
JSON
{
  "properties": {
    "error": {
      "description": "Leesbare foutmelding.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "error": "Rate limit reached. Please retry later."
}
17

Fouten

HTTP 503

POST /api/v1/suno/replace_section

Responsschema
JSON
{
  "properties": {
    "error": {
      "description": "Leesbare foutmelding.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "error": "Service under maintenance, please try again later"
}
18

Fouten

HTTP 504

POST /api/v1/suno/replace_section

Responsschema
JSON
{
  "properties": {
    "error": {
      "description": "Leesbare foutmelding.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "error": "The request timed out"
}
19

Fouten

HTTP 404

GET /api/v1/suno/replace_section/:id

Responsschema
JSON
{
  "properties": {
    "error": {
      "description": "Leesbare foutmelding.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

Responsvoorbeeld

JSON
{
  "error": "Task with id 'tsk_reference_demo' not found"
}
20

Gegenereerde codevoorbeelden

Gebruik cURL rechtstreeks, of installeer een SDK voor uw taal. Elk voorbeeld dient het gevalideerde verzoek in dat in deze referentie wordt getoond.

Installeren

Shell
pip install runapi-suno
PYTHON
import os
from runapi.suno import SunoClient

client = SunoClient(api_key=os.environ["RUNAPI_API_KEY"])
task = client.replace_section.create(
  upload_url="https://file.runapi.ai/source-audio.mp3",
  model="suno-v5",
  lyrics="New words for this section.",
  tags="acoustic pop",
  title="City Lights",
  infill_start_time=10,
  infill_end_time=20,
  full_lyrics="City lights reflect in the rain. New words for this section."
)