---
title: "Preview Notification Presentation"
method: POST
path: "/api/notifications/presentation-preview"
tags: ["notifications"]
---

# Preview Notification Presentation

`POST /api/notifications/presentation-preview`

## Request

- Base URL: `https://platform.verbiflow.com/api/bridge`
- URL: `https://platform.verbiflow.com/api/bridge/api/notifications/presentation-preview`
- Auth: one of:
  - HTTP bearer and API key in header `x-flage-org-id`
  - HTTP bearer and API key in header `x-flage-org-slug`

## Request body

- NotificationPresentationPreviewRequest: Exact input for rendering an instant or digest notification preview.
  - `delivery_mode` union: Immediate delivery or one exact preview digest window.
    - NotificationPreviewInstantDelivery: Immediate preview delivery with no digest window.
      - `kind` 'instant', required
    - NotificationPreviewDigestDelivery: Digest preview delivery for one exact time window and display timezone.
      - `interval` 'hourly' | 'daily', required: Cadence label displayed for the previewed digest window.
      - `kind` 'digest', required
      - `timezone` string, required: IANA timezone used to label the digest window.
      - `window_end` string, date-time, required: Exclusive offset-aware ISO-8601 timestamp.
      - `window_start` string, date-time, required: Inclusive offset-aware ISO-8601 timestamp.
  - `digest_context` NotificationPreviewDigestContext: Digest header and exact recipient-partition context.
    - `recipient_slack_user_ids` string[]: Exact Slack recipients represented by this digest partition.
    - `rule_name` string, required: Rule name shown in the digest preview header.
    - `total_documents` integer, nullable: Total documents in the complete digest, including previewed documents.
  - `documents` NotificationPresentationDocumentInput[], required: One instant Presentation or one to eight documents in a digest preview.
    - `key` string, required: Portable stable identity within one Presentation document.
    - `root` NotificationPresentationMessageInput, required: One root or thread message rendered by the notification transport.
      - `actions` NotificationPresentationOpenUrlAction[]: Optional ordered URL actions shown with the message.
        - `key` string, required: Portable stable identity within one Presentation document.
        - `kind` 'open_url', required: Selects an action that opens an HTTPS URL.
        - `label` string, required: Visible action label.
        - `url` string, required: Absolute HTTPS URL without user information.
      - `blocks` union[], required: Ordered typed content blocks rendered in this message.
        - union: One typed content block inside a Presentation message.
          - NotificationPresentationMarkdownBlock: Slack-compatible Markdown with an optional visible heading.
            - `heading` string, nullable: Optional visible block heading.
            - `key` string, required: Portable stable identity within one Presentation document.
            - `kind` 'markdown', required: Selects a Slack-compatible Markdown content block.
            - `text` string, required: Slack-compatible Markdown.
          - NotificationPresentationFieldsBlock: Compact label and value fields with an optional heading.
            - `heading` string, nullable: Optional visible block heading.
            - `items` NotificationPresentationField[], required: One to ten compact label and value fields.
              - …
            - `key` string, required: Portable stable identity within one Presentation document.
            - `kind` 'fields', required: Selects compact label and value fields.
          - NotificationPresentationMetricsBlock: Prominent metrics with optional per-metric detail.
            - `heading` string, nullable: Optional visible block heading.
            - `items` NotificationPresentationMetric[], required: One to eight prominent metric values.
              - …
            - `key` string, required: Portable stable identity within one Presentation document.
            - `kind` 'metrics', required: Selects prominent metric values.
          - NotificationPresentationTableBlock: Compact table with ordered columns and aligned string cells.
            - `columns` string[], required: Ordered visible column labels.
            - `heading` string, nullable: Optional visible block heading.
            - `key` string, required: Portable stable identity within one Presentation document.
            - `kind` 'table', required: Selects a compact table content block.
            - `rows` array[], required: Rows whose cell counts must equal the column count.
              - …
          - NotificationPresentationLinksBlock: List of labeled HTTPS links with an optional heading.
            - `heading` string, nullable: Optional visible block heading.
            - `key` string, required: Portable stable identity within one Presentation document.
            - `kind` 'links', required: Selects a list of labeled HTTPS links.
            - `links` NotificationPresentationLink[], required: One to eight labeled HTTPS links.
              - …
          - NotificationPresentationImageBlock: Public HTTPS image with required accessible alternative text.
            - `alt` string, required: Accessible image description.
            - `heading` string, nullable: Optional visible block heading.
            - `key` string, required: Portable stable identity within one Presentation document.
            - `kind` 'image', required: Selects a public HTTPS image content block.
            - `url` string, required: Absolute HTTPS URL without user information.
          - NotificationPresentationMentionsBlock: Slack mentions resolved from all delivery recipients or named audiences.
            - `audiences` string[]: Audience-group keys to mention; empty selects all recipients.
            - `key` string, required: Portable stable identity within one Presentation document.
            - `kind` 'mentions', required: Selects Slack recipient mentions.
            - `source` 'delivery_recipients': Resolve mentions from preview delivery recipients.
            - `text` string, nullable: Optional visible text placed before the resolved Slack mentions.
          - NotificationPresentationDividerBlock: Visual divider separating adjacent message content.
            - `key` string, required: Portable stable identity within one Presentation document.
            - `kind` 'divider', required: Selects a visual divider content block.
      - `key` string, required: Portable stable identity within one Presentation document.
      - `summary` string, nullable: Optional visible summary below the title.
      - `title` string, required: Visible message title.
    - `thread` union[]: Ordered post, update, upload, and reaction operations after the root.
      - union: One ordered thread operation whose target is the root or an earlier post key.
        - NotificationPresentationPostOperationInput: Post one new keyed message into the root message thread.
          - `key` string, required: Portable stable identity within one Presentation document.
          - `kind` 'post', required: Selects a new thread-message operation.
          - `message` NotificationPresentationMessageInput, required: One root or thread message rendered by the notification transport.
            - `actions` NotificationPresentationOpenUrlAction[]: Optional ordered URL actions shown with the message.
              - …
            - `blocks` union[], required: Ordered typed content blocks rendered in this message.
              - …
            - `key` string, required: Portable stable identity within one Presentation document.
            - `summary` string, nullable: Optional visible summary below the title.
            - `title` string, required: Visible message title.
        - NotificationPresentationUpdateOperationInput: Replace the root or one earlier keyed thread message.
          - `key` string, required: Portable stable identity within one Presentation document.
          - `kind` 'update', required: Selects a message replacement operation.
          - `message` NotificationPresentationMessageInput, required: One root or thread message rendered by the notification transport.
            - `actions` NotificationPresentationOpenUrlAction[]: Optional ordered URL actions shown with the message.
              - …
            - `blocks` union[], required: Ordered typed content blocks rendered in this message.
              - …
            - `key` string, required: Portable stable identity within one Presentation document.
            - `summary` string, nullable: Optional visible summary below the title.
            - `title` string, required: Visible message title.
          - `target` string, required: Root or earlier message key to update.
        - NotificationPresentationUploadOutputOperation: Attach one durable output to a root or thread reply.
          - `key` string, required: Portable stable identity within one Presentation document.
          - `kind` 'upload_output', required: Selects a durable-output upload operation.
          - `label` string, nullable: Optional visible label for the uploaded output.
          - `output_id` string, required: Durable output identifier to upload.
          - `placement` 'root' | 'reply', nullable: Optional explicit root-message or thread-reply upload placement.
          - `target` string, required: Root or earlier message key that owns the uploaded output.
        - NotificationPresentationReactOperation: Add one named Slack emoji reaction to a message.
          - `emoji` string, required: Slack emoji name without surrounding colons.
          - `key` string, required: Portable stable identity within one Presentation document.
          - `kind` 'react', required: Selects an add-reaction operation.
          - `target` string, required: Root or earlier message key to react to.
        - NotificationPresentationUnreactOperation: Remove one named Slack emoji reaction from a message.
          - `emoji` string, required: Slack emoji name without surrounding colons.
          - `key` string, required: Portable stable identity within one Presentation document.
          - `kind` 'unreact', required: Selects a remove-reaction operation.
          - `target` string, required: Root or earlier message key to remove the reaction from.
    - `version` '1': Portable Presentation document contract version.
  - `recipient_context` NotificationPreviewRecipientContext: Resolved preview recipients and optional audience/label indexes.
    - `slack_user_ids` string[]: Exact Slack users mentioned across the complete presentation.
    - `slack_user_ids_by_audience` object: Audience keys mapped to members of slack_user_ids.
    - `slack_user_labels_by_id` object: Slack recipient ids mapped to visible labels.

## Response `200`

Successful Response

- NotificationPresentationPreviewReceipt
  - `artifact_id` string, required
  - `artifact_url` string, required
  - `document_digest` string, required
  - `filename` string, required
  - `image_url` string, required
  - `media_type` string, required
  - `preview_render_fingerprint` string, nullable, required
  - `receipt_id` string, required
  - `renderer_digest` string, required
  - `renderer_identity_digest` string, required
  - `renderer_platform` string, required
  - `sha256` string, required
  - `size_bytes` integer, required
  - `slack_payload_digest` string, required
  - `slack_payload_fingerprint` string, required
  - `snapshot_digest` string, required
  - `topology` NotificationPreviewTopology, required: Counts of message operations in a rendered notification preview.
    - `posts` integer, required: Number of new thread messages rendered.
    - `reactions` integer, required: Number of add-reaction and remove-reaction operations rendered.
    - `root_messages` integer, required: Number of root messages rendered.
    - `thread_operations` integer, required: Total ordered operations rendered after the root message.
    - `updates` integer, required: Number of message replacements rendered.
    - `uploads` integer, required: Number of durable output uploads rendered.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract.md) - [All operations](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract/llms.txt) - [OpenAPI document](https://skmtc.dev/verbiflow/apis/verbiflow-sdk-http-contract/revisions/c80e903ef8f3?raw)
