NotificationAPI Send API

Send and retract notifications across channels.

OpenAPI Specification

notificationapi-send-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: NotificationAPI REST In-App Inbox Send API
  description: NotificationAPI is notifications infrastructure for developers. A single REST API sends multi-channel notifications - email, SMS, mobile push, web push, in-app inbox, automated voice call, and Slack - manages user identities, enforces per-user notification preferences and opt-outs, schedules and retracts notifications, and exposes delivery logs. All endpoints are scoped to your account via the clientId path segment and authenticated with HTTP Basic auth using clientId:clientSecret.
  termsOfService: https://www.notificationapi.com/terms
  contact:
    name: NotificationAPI Support
    email: support@notificationapi.com
    url: https://docs.notificationapi.com
  version: '2.8'
servers:
- url: https://api.notificationapi.com/{clientId}
  description: US region
  variables:
    clientId:
      default: your_client_id
      description: Your NotificationAPI account clientId.
- url: https://api.eu.notificationapi.com/{clientId}
  description: EU region
  variables:
    clientId:
      default: your_client_id
      description: Your NotificationAPI account clientId.
- url: https://api.ca.notificationapi.com/{clientId}
  description: Canada region
  variables:
    clientId:
      default: your_client_id
      description: Your NotificationAPI account clientId.
security:
- basicAuth: []
tags:
- name: Send
  description: Send and retract notifications across channels.
paths:
  /sender:
    post:
      operationId: send
      tags:
      - Send
      summary: Send a notification
      description: Sends a notification to the specified user across the channels configured for the notification type. Supply an ISO 8601 `schedule` value to schedule the notification for future delivery instead of sending immediately.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendRequest'
            example:
              type: order_shipped
              to:
                id: user_123
                email: jane@example.com
                number: '+15005550006'
              parameters:
                orderNumber: '1043'
                trackingUrl: https://example.com/track/1043
      responses:
        '200':
          description: Notification accepted for delivery.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SendResponse'
        '202':
          description: Accepted with a warning (e.g., missing channel identifier).
        '401':
          description: Missing or invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /sender/retract:
    post:
      operationId: retract
      tags:
      - Send
      summary: Retract a notification
      description: Un-sends or deletes previously sent notifications for a user - for example an in-app notification that is no longer valid.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetractRequest'
            example:
              notificationId: order_shipped
              userId: user_123
      responses:
        '200':
          description: Notification retracted.
        '401':
          description: Missing or invalid credentials.
components:
  schemas:
    SendRequest:
      type: object
      description: A request to send (or schedule) a notification. `type` names the notification configured in your dashboard; `to` is the recipient; `parameters` are merged into the templates.
      properties:
        type:
          type: string
          description: The notification type to send (formerly notificationId).
        to:
          $ref: '#/components/schemas/User'
        parameters:
          type: object
          additionalProperties: true
          description: Values merged into the notification templates (formerly mergeTags).
        forceChannels:
          type: array
          items:
            $ref: '#/components/schemas/Channel'
          description: Override the channels used for this notification.
        templateId:
          type: string
          description: Force a specific template instead of the channel default.
        subNotificationId:
          type: string
          description: Target a subcategory within the notification.
        schedule:
          type: string
          format: date-time
          description: ISO 8601 datetime to schedule delivery, e.g. 2026-08-01T14:38:03.509Z.
        email:
          type: object
          description: Inline email content overrides.
          properties:
            subject:
              type: string
            html:
              type: string
            previewText:
              type: string
            senderName:
              type: string
            senderEmail:
              type: string
        sms:
          type: object
          properties:
            message:
              type: string
        call:
          type: object
          properties:
            message:
              type: string
        inapp:
          type: object
          properties:
            title:
              type: string
            url:
              type: string
            image:
              type: string
        web_push:
          type: object
          properties:
            title:
              type: string
            message:
              type: string
            icon:
              type: string
            url:
              type: string
        mobile_push:
          type: object
          properties:
            title:
              type: string
            message:
              type: string
        options:
          type: object
          description: Per-channel delivery options such as email reply-to, cc/bcc, fromName/fromAddress, attachments, and push priority.
    RetractRequest:
      type: object
      required:
      - notificationId
      - userId
      properties:
        notificationId:
          type: string
          description: The notification to retract.
        userId:
          type: string
          description: The user the notification was sent to.
        subNotificationId:
          type: string
          description: Optional subcategory scope.
    PushToken:
      type: object
      required:
      - type
      - token
      - device
      properties:
        type:
          type: string
          enum:
          - FCM
          - APN
          description: The push provider the token belongs to.
        token:
          type: string
          description: The full push token string.
        device:
          type: object
          properties:
            device_id:
              type: string
            platform:
              type: string
            app_id:
              type: string
    Channel:
      type: string
      enum:
      - EMAIL
      - INAPP_WEB
      - SMS
      - CALL
      - PUSH
      - WEB_PUSH
    User:
      type: object
      description: A user you notify.
      required:
      - id
      properties:
        id:
          type: string
          description: The ID of the user in your system.
        email:
          type: string
          description: Required for email notifications, otherwise optional.
        number:
          type: string
          description: E.164 phone number for SMS/CALL, e.g. +15005550006. Common US/Canada formats are also accepted.
        timezone:
          type: string
          description: The user's IANA timezone, e.g. America/New_York.
        slackChannel:
          type: string
          description: Destination Slack channel, channel ID, or user ID for Slack notifications.
        pushTokens:
          type: array
          description: Mobile push tokens (APN/FCM), one per device.
          items:
            $ref: '#/components/schemas/PushToken'
        webPushTokens:
          type: array
          description: Web push subscription tokens, one per browser.
          items:
            type: object
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        message:
          type: string
        error:
          type: string
    SendResponse:
      type: object
      properties:
        trackingId:
          type: string
          description: Identifier for this send, usable to retract, schedule, or query logs.
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic authentication. For account-level calls the username is your clientId and the password is your clientSecret. Per-user calls (identify user, in-app inbox, delete preferences) use `base64(clientId:userId:hmac)` where hmac is HMAC-SHA256(userId) keyed with the clientSecret.