Skip to main content
AudioShake sends a POST request to your webhook URL each time a Task’s Target changes status. The payload is the full Task object, identical to the response from Get Task by ID.

Setup

Configure your webhook URL in the AudioShake Dashboard under Settings > Webhook URL.

When webhooks fire

A webhook is sent each time a Target completes or errors. There is no callback when a Target is first created or begins processing — the first webhook you receive for a given Target will be completed or error.
Webhooks fire per Target, not once per Task. If a Task has three targets, you will receive up to three webhook requests.

Target status reference

StatusMeaningWhat to do
processingTarget is actively being processedNo webhook is sent for this state — wait for completed or error
completedResults are readyDownload files from the output[].link fields
errorProcessing failedCheck the error field for details
Note: other targets in the same Task may still show processing when the webhook fires — this is expected.

Payload

The payload contains the full Task object. Each target includes its current status — some may be completed while others are still processing:
{
  "id": "cmn5h1wv600edx8fgoboeeg06",
  "createdAt": "2026-03-25T03:16:17.442Z",
  "clientId": "cm4lousna0yurbk8ngu31n8bb",
  "assetId": "cmn5gz2s800xp01phe9v3bm5r",
  "targets": [
    {
      "id": "cmn5h1vsn010001pv1cjg2n4t",
      "model": "bass",
      "cost": 4,
      "formats": ["wav"],
      "status": "completed",
      "duration": 200.53,
      "output": [
        {
          "name": "bass",
          "format": "wav",
          "link": "https://cdn.audioshake.ai/..."
        }
      ]
    },
    {
      "id": "cmn5h1vsn00zz01pv6xjn3hxd",
      "model": "drums",
      "formats": ["wav"],
      "status": "processing",
      "output": []
    }
  ]
}

Task-level fields

FieldAlways presentDescription
idYesUnique Task identifier
createdAtYesWhen the Task was created
completedAtNoWhen all targets finished. null while any target is still processing.
clientIdYesYour client identifier
assetIdYes*Asset ID of the input file. Absent if url was used.
urlYes*Input URL. Absent if assetId was used.
costNoTotal credits consumed across all completed targets. Only present once targets complete.
metadataNoOnly present if provided in the original request.

Target fields

FieldAlways presentDescription
idYesUnique target identifier
modelYesModel that was run
statusYesprocessing, completed, or error
formatsYesRequested output formats
outputYesArray of downloadable files. Empty [] while processing.
costNoCredits consumed. Only present when completed.
durationNoAudio duration processed (seconds). Only present when completed.
errorNoError object with code and message. Only present when error.

Output file fields

FieldDescription
nameOutput filename
formatFile format (e.g. wav, json)
linkPresigned download URL (expires after 1 hour)

Delivery

  • Sent as POST with Content-Type: application/json
  • Your endpoint must return a 2xx status code promptly
  • Output download links expire after one hour — re-fetch the Task for fresh links if needed