Regal Messages API

The Messages API at POST https://api.regal.ai/v1/messages/send delivers outbound SMS messages tied to a Regal SMS campaign. The body requires a to recipient object, a channel value of "sms", and either a campaignId (which supplies default from-number and content) or an explicit from object and content object. Unknown destination numbers are automatically resolved to new contact profiles. Returns 202 Accepted for queued messages and is rate limited to 10 requests per second.

Regal Messages API is one of 5 APIs that Regal publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

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

Tagged areas include SMS, Messaging, Outbound, and Campaigns. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 1 Naftiko capability spec, and 1 JSON Schema.

OpenAPI Specification

regal-messages-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Regal Messages API
  version: '1.0'
  summary: Send outbound SMS messages tied to Regal campaigns.
  description: >-
    The Messages API delivers outbound SMS messages tied to a Regal SMS
    campaign. Either a campaignId (which supplies default from-number and
    content) must be provided, or an explicit from object and content object
    must accompany the to recipient. Unknown destination phone numbers are
    automatically resolved to new contact profiles. Returns 202 Accepted for
    queued messages and is rate limited to 10 requests per second.
  contact:
    name: Regal Support
    email: [email protected]
    url: https://support.regal.ai
  license:
    name: Proprietary
    url: https://www.regal.ai/terms-of-service
servers:
  - url: https://api.regal.ai/v1
    description: Production v1 Regal API
security:
  - ApiKeyAuth: []
tags:
  - name: Messages
paths:
  /messages/send:
    post:
      summary: Send Message
      operationId: sendMessage
      description: Queue an outbound SMS message for delivery.
      tags:
        - Messages
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendMessageRequest'
            examples:
              campaignDriven:
                summary: Send via campaign defaults
                value:
                  channel: sms
                  campaignId: 12345
                  to:
                    phoneNumber: '+15551234567'
              explicit:
                summary: Explicit from + content
                value:
                  channel: sms
                  to:
                    phoneNumber: '+15551234567'
                  from:
                    phoneNumber: '+18005550100'
                  content:
                    body: 'Hi Jane, this is Regal confirming your appointment.'
      responses:
        '202':
          description: Accepted (queued for delivery).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendMessageResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
  schemas:
    SendMessageRequest:
      type: object
      required:
        - to
        - channel
      properties:
        to:
          $ref: '#/components/schemas/Recipient'
        from:
          $ref: '#/components/schemas/Sender'
        channel:
          type: string
          enum:
            - sms
        content:
          $ref: '#/components/schemas/MessageContent'
        campaignId:
          type: integer
          format: int32
          description: Campaign ID for attribution and defaults. Required if from/content omitted.
    Recipient:
      type: object
      required:
        - phoneNumber
      properties:
        phoneNumber:
          type: string
        contactId:
          type: string
    Sender:
      type: object
      properties:
        phoneNumber:
          type: string
    MessageContent:
      type: object
      properties:
        body:
          type: string
        mediaUrl:
          type: string
          format: uri
    SendMessageResponse:
      type: object
      properties:
        messageId:
          type: string
        status:
          type: string
          examples:
            - queued
    Error:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
  responses:
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate Limit Exceeded (10 RPS)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'