Regal Reporting Webhooks

Regal publishes 40+ reporting webhook event types covering agent activity, call lifecycle (placed, completed, IVR triggered, wrapup), call recording and transcript availability, AI call analysis, task reservations, SMS lifecycle (queued, sent, received, failed, undelivered, conversation completed), MMS, email, voicemail (recording and transcript availability, completion), contact lifecycle (created, subscribed, unsubscribed, attribute and phone/email edits, experiment assignment), scheduled callbacks and reminders, custom tasks, custom objects, and cancel-all-automated-tasks signals. Each event carries a common envelope (userId, traits, name, eventId, properties, originalTimestamp, eventSource) plus event-specific properties. Webhooks must respond within five seconds or the event is dropped (no retries); endpoint changes take up to five minutes to propagate.

Regal Reporting Webhooks is one of 5 APIs that Regal publishes on the APIs.io network, described by an AsyncAPI event-driven specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Webhooks, Events, Reporting, Streaming, and AsyncAPI. The published artifact set on APIs.io includes API documentation, an AsyncAPI specification, and 1 Naftiko capability spec.

AsyncAPI Specification

regal-reporting-webhooks-asyncapi.yml Raw ↑
asyncapi: 3.0.0
info:
  title: Regal Reporting Webhooks
  version: '1.0'
  description: >-
    Regal Reporting Webhooks deliver 40+ event types covering agent activity,
    call lifecycle, recordings and transcripts, AI analysis, tasks, SMS, MMS,
    email, voicemail, contact lifecycle, scheduling, and custom tasks. Events
    are POSTed to a customer-configured endpoint. There are no automatic
    retries; events are dropped if the endpoint does not respond within 5
    seconds. Endpoint or filter changes take up to 5 minutes to propagate due
    to caching.
  contact:
    name: Regal Support
    email: [email protected]
    url: https://support.regal.ai
servers:
  customer:
    host: customer-configured-host
    protocol: https
    description: Customer-hosted HTTPS endpoint registered in Settings > Integrations.
defaultContentType: application/json
channels:
  agent.activity.updated:
    address: /
    messages:
      AgentActivityUpdated:
        $ref: '#/components/messages/AgentActivityUpdated'
  task.created:
    address: /
    messages:
      TaskCreated:
        $ref: '#/components/messages/TaskCreated'
  task.canceled:
    address: /
    messages:
      TaskCanceled:
        $ref: '#/components/messages/TaskCanceled'
  task.reservation.accepted:
    address: /
    messages:
      TaskReservationAccepted:
        $ref: '#/components/messages/TaskReservationAccepted'
  task.reservation.created:
    address: /
    messages:
      TaskReservationCreated:
        $ref: '#/components/messages/TaskReservationCreated'
  call.placed:
    address: /
    messages:
      CallPlaced:
        $ref: '#/components/messages/CallEvent'
  call.completed:
    address: /
    messages:
      CallCompleted:
        $ref: '#/components/messages/CallEvent'
  call.ivr.triggered:
    address: /
    messages:
      CallIvrTriggered:
        $ref: '#/components/messages/CallEvent'
  call.wrapup:
    address: /
    messages:
      CallWrapup:
        $ref: '#/components/messages/CallEvent'
  call.recording.available:
    address: /
    messages:
      CallRecordingAvailable:
        $ref: '#/components/messages/RecordingEvent'
  call.transcript.available:
    address: /
    messages:
      CallTranscriptAvailable:
        $ref: '#/components/messages/TranscriptEvent'
  call.analysis.available:
    address: /
    messages:
      CallAnalysisAvailable:
        $ref: '#/components/messages/AnalysisEvent'
  sms.queued:
    address: /
    messages:
      SmsQueued:
        $ref: '#/components/messages/SmsEvent'
  sms.sent:
    address: /
    messages:
      SmsSent:
        $ref: '#/components/messages/SmsEvent'
  sms.received:
    address: /
    messages:
      SmsReceived:
        $ref: '#/components/messages/SmsEvent'
  sms.failed:
    address: /
    messages:
      SmsFailed:
        $ref: '#/components/messages/SmsEvent'
  sms.undelivered:
    address: /
    messages:
      SmsUndelivered:
        $ref: '#/components/messages/SmsEvent'
  sms.conversation.completed:
    address: /
    messages:
      SmsConversationCompleted:
        $ref: '#/components/messages/SmsEvent'
  mms.sent:
    address: /
    messages:
      MmsSent:
        $ref: '#/components/messages/MmsEvent'
  mms.received:
    address: /
    messages:
      MmsReceived:
        $ref: '#/components/messages/MmsEvent'
  email.sent:
    address: /
    messages:
      EmailSent:
        $ref: '#/components/messages/EmailEvent'
  email.received:
    address: /
    messages:
      EmailReceived:
        $ref: '#/components/messages/EmailEvent'
  email.conversation.completed:
    address: /
    messages:
      EmailConversationCompleted:
        $ref: '#/components/messages/EmailEvent'
  voicemail.recording.available:
    address: /
    messages:
      VoicemailRecordingAvailable:
        $ref: '#/components/messages/RecordingEvent'
  voicemail.transcript.available:
    address: /
    messages:
      VoicemailTranscriptAvailable:
        $ref: '#/components/messages/TranscriptEvent'
  voicemail.completed:
    address: /
    messages:
      VoicemailCompleted:
        $ref: '#/components/messages/CallEvent'
  contact.created:
    address: /
    messages:
      ContactCreated:
        $ref: '#/components/messages/ContactEvent'
  contact.subscribed:
    address: /
    messages:
      ContactSubscribed:
        $ref: '#/components/messages/ContactEvent'
  contact.unsubscribed:
    address: /
    messages:
      ContactUnsubscribed:
        $ref: '#/components/messages/ContactEvent'
  contact.attribute.edited:
    address: /
    messages:
      ContactAttributeEdited:
        $ref: '#/components/messages/ContactEvent'
  contact.phone.created:
    address: /
    messages:
      ContactPhoneCreated:
        $ref: '#/components/messages/ContactEvent'
  contact.email.created:
    address: /
    messages:
      ContactEmailCreated:
        $ref: '#/components/messages/ContactEvent'
  contact.experiment.assigned:
    address: /
    messages:
      ContactExperimentAssigned:
        $ref: '#/components/messages/ContactEvent'
  scheduled.callback.requested:
    address: /
    messages:
      ScheduledCallbackRequested:
        $ref: '#/components/messages/ScheduleEvent'
  scheduled.reminder.created:
    address: /
    messages:
      ScheduledReminderCreated:
        $ref: '#/components/messages/ScheduleEvent'
  custom.task.completed:
    address: /
    messages:
      CustomTaskCompleted:
        $ref: '#/components/messages/TaskEvent'
  contacted.after.hours:
    address: /
    messages:
      ContactedAfterHours:
        $ref: '#/components/messages/CallEvent'
  object.created:
    address: /
    messages:
      ObjectCreated:
        $ref: '#/components/messages/CustomObjectEvent'
  object.attribute.edited:
    address: /
    messages:
      ObjectAttributeEdited:
        $ref: '#/components/messages/CustomObjectEvent'
  cancel.all.automated.tasks:
    address: /
    messages:
      CancelAllAutomatedTasks:
        $ref: '#/components/messages/TaskEvent'
operations:
  receiveAllWebhookEvents:
    action: receive
    channel:
      $ref: '#/channels/call.completed'
    summary: Receive all Regal reporting webhook events on a customer-hosted endpoint.
components:
  messages:
    BaseEnvelope:
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    AgentActivityUpdated:
      payload:
        $ref: '#/components/schemas/AgentActivityPayload'
    TaskCreated:
      payload:
        $ref: '#/components/schemas/TaskPayload'
    TaskCanceled:
      payload:
        $ref: '#/components/schemas/TaskPayload'
    TaskReservationAccepted:
      payload:
        $ref: '#/components/schemas/TaskPayload'
    TaskReservationCreated:
      payload:
        $ref: '#/components/schemas/TaskPayload'
    CallEvent:
      payload:
        $ref: '#/components/schemas/CallPayload'
    RecordingEvent:
      payload:
        $ref: '#/components/schemas/RecordingPayload'
    TranscriptEvent:
      payload:
        $ref: '#/components/schemas/TranscriptPayload'
    AnalysisEvent:
      payload:
        $ref: '#/components/schemas/AnalysisPayload'
    SmsEvent:
      payload:
        $ref: '#/components/schemas/SmsPayload'
    MmsEvent:
      payload:
        $ref: '#/components/schemas/SmsPayload'
    EmailEvent:
      payload:
        $ref: '#/components/schemas/EmailPayload'
    ContactEvent:
      payload:
        $ref: '#/components/schemas/ContactPayload'
    ScheduleEvent:
      payload:
        $ref: '#/components/schemas/SchedulePayload'
    TaskEvent:
      payload:
        $ref: '#/components/schemas/TaskPayload'
    CustomObjectEvent:
      payload:
        $ref: '#/components/schemas/CustomObjectPayload'
  schemas:
    EventEnvelope:
      type: object
      required:
        - name
        - eventId
      properties:
        userId:
          type: string
        traits:
          type: object
          additionalProperties: true
        name:
          type: string
        eventId:
          type: string
        properties:
          type: object
          additionalProperties: true
        originalTimestamp:
          type: string
        eventSource:
          type: string
    AgentActivityPayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                agent_id:
                  type: string
                agent_email:
                  type: string
                agent_fullname:
                  type: string
                activity:
                  type: string
                timestamp:
                  type: string
    CallPayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                call_id:
                  type: string
                task_id:
                  type: string
                channel:
                  type: string
                direction:
                  type: string
                  enum:
                    - INBOUND
                    - OUTBOUND
                disposition:
                  type: string
                campaign_id:
                  type: string
                campaign_friendly_id:
                  type: string
                campaign_name:
                  type: string
                journey_uuid:
                  type: string
                journey_name:
                  type: string
                journey_friendly_id:
                  type: string
                started_at:
                  type: string
                ended_at:
                  type: string
                talk_time:
                  type: integer
                wrapup_time:
                  type: integer
                contact_phone:
                  type: string
                contact_email:
                  type: string
                agent_id:
                  type: string
                agent_email:
                  type: string
                notes:
                  type: string
                objections:
                  type: array
                  items:
                    type: string
    RecordingPayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                call_id:
                  type: string
                recording_url:
                  type: string
                  format: uri
                duration:
                  type: integer
    TranscriptPayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                call_id:
                  type: string
                transcript_url:
                  type: string
                  format: uri
                language:
                  type: string
    AnalysisPayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                call_id:
                  type: string
                analysis:
                  type: object
                  additionalProperties: true
    SmsPayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                message_id:
                  type: string
                content:
                  type: string
                media_url:
                  type: string
                  format: uri
                channel:
                  type: string
                direction:
                  type: string
                campaign_id:
                  type: string
                contact_phone:
                  type: string
    EmailPayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                message_id:
                  type: string
                subject:
                  type: string
                contact_email:
                  type: string
                direction:
                  type: string
    ContactPayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                contact_id:
                  type: string
                contact_phone:
                  type: string
                contact_email:
                  type: string
                attribute:
                  type: string
                value:
                  type: string
    SchedulePayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                contact_id:
                  type: string
                scheduled_for:
                  type: string
                callback_phone:
                  type: string
                reminder_channel:
                  type: string
    TaskPayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                task_id:
                  type: string
                type:
                  type: string
                disposition:
                  type: string
                agent_id:
                  type: string
    CustomObjectPayload:
      allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        - type: object
          properties:
            properties:
              type: object
              properties:
                object_type:
                  type: string
                object_id:
                  type: string
                attribute:
                  type: string
                value:
                  type: string