PyannoteAI · AsyncAPI Specification

Pyannoteai Webhooks

Version

View Spec View on GitHub CompanyAi DataSpeech RecognitionSpeaker DiarizationAudioVoice AIMachine-LearningTranscriptionStreamingWebhookAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-17'
method: searched
source: https://docs.pyannote.ai/webhooks/receiving-webhooks
docs:
  receiving: https://docs.pyannote.ai/webhooks/receiving-webhooks
  verifying: https://docs.pyannote.ai/webhooks/verifying-webhooks
surface: outbound HTTP callback on asynchronous job completion
subscription:
  mechanism: per-job
  note: >-
    There is no webhook endpoint registry or subscription API. The callback URL is supplied per job, in
    the "webhook" field of the POST /v1/diarize, /v1/identify or /v1/voiceprint request body. A team
    cannot register a single endpoint once and receive all events.
  transport_requirement: HTTPS only — plain HTTP URLs are rejected.
  options:
  - name: webhookStatusOnly
    type: boolean
    default: false
    effect: >-
      When true, the payload contains only jobId and status; the output field is omitted. Intended for
      large payloads.
delivery:
  method: POST
  content_type: application/json
  fires_on:
  - succeeded
  - failed
  - canceled
  does_not_fire_on:
  - pending
  - created
  - running
  note: Only terminal job statuses trigger a callback.
events:
- event: job.succeeded
  trigger: A diarization, identification or voiceprint job completed successfully.
  payload_fields:
  - jobId
  - status
  - output
  output_schemas:
  - job_type: diarize
    schema: DiarizationJobOutput
    docs: https://docs.pyannote.ai/api-reference/schemas/diarizationschema
  - job_type: identify
    schema: IdentificationJobOutput
    docs: https://docs.pyannote.ai/api-reference/schemas/identifyschema
  - job_type: voiceprint
    schema: VoiceprintJobResults
    docs: https://docs.pyannote.ai/api-reference/schemas/voiceprintschema
  example:
    jobId: job_id
    status: succeeded
    output:
      diarization:
      - start: 0.0
        end: 1.0
        speaker: speaker_1
- event: job.failed
  trigger: The job terminated in failure.
  payload_fields:
  - jobId
  - status
  note: No output field is present. Failed jobs are not billed.
- event: job.canceled
  trigger: The job was canceled.
  payload_fields:
  - jobId
  - status
  note: No output field is present. Canceled jobs are not billed.
security:
  signature_header: X-Signature
  timestamp_header: X-Request-Timestamp
  algorithm: HMAC-SHA256
  signed_content: 'v0:{timestamp}:{body}'
  secret_location: dashboard Webhooks page (per team, rotatable)
  note: >-
    The docs prose describes X-Signature as base64-encoded, but the Python sample in the same page
    returns hexdigest() and compares it directly to the header. Confirm the encoding against a live
    delivery before shipping a verifier.
retries:
  attempts: 3
  schedule:
  - immediate
  - +1 minute
  - +5 minutes
  attempt_header: x-retry-num
  reason_header: x-retry-reason
  failure_reasons:
  - http_timeout
  - too_many_redirects
  - connection_failed
  - ssl_error
  - http_error
  - unknown_error
  receiver_timeout: 10 seconds
  max_redirects: 2
asyncapi_document:
  present: true
  file: asyncapi/pyannoteai-streaming-asyncapi.yml
  covers: streaming WebSocket gateway only
  note: >-
    pyannoteAI publishes a real AsyncAPI 3.0.0 document, but it describes the real-time WebSocket
    streaming gateway (POST /v1/live), NOT this webhook surface. The webhook catalog above is captured
    from the docs because no AsyncAPI models it.