Cellulant Tingg Engage API

Tingg Engage — single global entry point for transactional alerts. Queue OTP, transactional, and standard SMS with templated parameters and receive per-message delivery callbacks.

Cellulant Tingg Engage API is one of 3 APIs that Cellulant 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.

Tagged areas include SMS, OTP, Notifications, Engagement, and Africa. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, sample payloads, and 1 Naftiko capability spec.

OpenAPI Specification

cellulant-engage-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Cellulant Tingg Engage API
  description: |
    Tingg Engage — single global entry point for transactional alerts.
    Send SMS (OTP, transactional, standard) to customers with templated
    parameters and delivery status callbacks.
  version: "2.0.0"
  contact:
    name: Cellulant Developer Support
    url: https://developer.tingg.africa
    email: [email protected]
servers:
  - url: https://api.tingg.africa
    description: Production
  - url: https://api-test.tingg.africa
    description: Sandbox
security:
  - BearerAuth: []
tags:
  - name: Engagement
    description: Outbound SMS notifications and OTPs.
paths:
  /api/v2/engagement:
    post:
      summary: Send Engagement Message
      description: Queue an SMS notification (OTP, transactional, or standard). Delivery status is reported via callback to the supplied callbackUrl.
      operationId: sendEngagement
      tags:
        - Engagement
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EngagementRequest'
            examples:
              SmsEngagementExample:
                $ref: '#/components/examples/SmsEngagementExample'
      responses:
        '200':
          description: Message queued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngagementResponse'
              examples:
                EngagementResponseExample:
                  $ref: '#/components/examples/EngagementResponseExample'
        '4XX':
          $ref: '#/components/responses/ErrorResponse'
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  responses:
    ErrorResponse:
      description: Error response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    EngagementRequest:
      type: object
      required: [notificationType, channels, referenceID, smsDto]
      properties:
        notificationType:
          type: string
          enum: [OTP, TRX, STANDARD, SMS_TEST]
        channels:
          type: array
          items:
            type: string
            enum: [SMS]
        referenceID:
          type: string
        callbackUrl:
          type: string
          format: uri
        smsDto:
          $ref: '#/components/schemas/SmsDto'
    SmsDto:
      type: object
      required: [msisdn, message]
      properties:
        msisdn:
          type: array
          items:
            type: string
          description: One or more recipient phone numbers in E.164 format.
        message:
          type: string
          description: Message body; supports `${placeholder}` substitution.
        params:
          type: object
          additionalProperties:
            type: string
        senderID:
          type: string
    EngagementResponse:
      type: object
      properties:
        transactionID:
          type: string
          format: uuid
        statusCode:
          type: integer
          example: 200
        message:
          type: string
    Error:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          type: string
  examples:
    SmsEngagementExample:
      summary: Send a templated OTP
      value:
        notificationType: OTP
        channels: [SMS]
        referenceID: ref-cas-123
        callbackUrl: https://merchant.example.co.ke/sms/callback
        smsDto:
          msisdn: ['254712345678']
          message: 'Your Tingg OTP is ${code}. Valid for 5 minutes.'
          params:
            code: '648291'
          senderID: TINGG
    EngagementResponseExample:
      summary: Message queued
      value:
        transactionID: 8f6b2c80-43f7-4f78-b1d2-7a3a5d6c1e0a
        statusCode: 200
        message: Message queued successfully.