Regal · AsyncAPI Specification

Regal Reporting Webhooks

Version 1.0

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.

View Spec View on GitHub AIAI AgentsVoice AIContact CenterOutbound CallingInbound CallingPhone AgentsSMSChatWebRTCConversation IntelligenceJourney OrchestrationBranded Caller IDCCaaSCPaaSSales DialerCustomer EngagementAsyncAPIWebhooksEvents

Channels

agent.activity.updated
task.created
task.canceled
task.reservation.accepted
task.reservation.created
call.placed
call.completed
call.ivr.triggered
call.wrapup
call.recording.available
call.transcript.available
call.analysis.available
sms.queued
sms.sent
sms.received
sms.failed
sms.undelivered
sms.conversation.completed
mms.sent
mms.received
email.sent
email.received
email.conversation.completed
voicemail.recording.available
voicemail.transcript.available
voicemail.completed
contact.created
contact.subscribed
contact.unsubscribed
contact.attribute.edited
contact.phone.created
contact.email.created
contact.experiment.assigned
scheduled.callback.requested
scheduled.reminder.created
custom.task.completed
contacted.after.hours
object.created
object.attribute.edited
cancel.all.automated.tasks

Messages

BaseEnvelope
BaseEnvelope
AgentActivityUpdated
AgentActivityUpdated
TaskCreated
TaskCreated
TaskCanceled
TaskCanceled
TaskReservationAccepted
TaskReservationAccepted
TaskReservationCreated
TaskReservationCreated
CallEvent
CallEvent
RecordingEvent
RecordingEvent
TranscriptEvent
TranscriptEvent
AnalysisEvent
AnalysisEvent
SmsEvent
SmsEvent
MmsEvent
MmsEvent
EmailEvent
EmailEvent
ContactEvent
ContactEvent
ScheduleEvent
ScheduleEvent
TaskEvent
TaskEvent
CustomObjectEvent
CustomObjectEvent

Servers

https
customer
Customer-hosted HTTPS endpoint registered in Settings > Integrations.

AsyncAPI Specification

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