Knock website screenshot

Knock

Knock is notifications infrastructure as a service — a product and customer messaging platform you use to power transactional, lifecycle, broadcast, and in-product messaging across email, SMS, push, in-app, in-app guides, chat (Slack / Discord / Teams / WhatsApp), and outbound webhooks. Knock exposes two REST surfaces — a runtime API (api.knock.app) for triggering workflows and managing recipients/messages, and a Management API (control.knock.app) for resource CRUD — together with official SDKs in Node, Python, Ruby, Go, Elixir, Java, .NET, PHP and mobile (Swift, Kotlin, Flutter, React Native, Expo); a CLI; a remote MCP server; an agent toolkit for OpenAI / AI SDK / Langchain / Mastra; outbound webhooks; AI agent workflow steps; SlackKit and TeamsKit; and a git-style environment / branch / commit model for safe promotion of notification resources.

14 APIs 31 Features
NotificationsMessagingInfrastructureWorkflowsCross-ChannelEmailSMSPushIn-AppChatSlackWebhooksMCPAI AgentsDeveloper Platform

APIs

Knock Workflows API

Trigger and cancel notification workflows and inspect workflow recipient runs. Workflows are Knock's core programmable model — orchestrating channel steps (email, SMS, push, in-...

Knock Users API

Identify, list, update, delete, and merge users plus manage their channel data, preferences, in-app feeds, guides, subscriptions, messages, and schedules. The primary recipient ...

Knock Messages API

Read, list, and update Knock messages — the per-recipient delivery records produced by workflow runs. Includes activity, delivery log, and event timelines plus mark-as-seen/read...

Knock Objects API

Create and manage non-user Objects in Knock and their channel data, preferences, subscriptions, and messages. Objects model accounts, projects, devices, or any non-human notific...

Knock Tenants API

Manage Tenants — the top-level accounts or workspaces in your product. Tenants power tenant-scoped branding, preferences, and message-targeting.

Knock Schedules API

Create, list, update, and delete workflow Schedules. Schedules fire workflows at one-off or recurring times for specific recipients with timezone and repeat-rule support.

Knock Audiences API

Manage static Audiences and their members. Audiences power lifecycle messaging — when a user joins an audience, configured workflows fire automatically.

Knock Channels API

Inspect channels and run bulk message-status updates scoped to a channel. Channels represent configured provider integrations (Resend, SendGrid, Twilio, APNS, Slack, etc.).

Knock Providers API

OAuth provider endpoints supporting SlackKit, MS Teams Kit, and other inbound provider integrations — authorize, revoke, and inspect connections to chat providers on behalf of u...

Knock Integrations API

Inspect integrations configured for the current environment. Used by SlackKit and TeamsKit clients to discover the destinations available for a recipient.

Knock Bulk Operations API

Track and inspect long-running bulk operations. Many Knock endpoints (bulk identify users, bulk delete, bulk channel-status updates) return a bulk-operation handle; this surface...

Knock Notify API

Internal notify endpoints used by the Knock event-driven trigger surface. Used to send notifications when workflows fire from source events, schedules, audiences, or programmati...

Knock Management API (mAPI)

Knock Management API (mAPI) — the resource-management surface at control.knock.app. Programmatic CRUD over Workflows, Channels, Email Layouts, Partials, Templates, Translations,...

Knock Outbound Webhooks

Outbound webhooks fire message lifecycle (sent, delivered, seen, read, interacted, archived, link_clicked, bounced, undelivered) and environment-change (workflow / email_layout ...

Collections

Knock Users API

POSTMAN

Arazzo Workflows

Knock Bulk Identify Users and Notify

Bulk identify a batch of users, wait for the operation to complete, then notify them.

ARAZZO

Knock Bulk Set Objects and Notify

Bulk upsert objects in a collection, wait for completion, then notify one object.

ARAZZO

Knock Bulk Set Tenants and Verify

Bulk upsert tenants, wait for the operation to complete, then list tenants to verify.

ARAZZO

Knock Cancellable Workflow Trigger

Identify a recipient, trigger a cancellable workflow, then cancel it by key.

ARAZZO

Knock Identify User, Set Preferences, and Trigger Workflow

Identify a recipient, apply their notification preferences, then trigger a workflow for them.

ARAZZO

Knock Merge Users and Re-notify

Identify a surviving user, merge a duplicate into it, then notify the merged user.

ARAZZO

Knock Set Object Preferences and Audit Messages

Upsert an object, set its preference set, then audit messages sent to it.

ARAZZO

Knock Set Object, Add Subscriptions, and Notify

Create an object, subscribe recipients to it, then notify subscribers via a workflow.

ARAZZO

Knock Register Push Token and Read Feed

Identify a user, register their channel data, then read their in-app feed.

ARAZZO

Knock Schedule a Recurring Workflow

Identify a recipient, create a recurring schedule, then verify it was registered.

ARAZZO

Knock Tenant Onboarding and Notify

Set a tenant, identify a member user, then notify them scoped to the tenant.

ARAZZO

Knock Trigger Then Archive Feed Message

Trigger a workflow, find the resulting in-app message, then archive it.

ARAZZO

Knock Trigger Workflow and Inspect Message Content

Trigger a workflow then locate the generated message and read its rendered content.

ARAZZO

Knock Trigger Workflow and Track Recipient Run

Trigger a workflow and poll its per-recipient run until it completes.

ARAZZO

GraphQL

Knock GraphQL Schema

title: Knock GraphQL Schema

GRAPHQL

Pricing Plans

Knock Plans Pricing

3 plans

PLANS

Rate Limits

Knock Rate Limits

0 limits

RATE LIMITS

FinOps

Knock Finops

FINOPS

Features

Cross-channel notification workflows — email, SMS, push, in-app, in-app guides, chat (Slack/Discord/Teams/WhatsApp), and outbound webhooks from one trigger
Workflow function steps — batch, delay, branch, experiment, throttle, fetch (HTTP), AI agent, trigger-workflow, update-user / update-tenant / update-object / update-data / update-audience
Drag-and-drop workflow builder used collaboratively by engineering, product, and growth
Broadcasts — one-time messages to audience-targeted groups from the Knock dashboard
Guides — in-app lifecycle messaging using your own components and design system
Recipients model — Users, non-user Objects, and Tenants with channel data and properties
Preferences — per-channel, per-workflow, per-category preference sets enforced automatically on every run and broadcast
Audiences — static and dynamic user segments that automatically drive lifecycle workflow triggers
Schedules — one-off and recurring (timezone-aware) workflow firing
Subscriptions — many-to-many fan-out from Objects to recipient lists
Conditions — dynamic control flow on trigger data, recipient properties, and prior step status
Templates — drag-and-drop editor + Liquid; partials, branding, translations (i18n), email layouts
Real-time in-app feed API plus pre-built React, JavaScript, iOS, Android, Flutter, React Native, Expo, and Vue/Nuxt SDKs
Outbound webhook events for full message lifecycle and environment change tracking
Customer-facing webhook channel (let your customers configure their own webhook destinations)
Idempotent requests via Idempotency-Key
Cursor-based pagination
Tiered per-endpoint rate limits (1, 5, 60, 200, 1000 req/sec) scoped per environment or per signed user
Enhanced security mode with signed user tokens (JWT)
Environments + Branches + Commits — git-style resource workflow with promotion across dev/staging/prod
Knock CLI for local-first resource management against the Management API
Knock MCP server (remote) at mcp.knock.app/mcp — OAuth 2.1 + PKCE; tool groups for resources, commits, debug, data, and docs
Knock Agent Toolkit — AI SDK, OpenAI function-calling, Langchain, Mastra, and local MCP server bindings
AI agent function step inside workflows for prompt-driven enrichment and personalization
Knock skills — procedural knowledge packages for AI agents working with Knock
SlackKit and TeamsKit — drop-in OAuth + channel-data UX for connecting customer Slack/Teams workspaces
Data warehouse / Segment / Datadog observability streams
Source events — trigger workflows from CDPs (Segment, Rudderstack) or reverse-ETL (Hightouch, Census)
Multi-tenancy with per-tenant branding and locked preferences (Enterprise)
SAML 2.0 SSO, SCIM directory sync, HIPAA / BAA on Enterprise
Official SDKs in Node, Python, Ruby, Go, Elixir, Java, .NET, PHP, plus mobile (Swift, Kotlin, Flutter, React Native, Expo) and Management-API SDKs (Node, Python, Go)

Event Specifications

Knock Outbound Webhooks

Knock fires outbound webhook events for message lifecycle (sent, delivered, seen, read, interacted, archived, link_clicked, bounced, undelivered) and for environment changes (wo...

ASYNCAPI

Semantic Vocabularies

Knock App Context

0 classes · 11 properties

JSON-LD

API Governance Rules

Knock API Rules

8 rules · 3 errors 3 warnings 2 info

SPECTRAL

Example Payloads

Knock Identify User Example

2 fields

EXAMPLE

Resources

🔗
PostmanWorkspace
PostmanWorkspace
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🌐
Portal
Portal
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
🚀
GettingStarted
GettingStarted
📝
Signup
Signup
🔑
Authentication
Authentication
🔗
RateLimits
RateLimits
🔗
RateLimits
RateLimits
🔗
Idempotency
Idempotency
🔗
Pagination
Pagination
💻
ErrorCodes
ErrorCodes
💻
ErrorCodes
ErrorCodes
🟢
StatusPage
StatusPage
📄
ChangeLog
ChangeLog
💰
Pricing
Pricing
📜
TermsOfService
TermsOfService
📜
PrivacyPolicy
PrivacyPolicy
🔗
TrustCenter
TrustCenter
📰
Blog
Blog
👥
GitHubOrganization
GitHubOrganization
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
🔧
Tools
Tools
💻
CodeExamples
CodeExamples
💻
CodeExamples
CodeExamples
💻
CodeExamples
CodeExamples
💻
CodeExamples
CodeExamples
💻
CodeExamples
CodeExamples
💻
CodeExamples
CodeExamples
💻
CodeExamples
CodeExamples
🔗
Plugins
Plugins
🔗
Webhooks
Webhooks
🔗
Webhooks
Webhooks
🔗
AsyncAPI
AsyncAPI
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
🔗
JSONLD
JSONLD
🔗
Vocabulary
Vocabulary
🔗
SpectralRules
SpectralRules
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🔗
Forums
Forums

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Knock Workflows API
  version: '1.0'
request:
  auth:
    type: bearer
    token: '{{bearerToken}}'
items:
- info:
    name: Workflows
    type: folder
  items:
  - info:
      name: Trigger workflow
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/workflows/:key/trigger
      params:
      - name: key
        value: ''
        type: path
        description: Key of the workflow to trigger.
      body:
        type: json
        data: '{}'
    docs: Trigger a workflow (specified by the key) to run for the given recipients, using the parameters provided. Returns
      an identifier for the workflow run request. All workflow runs are executed asynchronously. This endpoint also handles
      [inline identifications](/managing-recipients/identifying-recipients#inline-identifying-recipients) for the `actor`,
      `recipient`, and `tenant` fields.
  - info:
      name: Cancel workflow
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/workflows/:key/cancel
      params:
      - name: key
        value: ''
        type: path
        description: The key of the workflow to cancel.
      body:
        type: json
        data: '{}'
    docs: When invoked for a workflow using a specific workflow key and cancellation key, will cancel any queued workflow
      runs associated with that key/cancellation key pair. Can optionally be provided one or more recipients to scope the
      request to.
- info:
    name: Workflow recipient runs
    type: folder
  items:
  - info:
      name: Get a workflow recipient run
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/workflow_recipient_runs/:id
      params:
      - name: id
        value: ''
        type: path
        description: The unique identifier for the workflow recipient run (per-recipient).
    docs: Returns a single workflow recipient run with its associated events.
  - info:
      name: List workflow recipient runs
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/workflow_recipient_runs
      params:
      - name: after
        value: ''
        type: query
        description: The cursor to fetch entries after.
      - name: before
        value: ''
        type: query
        description: The cursor to fetch entries before.
      - name: page_size
        value: ''
        type: query
        description: The number of items per page (defaults to 50).
      - name: workflow
        value: ''
        type: query
        description: Limits the results to workflow recipient runs for the given workflow key.
      - name: status[]
        value: ''
        type: query
        description: Limits the results to workflow recipient runs with the given status.
      - name: tenant
        value: ''
        type: query
        description: Limits the results to workflow recipient runs for the given tenant.
      - name: has_errors
        value: ''
        type: query
        description: Limits the results to workflow recipient runs that have errors.
      - name: recipient
        value: ''
        type: query
        description: Limits the results to workflow recipient runs for the given recipient. Accepts a user ID string or an
          object reference with `id` and `collection`.
      - name: starting_at
        value: '2025-01-01T00:00:00Z'
        type: query
        description: Limits the results to workflow recipient runs started after the given date.
      - name: ending_at
        value: '2025-01-01T00:00:00Z'
        type: query
        description: Limits the results to workflow recipient runs started before the given date.
    docs: Returns a paginated list of workflow recipient runs for the current environment.
bundled: true