> ## Documentation Index
> Fetch the complete documentation index at: https://developers.phonovation.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Send Campaign

> **Api Endpoint** `https://api.interactsms.com/api/v2`
  
Allows users to specify message content, sender details, and a list of recipients.

Users can schedule campaigns for future delivery and assign a campaign name for tracking purposes, and individual MSISDN tracking.

It supports scalable message distribution, making it ideal for marketing, notifications, and customer engagement.




## OpenAPI

````yaml POST /api/v2/Campaign
openapi: 3.1.2
info:
  title: Phonovation SMS API Suite
  description: >
    This API suite consists of two separate APIs:


    1. **Phonovation Auth API**: Used for authentication via
    `https://auth.interactsms.com`. This API issues JWT tokens for use in
    authenticated API requests.


    2. **Phonovation SMS API**: Provides bulk SMS functionality via
    `https://api.interactsms.com`. Requires authentication via the Auth API.
  version: 2.0.0
  contact:
    name: Phonovation Support
    email: support@phonovation.com
servers:
  - url: https://api.interactsms.com
    description: Phonovation SMS API Server
security: []
tags:
  - name: Authentication
    description: Endpoints related to user authentication and token management.
  - name: API
    description: Phonovation SMS API endpoints.
  - name: Webhooks
    description: Webhook payloads sent by Phonovation to customer-configured endpoints.
paths:
  /api/v2/Campaign:
    post:
      tags:
        - API
      summary: Allows you to send a message campaign to one or more recipients.
      description: >
        **Api Endpoint** `https://api.interactsms.com/api/v2`
          
        Allows users to specify message content, sender details, and a list of
        recipients.


        Users can schedule campaigns for future delivery and assign a campaign
        name for tracking purposes, and individual MSISDN tracking.


        It supports scalable message distribution, making it ideal for
        marketing, notifications, and customer engagement.
      operationId: Campaign
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueueCampaignRequest'
            examples:
              basicCampaign:
                summary: Basic campaign
                description: A simple SMS campaign to be sent immediately.
                value:
                  text: Come check out v2 of our API!!
                  from: Phonovation
                  recipientInfo:
                    - msisdn: 35386xxxxxxx
              basicCampaignMsisdnNotify:
                summary: Basic campaign with Msisdn Notify
                description: >-
                  A simple SMS campaign to be sent immediately, including a
                  unique reference number for the users.
                value:
                  text: Come check out v2 of our API!!
                  from: Phonovation
                  recipientInfo:
                    - msisdn: 35386xxxxxxx
                      notifyId: user-123
                    - msisdn: 35387xxxxxxx
                      notifyId: user-987
              futureCampaign:
                summary: Future campaign
                description: A simple SMS campaign to be sent in the future.
                value:
                  text: Come check out v2 of our API!!
                  from: Phonovation
                  recipientInfo:
                    - msisdn: 35386xxxxxxx
                  sendAt: 2030-03-28T20:00Z
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignResponse'
              examples:
                successResponse:
                  summary: Successful campaign response
                  value:
                    success: true
                    message: Campaign scheduled
                    errors: []
        '400':
          description: Bad Request, usually caused by a malformed or invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignResponse'
              examples:
                badRequestResponse:
                  summary: Invalid campaign payload
                  value:
                    success: false
                    message: Error scheduling campaign
                    errors:
                      - Message text cannot be empty.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignResponse'
              examples:
                unauthorizedResponse:
                  summary: Unauthorized response
                  value:
                    success: false
                    message: Unauthorized
                    errors:
                      - 401 Unauthorized
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignResponse'
              examples:
                unsupportedMediaTypeResponse:
                  summary: Unsupported media type response
                  value:
                    success: false
                    message: Unsupported Media Type
                    errors:
                      - Only application/json is allowed.
      security:
        - OAuth2Password: []
        - BearerAuth: []
      servers:
        - url: https://api.interactsms.com
          description: Phonovation SMS API Server
components:
  schemas:
    QueueCampaignRequest:
      type: object
      required:
        - text
        - from
        - recipientInfo
      properties:
        text:
          type: string
          description: The content of the message.
          maxLength: 2000
        from:
          type: string
          description: >
            The sender identifier (Sender ID) that will appear as the message
            originator.

            This value **must be one of the pre-approved Sender IDs assigned to
            your account**.

            If an unregistered or unauthorized Sender ID is used, the request
            will be rejected.
          maxLength: 20
        recipientInfo:
          type: array
          items:
            $ref: '#/components/schemas/RecipientInfo'
          description: A list of recipient details who will receive this campaign message.
        campaignName:
          type: string
          description: The name of the campaign, used for tracking and reporting.
          default: API Broadcast
          maxLength: 30
        sendAt:
          type: string
          description: >-
            Format: yyyy-MM-ddTHH:mmZ | The scheduled date and time (in UTC)
            when the campaign will be sent.
          format: date-time
    CampaignResponse:
      type: object
      properties:
        success:
          type: boolean
        message:
          type:
            - string
            - 'null'
        errors:
          type:
            - array
            - 'null'
          items:
            type: string
    RecipientInfo:
      type: object
      required:
        - msisdn
      properties:
        msisdn:
          type: string
          description: >
            Recipient's phone number in MSISDN format (353871234567)


            Irish numbers without the international prefix (353) will be
            accepted. eg: (0871234567)


            Accepted Irish MSISDN examples: "353871234567 or 0871234567"


            All international MSISDNs `MUST` have their international prefix.


            Accepted international examples:  

            United Kingdom "44...."  

            France "33..."
          maxLength: 20
        notifyId:
          type: string
          maxLength: 30
  securitySchemes:
    OAuth2Password:
      type: oauth2
      description: >-
        Use the OAuth2 password flow to obtain an access token for the
        Phonovation SMS API.
      flows:
        password:
          tokenUrl: https://auth.interactsms.com/token
          scopes: {}
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        Use the Password grant_type flow to get a JWT access token from
        https://auth.interactsms.com/token. Pass it as a Bearer token in the
        Authorization header to access the API.

````