Skip to content

Suno Voice Validation Phrase Callback ​

System will call this callback when Suno Voice validation phrase generation is complete.

When you submit a validation phrase generation task to the Suno Voice API, you can use the callBackUrl parameter to set a callback URL. The system will automatically push the validation phrase result to your specified address when the task is completed.

Callback Mechanism Overview ​

Webhook Security

To ensure the authenticity and integrity of callback requests, we strongly recommend implementing webhook signature verification. See our Webhook Verification Guide for detailed implementation steps.

Callback Timing ​

The system will send callback notifications in the following situations:

  • Validation phrase generated successfully
  • Validation phrase generation failed
  • Errors occurred during validation phrase processing

Callback Method ​

  • HTTP Method: POST
  • Content Type: application/json
  • Timeout Setting: 15 seconds

Callback Request Format ​

When the validation phrase task is completed, the system will send a POST request to your callBackUrl in the following format:

Success Callback ​

json
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "xxx_task_id_xxx",
    "validateInfo": "Harmonies fill the air with joyful melodies tonight",
    "status": "wait_validating"
  }
}

Failure Callback ​

json
{
  "code": 500,
  "msg": "Internal Error, Please try again later.",
  "data": {
    "taskId": "xxx_task_id_xxx",
    "status": "processing_validate_fail",
    "errorCode": 500,
    "errorMessage": "Failed to generate validation phrase"
  }
}

Status Code Description ​

code (integer, required) ​

Callback status code indicating task processing result:

Status CodeDescription
200Success - Validation phrase has been generated successfully
500Failed - Validation phrase generation failed or internal processing error occurred

msg (string, required) ​

Status message providing detailed status description.

data.taskId (string, required) ​

Task ID, consistent with the taskId returned when you submitted the validation phrase task.

data.validateInfo (string) ​

Validation phrase text. Returned when the validation phrase is generated successfully.

data.status (string) ​

Current task status.

StatusDescription
wait_processingWaiting for validation phrase processing
processing_validateValidation phrase is being generated
processing_validate_failValidation phrase generation failed
wait_validatingValidation phrase is ready and waiting for user verification
successTask completed successfully
failTask failed

data.errorCode (integer) ​

Error code. Usually null when the task succeeds.

data.errorMessage (string) ​

Detailed error message. Usually empty when the task succeeds.

Callback Reception Examples ​

Here are example codes for receiving callbacks in popular programming languages:

Node.js ​

javascript
const express = require('express');
const app = express();

app.use(express.json());

app.post('/suno-voice-validate-callback', (req, res) => {
  const { code, msg, data } = req.body;

  console.log('Received Suno Voice validation phrase callback:', {
    taskId: data.taskId,
    status: data.status,
    message: msg
  });

  if (code === 200 && data.status === 'wait_validating') {
    console.log('Validation phrase is ready');
    console.log(`Validation phrase: ${data.validateInfo}`);
  } else {
    console.log('Validation phrase generation failed:', data.errorMessage || msg);
  }

  res.status(200).json({ status: 'received' });
});

app.listen(3000, () => {
  console.log('Callback server running on port 3000');
});

Python ​

python
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/suno-voice-validate-callback', methods=['POST'])
def handle_callback():
    payload = request.json
    code = payload.get('code')
    msg = payload.get('msg')
    data = payload.get('data', {})

    task_id = data.get('taskId')
    status = data.get('status')
    validate_info = data.get('validateInfo')
    error_message = data.get('errorMessage')

    print(f"Received Suno Voice validation phrase callback: {task_id}, status: {status}")

    if code == 200 and status == 'wait_validating':
        print("Validation phrase is ready")
        print(f"Validation phrase: {validate_info}")
    else:
        print(f"Validation phrase generation failed: {error_message or msg}")

    return jsonify({'status': 'received'}), 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=3000)

PHP ​

php
<?php
header('Content-Type: application/json');

$input = file_get_contents('php://input');
$payload = json_decode($input, true);

$code = $payload['code'] ?? null;
$msg = $payload['msg'] ?? '';
$data = $payload['data'] ?? [];

$taskId = $data['taskId'] ?? '';
$status = $data['status'] ?? '';
$validateInfo = $data['validateInfo'] ?? '';
$errorMessage = $data['errorMessage'] ?? '';

error_log("Received Suno Voice validation phrase callback: $taskId, status: $status");

if ($code === 200 && $status === 'wait_validating') {
    error_log("Validation phrase is ready: $validateInfo");
} else {
    error_log("Validation phrase generation failed: " . ($errorMessage ?: $msg));
}

http_response_code(200);
echo json_encode(['status' => 'received']);
?>

Best Practices ​

Callback URL Configuration Recommendations

  1. Use HTTPS: Ensure your callback URL uses HTTPS protocol for secure data transmission
  2. Verify Source: Verify the legitimacy of the request source in callback processing
  3. Idempotent Processing: The same taskId may receive multiple callbacks, ensure processing logic is idempotent
  4. Quick Response: Callback processing should return a 200 status code as quickly as possible to avoid timeout
  5. Asynchronous Processing: Complex business logic should be processed asynchronously to avoid blocking callback response
  6. Persist validateInfo: Save the validation phrase together with taskId so users can read the correct phrase

Important Reminders

  • Callback URL must be a publicly accessible address
  • Server must respond within 15 seconds, otherwise it will be considered a timeout
  • If 3 consecutive retries fail, the system will stop sending callbacks
  • Please ensure the stability of callback processing logic to avoid callback failures due to exceptions
  • The validation phrase should be shown to the user before submitting verification audio

Troubleshooting ​

If you do not receive callback notifications, please check the following:

Network Connection Issues
  • Confirm that the callback URL is accessible from the public network
  • Check firewall settings to ensure inbound requests are not blocked
  • Verify that domain name resolution is correct
Server Response Issues
  • Ensure the server returns HTTP 200 status code within 15 seconds
  • Check server logs for error messages
  • Verify that the interface path and HTTP method are correct
Content Format Issues
  • Confirm that the received POST request body is in JSON format
  • Check that Content-Type is application/json
  • Verify that JSON parsing is correct

ModelFold — one API for all the best AI models.