Knock website screenshot

Knock

Knock is a notification infrastructure platform with workflows, channels (email, SMS, push, in-app), preferences, and digests. Stripe-style API for sending and orchestrating multi-channel notifications.

8 APIs 0 Features
NotificationsEmailSMSPushWorkflows

APIs

Knock Workflows API

Trigger and orchestrate notification workflows with batch, throttle and delay logic.

Knock Messages API

Manage individual messages with delivery and engagement tracking.

Knock Users API

Identify users, manage preferences, channel data, subscriptions and schedules.

Knock Objects API

Non-user resources that receive notifications or have subscribers.

Knock Feeds API

In-app message feeds with pagination and filtering for client rendering.

Knock Guides API

Step-by-step in-app guided experiences.

Knock Schedules API

Recurring and one-time workflow triggers per recipient.

Knock Preferences API

User and object preferences by channel, category, or workflow.

Collections

Knock API

OPEN

Pricing Plans

Knock Plans Pricing

1 plans

PLANS

Rate Limits

Knock Rate Limits

1 limits

RATE LIMITS

FinOps

Knock Finops

FINOPS

Event Specifications

Knock Real-Time In-App Feed (Phoenix Channels)

AsyncAPI specification for Knock's real-time in-app notification feed transport. Knock exposes a Phoenix Channels WebSocket that pushes feed updates to subscribed clients. The c...

ASYNCAPI

Resources

👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
🔗
LlmsText
LlmsText

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Knock API
  version: '1.0'
request:
  auth:
    type: bearer
    token: '{{bearerToken}}'
items:
- info:
    name: Objects
    type: folder
  items:
  - info:
      name: Update workflows in preference set
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/objects/:collection/:object_id/preferences/:id/workflows
    docs: Updates the workflow preferences for an object's preference set.
  - info:
      name: Update a channel type preference
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/objects/:collection/:object_id/preferences/:id/channel_types/:type
    docs: Updates a specific channel type preference for an object's preference set.
  - info:
      name: Bulk delete objects
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/objects/:collection/bulk/delete
      params:
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      body:
        type: json
        data: '{}'
    docs: Bulk deletes objects from the specified collection.
  - info:
      name: Update a category preference
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/objects/:collection/:object_id/preferences/:id/categories/:key
    docs: Updates a specific category preference for an object's preference set. Deprecated.
  - info:
      name: List preference sets
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/objects/:collection/:object_id/preferences
      params:
      - name: object_id
        value: ''
        type: path
        description: Unique identifier for the object.
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
    docs: Returns a paginated list of preference sets for the specified object.
  - info:
      name: Update a workflow preference
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/objects/:collection/:object_id/preferences/:id/workflows/:key
    docs: Updates a specific workflow preference for an object's preference set.
  - info:
      name: Bulk add subscriptions
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/objects/:collection/bulk/subscriptions/add
      params:
      - name: collection
        value: projects
        type: path
        description: The collection this object belongs to.
      body:
        type: json
        data: '{}'
    docs: Add subscriptions for all objects in a single collection. If a subscription for an object in the collection already
      exists, it will be updated. This endpoint also handles [inline identifications](/managing-recipients/identifying-recipients#inline-identifying-recipients)
      for the `recipient` field.
  - info:
      name: Update categories in preference set
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/objects/:collection/:object_id/preferences/:id/categories
    docs: Updates the category preferences for an object's preference set.
  - info:
      name: Get an object
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/objects/:collection/:id
      params:
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      - name: id
        value: ''
        type: path
        description: Unique identifier for the object.
    docs: Retrieves a specific object by its ID from the specified collection. Returns the object with all its properties.
  - info:
      name: Set an object
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/objects/:collection/:id
      params:
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      - name: id
        value: ''
        type: path
        description: Unique identifier for the object.
      body:
        type: json
        data: '{}'
    docs: Creates a new object or updates an existing one in the specified collection. This operation is used to identify
      objects with their properties, as well as optional preferences and channel data.
  - info:
      name: Delete an object
      type: http
    http:
      method: DELETE
      url: https://api.knock.app/v1/objects/:collection/:id
      params:
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      - name: id
        value: ''
        type: path
        description: Unique identifier for the object.
    docs: Permanently removes an object from the specified collection. This operation cannot be undone.
  - info:
      name: List objects in a collection
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/objects/:collection
      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: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      - name: include[]
        value: ''
        type: query
        description: Includes preferences of the objects in the response.
    docs: Returns a paginated list of objects from the specified collection. Optionally includes preference data for the objects.
  - info:
      name: Update channel types in preference set
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/objects/:collection/:object_id/preferences/:id/channel_types
    docs: Updates the channel type preferences for an object's preference set.
  - info:
      name: Create schedules in bulk
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/schedules/bulk/create
      body:
        type: json
        data: '{}'
    docs: Bulk creates up to 1,000 schedules at a time. This endpoint also handles [inline identifications](/managing-recipients/identifying-recipients#inline-identifying-recipients)
      for the `actor`, `recipient`, and `tenant` fields.
  - info:
      name: Bulk delete subscriptions
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/objects/:collection/bulk/subscriptions/delete
      params:
      - name: collection
        value: projects
        type: path
        description: The collection this object belongs to.
      body:
        type: json
        data: '{}'
    docs: Delete subscriptions for many objects in a single collection type. If a subscription for an object in the collection
      doesn't exist, it will be skipped.
  - info:
      name: Get object preference set
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/objects/:collection/:object_id/preferences/:id
      params:
      - name: object_id
        value: ''
        type: path
        description: Unique identifier for the object.
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      - name: id
        value: ''
        type: path
        description: Unique identifier for the preference set.
    docs: Returns the preference set for the specified object and preference set `id`.
  - info:
      name: Update a preference set
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/objects/:collection/:object_id/preferences/:id
      params:
      - name: object_id
        value: ''
        type: path
        description: Unique identifier for the object.
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      - name: id
        value: ''
        type: path
        description: Unique identifier for the preference set.
      body:
        type: json
        data: '{}'
    docs: 'Sets preferences within the given preference set. By default, this is a destructive operation and will replace
      any existing preferences with the preferences given. Use ''__persistence_strategy'': ''merge'' to merge with existing
      preferences instead. If no object exists in the current environment for the given `:collection` and `:object_id`, Knock
      will create the object as part of this request. The preference set `:id` can be either `default` or a `tenant.id`. Learn
      more about [per-tenant preferences'
  - info:
      name: Delete object preference set
      type: http
    http:
      method: DELETE
      url: https://api.knock.app/v1/objects/:collection/:object_id/preferences/:id
      params:
      - name: object_id
        value: ''
        type: path
        description: Unique identifier for the object.
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      - name: id
        value: ''
        type: path
        description: Unique identifier for the preference set.
    docs: Unsets the preference set for the object, removing it entirely.
  - info:
      name: Bulk set objects
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/objects/:collection/bulk/set
      params:
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      body:
        type: json
        data: '{}'
    docs: Bulk sets up to 1,000 objects at a time in the specified collection.
- info:
    name: Guides
    type: folder
  items:
  - info:
      name: Mark guide as seen
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/guides/messages/seen
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      body:
        type: json
        data: '{}'
    docs: Records that a guide has been seen by a user, triggering any associated seen events.
  - info:
      name: Mark guide as seen
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/guides/messages/:message_id/seen
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      body:
        type: json
        data: '{}'
    docs: Records that a guide has been seen by a user, triggering any associated seen events.
  - info:
      name: Mark guide as archived
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/guides/messages/archived
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      body:
        type: json
        data: '{}'
    docs: Records that a guide has been archived by a user, triggering any associated archived events.
  - info:
      name: Mark guide as unarchived
      type: http
    http:
      method: DELETE
      url: https://api.knock.app/v1/users/:user_id/guides/messages/archived
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      body:
        type: json
        data: '{}'
    docs: Records that a guide has been unarchived, triggering any associated unarchived events.
  - info:
      name: Mark guide as interacted
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/guides/messages/interacted
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      body:
        type: json
        data: '{}'
    docs: Records that a user has interacted with a guide, triggering any associated interacted events.
  - info:
      name: Reset guide engagement
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/guides/engagements/reset
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      body:
        type: json
        data: '{}'
    docs: Resets the engagement state of a guide for a user, removing the guide's engagement log entry so the next interaction
      creates a fresh engagement.
  - info:
      name: List guides
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/users/:user_id/guides/:channel_id
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      - name: channel_id
        value: ''
        type: path
        description: The unique identifier for the channel.
      - name: tenant
        value: ''
        type: query
        description: The tenant ID to use for targeting and rendering guides.
      - name: data
        value: ''
        type: query
        description: The data (JSON encoded object) to use for targeting and rendering guides.
      - name: type
        value: ''
        type: query
        description: The type of guides to filter by.
    docs: Returns a list of eligible in-app guides for a specific user and channel.
  - info:
      name: Mark guide as interacted
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/guides/messages/:message_id/interacted
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      body:
        type: json
        data: '{}'
    docs: Records that a user has interacted with a guide, triggering any associated interacted events.
  - info:
      name: Mark guide as archived
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/guides/messages/:message_id/archived
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      body:
        type: json
        data: '{}'
    docs: Records that a guide has been archived by a user, triggering any associated archived events.
- info:
    name: Tenants
    type: folder
  items:
  - info:
      name: Get a tenant
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/tenants/:id
      params:
      - name: id
        value: ''
        type: path
        description: The unique identifier for the tenant.
      - name: resolve_full_preference_settings
        value: ''
        type: query
        description: When true, merges environment-level default preferences into the tenant's `settings.preference_set` field
          before returning the response. Defaults to false.
    docs: Get a tenant by ID.
  - info:
      name: Set a tenant
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/tenants/:id
      params:
      - name: id
        value: ''
        type: path
        description: The unique identifier for the tenant.
      - name: resolve_full_preference_settings
        value: ''
        type: query
        description: When true, merges environment-level default preferences into the tenant's `settings.preference_set` field
          before returning the response. Defaults to false.
      body:
        type: json
        data: '{}'
    docs: Sets a tenant within an environment, performing an upsert operation. Any existing properties will be merged with
      the incoming properties.
  - info:
      name: Delete a tenant
      type: http
    http:
      method: DELETE
      url: https://api.knock.app/v1/tenants/:id
      params:
      - name: id
        value: ''
        type: path
        description: The unique identifier for the tenant.
    docs: Delete a tenant and all associated data. This operation cannot be undone.
  - info:
      name: List tenants
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/tenants
      params:
      - name: tenant_id
        value: ''
        type: query
        description: Filter tenants by ID.
      - name: name
        value: ''
        type: query
        description: Filter tenants by name.
      - 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).
    docs: List tenants for the current environment.
  - info:
      name: Bulk delete tenants
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/tenants/bulk/delete
      params:
      - name: tenant_ids[]
        value: ''
        type: query
        description: The IDs of the tenants to delete.
    docs: Delete up to 1,000 tenants at a time in a single operation. This operation cannot be undone.
  - info:
      name: Bulk set tenants
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/tenants/bulk/set
      body:
        type: json
        data: '{}'
    docs: Set or update up to 1,000 tenants in a single operation.
- info:
    name: Feeds
    type: folder
  items:
  - info:
      name: List feed items
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/users/:user_id/feeds/:id
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      - name: id
        value: ''
        type: path
        description: The unique identifier for the channel.
      - name: status
        value: unread
        type: query
        description: The status of the feed items.
      - name: source
        value: my_source
        type: query
        description: The workflow key associated with the message in the feed.
      - name: tenant
        value: my_tenant
        type: query
        description: The tenant associated with the feed items.
      - name: has_tenant
        value: 'true'
        type: query
        description: Whether the feed items have a tenant.
      - name: workflow_categories[]
        value: my_workflow_category
        type: query
        description: The workflow categories of the feed items.
      - name: archived
        value: exclude
        type: query
        description: The archived status of the feed items.
      - name: trigger_data
        value: '{ "key": "value" }'
        type: query
        description: The trigger data of the feed items (as a JSON string).
      - name: locale
        value: en-US
        type: query
        description: The locale to render the feed items in. Must be in the IETF 5646 format (e.g. `en-US`). When not provided,
          will default to the locale that the feed items were rendered in. Only available for enterprise plan customers using
          custom translations.
      - name: exclude
        value: entries.archived_at,entries.clicked_at
        type: query
        description: Comma-separated list of field paths to exclude from the response. Use dot notation for nested fields
          (e.g., `entries.archived_at`). Limited to 3 levels deep.
      - name: mode
        value: compact
        type: query
        description: The mode to render the feed items in. Can be `compact` or `rich`. Defaults to `rich`. When `mode` is
          `compact`, feed items will not have `activities` and `total_activities` fields; the `data` field will not include
          nested arrays and objects; and the `actors` field will only have up to one actor.
      - 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: inserted_at.gt
        value: '2025-01-01T00:00:00Z'
        type: query
        description: Limits the results to items inserted after the given date.
      - name: inserted_at.gte
        value: '2025-01-01T00:00:00Z'
        type: query
        description: Limits the results to items inserted after or on the given date.
      - name: inserted_at.lt
        value: '2025-01-01T00:00:00Z'
        type: query
        description: Limits the results to items inserted before the given date.
      - name: inserted_at.lte
        value: '2025-01-01T00:00:00Z'
        type: query
        description: Limits the results to items inserted before or on the given date.
    docs: 'Returns a paginated list of feed items for a user in reverse chronological order, including metadata about the
      feed. If the user has not yet been identified within Knock, an empty feed will be returned.


      You can customize the response using [response filters](/integrations/in-app/knock#customizing-api-response-content)
      to exclude or only include specific properties on your resources.


      **Notes:**

      * When making this call from a client-side environment, use your publishable key along with a user to'
  - info:
      name: Get feed settings
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/users/:user_id/feeds/:id/settings
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      - name: id
        value: ''
        type: path
        description: The unique identifier for the channel.
    docs: Returns the feed settings for a user.
- info:
    name: Integrations
    type: folder
  items:
  - info:
      name: Process a Census RPC request
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/integrations/census/custom-destination
      body:
        type: json
        data: '{}'
    docs: Processes a Census custom destination RPC request.
  - info:
      name: Process a Hightouch RPC request
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/integrations/hightouch/embedded-destination
      body:
        type: json
        data: '{}'
    docs: Processes a Hightouch embedded destination RPC request.
- info:
    name: Bulk operations
    type: folder
  items:
  - info:
      name: Get bulk operation
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/bulk_operations/:id
      params:
      - name: id
        value: ''
        type: path
        description: The ID of the bulk operation to retrieve.
    docs: Retrieves a bulk operation (if it exists) and displays the current state of it.
- info:
    name: Subscriptions
    type: folder
  items:
  - info:
      name: List user subscriptions
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/users/:user_id/subscriptions
      params:
      - name: user_id
        value: ''
        type: path
        description: The user ID to list subscriptions for.
      - name: include[]
        value: ''
        type: query
        description: Associated resources to include in the response.
      - name: objects[]
        value: ''
        type: query
        description: Only returns subscriptions for the specified object references.
      - 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).
    docs: Retrieves a paginated list of subscriptions for a specific user, in descending order.
  - info:
      name: List subscriptions
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/objects/:collection/:object_id/subscriptions
      params:
      - name: mode
        value: ''
        type: query
        description: Mode of the request. `recipient` to list the objects that the provided object is subscribed to, `object`
          to list the recipients that subscribe to the provided object.
      - name: include[]
        value: ''
        type: query
        description: Additional fields to include in the response.
      - name: recipients[]
        value: ''
        type: query
        description: Recipients to filter by (only used if mode is `object`).
      - name: objects[]
        value: ''
        type: query
        description: Objects to filter by (only used if mode is `recipient`).
      - name: object_id
        value: ''
        type: path
        description: Unique identifier for the object.
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      - 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).
    docs: List subscriptions for an object. Either list the recipients that subscribe to the provided object, or list the
      objects that the provided object is subscribed to. Determined by the `mode` query parameter.
  - info:
      name: Add subscriptions
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/objects/:collection/:object_id/subscriptions
      params:
      - name: object_id
        value: ''
        type: path
        description: Unique identifier for the object.
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      body:
        type: json
        data: '{}'
    docs: Add subscriptions for an object. If a subscription already exists, it will be updated. This endpoint also handles
      [inline identifications](/managing-recipients/identifying-recipients#inline-identifying-recipients) for the `recipient`.
  - info:
      name: Delete subscriptions
      type: http
    http:
      method: DELETE
      url: https://api.knock.app/v1/objects/:collection/:object_id/subscriptions
      params:
      - name: object_id
        value: ''
        type: path
        description: Unique identifier for the object.
      - name: collection
        value: ''
        type: path
        description: The collection this object belongs to.
      body:
        type: json
        data: '{}'
    docs: Delete subscriptions for the specified recipients from an object. Returns the list of deleted subscriptions.
- info:
    name: Users
    type: folder
  items:
  - info:
      name: Get user
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/users/:user_id
      params:
      - name: user_id
        value: ''
        type: path
        description: The ID of the user to retrieve.
    docs: Retrieve a specific user by their ID.
  - info:
      name: Identify user
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      body:
        type: json
        data: '{}'
    docs: Create or update a user with the provided identification data. When you identify an existing user, the system merges
      the properties you specific with what is currently set on the user, updating only the fields included in your requests.
  - info:
      name: Delete user
      type: http
    http:
      method: DELETE
      url: https://api.knock.app/v1/users/:user_id
      params:
      - name: user_id
        value: ''
        type: path
        description: The ID of the user to delete.
    docs: Permanently delete a user and all associated data.
  - info:
      name: Update category in user preference set
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/preferences/:id/categories/:key
    docs: Updates a single category in a specific user preference set. This operation is deprecated.
  - info:
      name: Merge users
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/users/:user_id/merge
      params:
      - name: user_id
        value: ''
        type: path
        description: The id of the user to merge into.
      body:
        type: json
        data: '{}'
    docs: Merge two users together, where the user specified with the `from_user_id` param will be merged into the user specified
      by `user_id`.
  - info:
      name: Bulk set preferences
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/users/bulk/preferences
      body:
        type: json
        data: '{}'
    docs: Bulk sets the preferences for up to 1,000 users at a time. The preference set `:id` can be either `default` or a `tenant.id`.
      Learn more about [per-tenant preferences](/preferences/tenant-preferences). Note that this is a destructive operation
      and will replace any existing users' preferences with the preferences sent.
  - info:
      name: Bulk identify users
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/users/bulk/identify
      body:
        type: json
        data: '{}'
    docs: Identifies multiple users in a single operation. Allows creating or updating up to 1,000 users in a single batch
      with various properties, preferences, and channel data.
  - info:
      name: Update workflows in preference set
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/preferences/:id/workflows
    docs: Updates the workflows in a specific user preference set. This operation is deprecated.
  - info:
      name: Update categories in user preference set
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/preferences/:id/categories
    docs: Updates the categories in a specific user preference set. This operation is deprecated.
  - info:
      name: Bulk delete users
      type: http
    http:
      method: POST
      url: https://api.knock.app/v1/users/bulk/delete
      body:
        type: json
        data: '{}'
    docs: Permanently deletes up to 1,000 users at a time.
  - info:
      name: Update channel type in preference set
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/preferences/:id/channel_types/:type
    docs: Updates a single channel type in a specific user preference set. This operation is deprecated.
  - info:
      name: List user preference sets
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/users/:user_id/preferences
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
    docs: Retrieves a list of all preference sets for a specific user.
  - info:
      name: List users
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/users
      params:
      - name: include[]
        value: ''
        type: query
        description: Associated resources to include in the response.
      - 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).
    docs: Retrieve a paginated list of users in the environment. Defaults to 50 users per page.
  - info:
      name: Update workflow in user preference set
      type: http
    http:
      method: PUT
      url: https://api.knock.app/v1/users/:user_id/preferences/:id/workflows/:key
    docs: Updates a single workflow in a specific user preference set. This operation is deprecated.
  - info:
      name: Get user preference set
      type: http
    http:
      method: GET
      url: https://api.knock.app/v1/users/:user_id/preferences/:id
      params:
      - name: user_id
        value: ''
        type: path
        description: The unique identifier of the user.
      - name: id
        value: ''
        type: path

# --- truncated at 32 KB (76 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/knock/refs/heads/main/apis.yml