Sequenzy In App API

In-app messages and content cards created by sequence steps - a contact's feed, engagement events and step stats

Operations 6

GET /in-app/messages List a contact's in-app messages #
POST /in-app/messages/{messageId}/events Record an in-app event #
DELETE /in-app/messages/{messageId} Delete an in-app message #
GET /in-app/templates List in-app templates #
POST /in-app/copy Write in-app copy #
GET /in-app/steps/{stepId}/stats Get in-app step stats #

Specifications

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sequenzy:sequenzy-in-app-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sequenzy-in-app-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Sequenzy In App API
  description: Sequenzy API for managing subscribers, tags, events, sequences, and transactional emails
  version: 1.0.0
servers:
- url: https://api.sequenzy.com/api/v1
  description: Production server
- url: https://api.sequenzy.com/v1
  description: Legacy production server alias
security:
- bearerAuth: []
tags:
- name: In App
  description: In-app messages and content cards created by sequence steps - a contact's feed, engagement events and step stats
paths:
  /in-app/messages:
    get:
      operationId: listInAppMessages
      summary: List a contact's in-app messages
      description: 'Lists a contact''s in-app messages and content cards, created by in_app sequence steps. With status open (default) it returns what the app should show now: messages not yet displayed, clicked or dismissed, and cards not dismissed, excluding expired items, messages first, then pinned cards, then newest. With status all it returns history, newest first. Identify the contact with email, externalId or subscriberId. Requires the subscribers:read scope.'
      tags:
      - In App
      parameters:
      - name: email
        in: query
        schema:
          type: string
        description: Contact email (case-insensitive).
      - name: externalId
        in: query
        schema:
          type: string
        description: Contact external ID.
      - name: subscriberId
        in: query
        schema:
          type: string
      - name: kind
        in: query
        schema:
          type: string
          enum:
          - message
          - card
      - name: status
        in: query
        schema:
          type: string
          enum:
          - open
          - all
          default: open
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
      responses:
        '200':
          description: The contact's items
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  subscriberId:
                    type: string
                  status:
                    type: string
                    enum:
                    - open
                    - all
                  messages:
                    type: array
                    items:
                      $ref: '#/components/schemas/InAppMessage'
        '400':
          description: No contact identifier, or an invalid email
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing subscribers:read scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Contact not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /in-app/messages/{messageId}/events:
    post:
      operationId: recordInAppEvent
      summary: Record an in-app event
      description: Records that the app displayed, clicked, dismissed or read an item. The first report of each type sets its timestamp; repeats change nothing except clickCount, and recorded is false. Clicks, dismissals and reads also mark the item displayed. Messages leave the open feed once displayed, clicked or dismissed; cards once dismissed. Requires the subscribers:write scope.
      tags:
      - In App
      parameters:
      - name: messageId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - type
              properties:
                type:
                  type: string
                  enum:
                  - displayed
                  - clicked
                  - dismissed
                  - read
      responses:
        '200':
          description: Event recorded (or already recorded)
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  recorded:
                    type: boolean
                    description: True when this report set the timestamp; false for a repeat.
                  message:
                    $ref: '#/components/schemas/InAppMessage'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing subscribers:write scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Item not found in this workspace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Unknown event type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /in-app/messages/{messageId}:
    delete:
      operationId: deleteInAppMessage
      summary: Delete an in-app message
      description: Deletes an item so the contact's app stops showing it the next time it fetches the feed. Its engagement no longer counts in step stats. Requires the subscribers:write scope.
      tags:
      - In App
      parameters:
      - name: messageId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Deleted
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  messageId:
                    type: string
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing subscribers:write scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Item not found in this workspace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /in-app/templates:
    get:
      operationId: listInAppTemplates
      summary: List in-app templates
      description: Built-in starting points for in_app sequence steps. Each config is a complete step without a label; link buttons have no url until you add one. Requires the sequences:read scope.
      tags:
      - In App
      responses:
        '200':
          description: Templates
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  templates:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          example: trial-ending
                        name:
                          type: string
                        category:
                          type: string
                          enum:
                          - Conversion
                          - Onboarding
                          - Announcement
                          - Engagement
                        description:
                          type: string
                        config:
                          type: object
                          description: An in_app step config without a label.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing sequences:read scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /in-app/copy:
    post:
      operationId: writeInAppCopy
      summary: Write in-app copy
      description: Writes an in-app message's eyebrow, title, message and button labels with AI from a brief. Nothing is saved. Requires the sequences:write scope; limited to 20 requests a minute per workspace.
      tags:
      - In App
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - brief
              properties:
                brief:
                  type: string
                  minLength: 3
                  maxLength: 1000
                kind:
                  type: string
                  enum:
                  - message
                  - card
                  default: message
                format:
                  type: string
                  enum:
                  - modal
                  - banner
                  - fullscreen
                  default: modal
                hasImage:
                  type: boolean
                  default: false
      responses:
        '200':
          description: Written copy
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  copy:
                    type: object
                    properties:
                      eyebrow:
                        type: string
                      title:
                        type: string
                      body:
                        type: string
                      buttons:
                        type: array
                        items:
                          type: object
                          properties:
                            label:
                              type: string
                            action:
                              type: string
                              enum:
                              - open_url
                              - dismiss
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing sequences:write scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Invalid body, such as a brief shorter than 3 characters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: More than 20 requests a minute for this workspace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: The model failed or returned unusable copy; retry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /in-app/steps/{stepId}/stats:
    get:
      operationId: getInAppStepStats
      summary: Get in-app step stats
      description: Created, displayed, clicked and dismissed counts for one in_app sequence step. Requires the sequences:read scope.
      tags:
      - In App
      parameters:
      - name: stepId
        in: path
        required: true
        schema:
          type: string
        description: The step's node ID from Get Sequence.
      responses:
        '200':
          description: Step stats
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  stepId:
                    type: string
                  sequenceId:
                    type: string
                  stats:
                    type: object
                    properties:
                      created:
                        type: integer
                      displayed:
                        type: integer
                      clicked:
                        type: integer
                      dismissed:
                        type: integer
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Missing sequences:read scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No in-app step with this ID in the workspace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    InAppStyle:
      type: object
      description: Colors, corners and font to draw the item with. Resolved from the step's style preset and overrides against your brand (Email design settings) when the item was created. Colors are
      properties:
        preset:
          type: string
          enum:
          - brand
          - soft
          - bold
          - dark
        backgroundColor:
          type: string
        textColor:
          type: string
          description: Title color.
        mutedTextColor:
          type: string
          description: Body text color.
        buttonColor:
          type: string
          description: Fill of the first link button. Other buttons are outlined in the text color.
        buttonTextColor:
          type: string
        cornerRadius:
          type: integer
          minimum: 0
          maximum: 32
        buttonRadius:
          type: integer
          minimum: 0
          maximum: 40
        fontFamily:
          type: string
          description: CSS font stack from your brand settings.
    InputIssue:
      type: object
      properties:
        path:
          type: string
          description: Dotted field path, such as `audience.subscriberIds[0]`. Empty when the problem is with the request body itself.
          example: kind
        message:
          type: string
          description: What is wrong with the field.
          example: must be "add_tags"
        allowedValues:
          type: array
          description: Accepted values when the field only takes a fixed set of values.
          items: {}
          example:
          - add_tags
      required:
      - path
      - message
    InAppMessage:
      type: object
      description: One item in a contact's in-app feed, with merge tags already resolved.
      properties:
        id:
          type: string
        kind:
          type: string
          enum:
          - message
          - card
          description: 'message: modal, banner or fullscreen, shown once. card: stays in the card feed until dismissed.'
        format:
          type:
          - string
          - 'null'
          enum:
          - modal
          - banner
          - fullscreen
          - null
          description: How a message is shown; null for cards.
        position:
          type:
          - string
          - 'null'
          enum:
          - top
          - bottom
          - center
          - null
          description: 'Banners: top or bottom. Modals: bottom (a sheet rising from the bottom edge) or center. Null for full screens and cards.'
        eyebrow:
          type: string
          description: Short line above the title, such as "3 days left"; empty when the step has none.
        title:
          type: string
        body:
          type: string
          description: Plain text; may contain line breaks.
        imageUrl:
          type:
          - string
          - 'null'
        imagePlacement:
          type:
          - string
          - 'null'
          enum:
          - top
          - background
          - null
          description: 'Modals and full screens with an image: top (image above the text) or background (image fills the message, text on a dark scrim over it). Null otherwise.'
        buttons:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
              action:
                type: string
                enum:
                - open_url
                - dismiss
              url:
                type:
                - string
                - 'null'
                description: https URL or app deep link for open_url buttons; null for dismiss.
        data:
          type: object
          additionalProperties:
            type: string
          description: String key/values set on the step for your app's own logic.
        style:
          $ref: '#/components/schemas/InAppStyle'
        pinned:
          type: boolean
          description: Cards only. Pinned cards sort first.
        sequenceId:
          type:
          - string
          - 'null'
        stepId:
          type:
          - string
          - 'null'
          description: The sequence step (node) that created it.
        createdAt:
          type: string
          format: date-time
        expiresAt:
          type:
          - string
          - 'null'
          format: date-time
          description: After this the item leaves the open feed. Messages default to 30 days; cards never expire unless the step sets it.
        displayedAt:
          type:
          - string
          - 'null'
          format: date-time
        clickedAt:
          type:
          - string
          - 'null'
          format: date-time
        clickCount:
          type: integer
        dismissedAt:
          type:
          - string
          - 'null'
          format: date-time
        readAt:
          type:
          - string
          - 'null'
          format: date-time
    Error:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          example: Error message
        code:
          type: string
          description: Optional stable machine-readable error discriminator when available.
          example: COMPANY_CREATE_REQUIRES_PERSONAL_KEY
        retryable:
          type: boolean
          description: Whether retrying the request can recover from the error.
        issues:
          type: array
          description: Field-level problems with the request, when the endpoint reports them. Up to ten entries; `error` summarizes the first three.
          items:
            $ref: '#/components/schemas/InputIssue'
      required:
      - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key passed as Bearer token