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

# Notification preference matrix (type × channel)



## OpenAPI

````yaml /openapi/v3.yaml get /api/v2/notification-preferences
openapi: 3.1.0
info:
  title: Semicola Exchange API
  version: 3.0.0-preview
  description: >-
    Platform endpoints of Semicola: sign-in and accounts, members and keys,
    billing, notifications, the Semi assistant (chat stream, confirmations,
    conversations), the MCP App widget host and realtime feeds. Typed agent
    tools live on the MCP server at /mcp/v3.
servers:
  - url: https://api.semicola.com
security:
  - bearerAuth: []
  - sessionCookie: []
tags:
  - name: Auth
  - name: Accounts
  - name: Billing
  - name: Notifications
  - name: Assistant
  - name: Widget host
  - name: Realtime
  - name: Demo
paths:
  /api/v2/notification-preferences:
    get:
      tags:
        - Notifications
      summary: Notification preference matrix (type × channel)
      operationId: getNotificationPreferences
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    anyOf:
                      - type: array
                        items:
                          type: object
                          properties:
                            notificationType:
                              type: string
                              enum:
                                - campaign.healthy
                                - campaign.unhealthy
                                - campaign.created
                                - campaign.updated
                                - campaign.deleted
                                - campaign.completed
                                - creative.approved
                                - creative.rejected
                                - creative.changes_requested
                                - creative.sync_started
                                - creative.sync_completed
                                - creative.sync_failed
                                - creative.review_requested
                                - media_buy.created
                                - media_buy.updated
                                - media_buy.deleted
                                - media_buy.forward_failed
                                - media_buy.awaiting_source_moderation
                                - media_buy.source_rejected
                                - media_buy.stuck
                                - media_buy.approval_requested
                                - media_buy_update_proposal.approved
                                - media_buy_update_proposal.rejected
                                - media_buy_update_proposal.expired
                                - optimization.suggestion_received
                                - optimization.approved
                                - optimization.rejected
                                - optimization.applied
                                - optimization.failed
                                - salesagent.available
                                - salesagent.unavailable
                                - salesagent.registered
                                - salesagent.unregistered
                                - salesagent.updated
                                - salesagent.sync_action_required
                                - audience.synced
                                - audience.sync_failed
                                - storefront.composition_paused
                                - storefront.products_not_traffickable
                                - storefront.supply_nudge
                                - storefront.liveness_degraded
                                - storefront.liveness_recovered
                                - storefront.media_buy_forward_failed
                                - storefront.media_buy_moderation_aging
                                - inventory_source.unhealthy
                                - inventory_source.recovered
                                - assistant_room.mentioned
                                - ask.resolved
                            channel:
                              type: string
                              enum:
                                - email
                                - in_app
                            enabled:
                              type: boolean
                            locked:
                              type: boolean
                          required:
                            - notificationType
                            - channel
                            - enabled
                            - locked
                          additionalProperties: false
                      - type: 'null'
                  error:
                    anyOf:
                      - type: object
                        properties:
                          code:
                            type: string
                          message:
                            type: string
                          field:
                            type: string
                          details: {}
                        required:
                          - code
                          - message
                        additionalProperties: false
                      - type: 'null'
                  meta:
                    type: object
                    properties:
                      pagination:
                        anyOf:
                          - type: object
                            properties:
                              skip:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                              take:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                              total:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                              hasMore:
                                type: boolean
                            required:
                              - skip
                              - take
                              - total
                              - hasMore
                            additionalProperties: false
                          - type: object
                            properties:
                              nextCursor:
                                type:
                                  - string
                                  - 'null'
                              hasMore:
                                type: boolean
                            required:
                              - nextCursor
                              - hasMore
                            additionalProperties: false
                          - type: object
                            properties:
                              limit:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                              offset:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                              nextOffset:
                                anyOf:
                                  - type: integer
                                    minimum: -9007199254740991
                                    maximum: 9007199254740991
                                  - type: 'null'
                            required:
                              - limit
                              - offset
                              - nextOffset
                            additionalProperties: false
                    additionalProperties: false
                required:
                  - data
                  - error
                additionalProperties: false
        default:
          description: >-
            Error envelope `{data: null, error: {code, message, field?,
            details?}}`.
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or OAuth access token.
    sessionCookie:
      type: apiKey
      in: cookie
      name: sc_session

````