Knock Tenants API
A tenant represents a top-level entity from your system, like a company, organization, account, or workspace.
A tenant represents a top-level entity from your system, like a company, organization, account, or workspace.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/knock-tenants-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Knock Tenants API
version: '1.0'
description: A tenant represents a top-level entity from your system, like a company, organization, account, or workspace.
servers:
- url: https://api.knock.app
variables: {}
security:
- BearerAuth: []
tags:
- description: A tenant represents a top-level entity from your system, like a company, organization, account, or workspace.
name: Tenants
paths:
/v1/tenants/{id}:
delete:
callbacks: {}
description: Delete a tenant and all associated data. This operation cannot be undone.
operationId: deleteTenant
parameters:
- description: The unique identifier for the tenant.
in: path
name: id
required: true
schema:
type: string
x-struct: null
x-validate: null
responses:
'204':
description: No Content
summary: Delete a tenant
tags:
- Tenants
x-ratelimit-tier: 2
get:
callbacks: {}
description: Get a tenant by ID.
operationId: getTenant
parameters:
- description: The unique identifier for the tenant.
in: path
name: id
required: true
schema:
type: string
x-struct: null
x-validate: null
- description: When true, merges environment-level default preferences into the tenant's `settings.preference_set` field before returning the response. Defaults to false.
in: query
name: resolve_full_preference_settings
required: false
schema:
type: boolean
x-struct: null
x-validate: null
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Tenant'
description: OK
summary: Get a tenant
tags:
- Tenants
x-ratelimit-tier: 4
put:
callbacks: {}
description: Sets a tenant within an environment, performing an upsert operation. Any existing properties will be merged with the incoming properties.
operationId: setTenant
parameters:
- description: The unique identifier for the tenant.
in: path
name: id
required: true
schema:
type: string
x-struct: null
x-validate: null
- description: When true, merges environment-level default preferences into the tenant's `settings.preference_set` field before returning the response. Defaults to false.
in: query
name: resolve_full_preference_settings
required: false
schema:
type: boolean
x-struct: null
x-validate: null
requestBody:
content:
application/json:
example:
name: Jurassic Park
settings:
branding:
icon_url: https://example.com/trex_silhouette_icon.png
logo_url: https://example.com/amber_fossil_logo.png
primary_color: '#DF1A22'
primary_color_contrast: '#FFDE00'
schema:
$ref: '#/components/schemas/SetTenantRequest'
description: Tenant
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SetTenantResponse'
description: OK
summary: Set a tenant
tags:
- Tenants
x-ratelimit-tier: 3
/v1/tenants:
get:
callbacks: {}
description: List tenants for the current environment.
operationId: listTenants
parameters:
- description: Filter tenants by ID.
in: query
name: tenant_id
required: false
schema:
type: string
x-struct: null
x-validate: null
- description: Filter tenants by name.
in: query
name: name
required: false
schema:
type: string
x-struct: null
x-validate: null
- description: The cursor to fetch entries after.
in: query
name: after
required: false
schema:
type: string
x-struct: null
x-validate: null
- description: The cursor to fetch entries before.
in: query
name: before
required: false
schema:
type: string
x-struct: null
x-validate: null
- description: The number of items per page (defaults to 50).
in: query
name: page_size
required: false
schema:
type: integer
x-struct: null
x-validate: null
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ListTenantsResponse'
description: OK
summary: List tenants
tags:
- Tenants
x-ratelimit-tier: 4
/v1/tenants/bulk/delete:
post:
callbacks: {}
description: Delete up to 1,000 tenants at a time in a single operation. This operation cannot be undone.
operationId: bulkDeleteTenants
parameters:
- description: The IDs of the tenants to delete.
in: query
name: tenant_ids[]
required: true
schema:
items:
type: string
x-struct: null
x-validate: null
type: array
x-struct: null
x-validate: null
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperation'
description: OK
summary: Bulk delete tenants
tags:
- Tenants
x-ratelimit-tier: 1
/v1/tenants/bulk/set:
post:
callbacks: {}
description: Set or update up to 1,000 tenants in a single operation.
operationId: bulkSetTenants
parameters: []
requestBody:
content:
application/json:
example:
tenants:
- id: tenant_1
name: Acme Corp, Inc.
schema:
$ref: '#/components/schemas/BulkSetTenantsRequest'
description: Params
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BulkOperation'
description: OK
summary: Bulk set tenants
tags:
- Tenants
x-ratelimit-tier: 1
components:
schemas:
DiscordIncomingWebhookConnection:
description: Discord incoming webhook connection.
example:
incoming_webhook:
url: https://example.com/webhook
properties:
incoming_webhook:
description: Discord incoming webhook object.
properties:
url:
description: Incoming webhook URL.
example: https://example.com/webhook
type: string
x-struct: null
x-validate: null
required:
- url
type: object
x-struct: null
x-validate: null
required:
- incoming_webhook
title: DiscordIncomingWebhookConnection
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.DiscordChannelData.IncomingWebhookConnection
x-validate: null
SetTenantRequest:
additionalProperties: true
description: A tenant to be set in the system. You can supply any additional properties on the tenant object.
example:
name: Jurassic Park
settings:
branding:
icon_url: https://example.com/trex_silhouette_icon.png
logo_url: https://example.com/amber_fossil_logo.png
primary_color: '#DF1A22'
primary_color_contrast: '#FFDE00'
properties:
channel_data:
description: The channel data for the tenant.
oneOf:
- x-struct: null
x-validate: null
- $ref: '#/components/schemas/InlineChannelDataRequest'
x-struct: null
x-validate: null
name:
description: An optional name for the tenant.
type:
- string
- 'null'
x-struct: null
x-validate: null
settings:
description: The settings for the tenant. Includes branding and preference set.
properties:
branding:
description: The branding for the tenant.
properties:
icon_url:
description: The icon URL for the tenant. Must point to a valid image with an image MIME type.
type:
- string
- 'null'
x-struct: null
x-validate: null
logo_url:
description: The logo URL for the tenant. Must point to a valid image with an image MIME type.
type:
- string
- 'null'
x-struct: null
x-validate: null
primary_color:
description: The primary color for the tenant, provided as a hex value.
type:
- string
- 'null'
x-struct: null
x-validate: null
primary_color_contrast:
description: The primary color contrast for the tenant, provided as a hex value.
type:
- string
- 'null'
x-struct: null
x-validate: null
type: object
x-struct: null
x-validate: null
preference_set:
description: The preference set for the tenant. Used to override the default preference set.
oneOf:
- x-struct: null
x-validate: null
- $ref: '#/components/schemas/PreferenceSetRequest'
x-struct: null
x-validate: null
type: object
x-struct: null
x-validate: null
title: SetTenantRequest
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.SetTenantRequest
x-validate: null
InlineChannelDataRequest:
additionalProperties:
description: Channel data for a given channel type.
oneOf:
- $ref: '#/components/schemas/PushChannelDataTokensOnly'
- $ref: '#/components/schemas/PushChannelDataDevicesOnly'
- $ref: '#/components/schemas/AWSSNSPushChannelDataTargetARNsOnly'
- $ref: '#/components/schemas/AWSSNSPushChannelDataDevicesOnly'
- $ref: '#/components/schemas/OneSignalChannelDataPlayerIdsOnly'
- $ref: '#/components/schemas/SlackChannelData'
- $ref: '#/components/schemas/MsTeamsChannelData'
- $ref: '#/components/schemas/DiscordChannelData'
x-struct: null
x-validate: null
description: A request to set channel data for a type of channel inline.
example:
97c5837d-c65c-4d54-aa39-080eeb81c69d:
tokens:
- push_token_xxx
title: InlineChannelDataRequest
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.InlineChannelDataRequest
x-validate: null
PushChannelDataTokensOnly:
description: Push channel data.
example:
tokens:
- push_token_1
- push_token_2
properties:
tokens:
description: A list of push channel tokens.
items:
description: The device token to send the push notification to.
type: string
x-struct: null
x-validate: null
type: array
x-struct: null
x-validate: null
required:
- tokens
title: PushChannelDataTokensOnly
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.PushChannelDataTokensOnly
x-validate: null
PreferenceSet:
description: A preference set represents a specific set of notification preferences for a recipient. A recipient can have multiple preference sets.
example:
categories:
marketing: false
transactional:
channel_types:
email: false
channel_types:
email: true
push: false
sms:
conditions:
- argument: US
operator: equal_to
variable: recipient.country_code
commercial_subscribed: true
id: default
workflows: null
properties:
categories:
anyOf:
- additionalProperties:
$ref: '#/components/schemas/PreferenceSetWorkflowCategorySetting'
description: An object where the key is the category and the values are the preference settings for that category.
example:
marketing:
channel_types:
email: false
title: PreferenceSetCategories
type: object
x-struct: null
x-validate: null
- x-struct: null
x-validate: null
description: An object where the key is the category and the values are the preference settings for that category.
x-struct: null
x-validate: null
channel_types:
anyOf:
- $ref: '#/components/schemas/PreferenceSetChannelTypes'
- x-struct: null
x-validate: null
description: An object where the key is the channel type and the values are the preference settings for that channel type.
x-struct: null
x-validate: null
channels:
anyOf:
- $ref: '#/components/schemas/PreferenceSetChannels'
- x-struct: null
x-validate: null
description: An object where the key is the channel ID and the values are the preference settings for that channel ID.
x-struct: null
x-validate: null
commercial_subscribed:
description: Whether the recipient is subscribed to commercial communications. When false, the recipient will not receive commercial workflow notifications.
type:
- boolean
- 'null'
x-struct: null
x-validate: null
id:
description: Unique identifier for the preference set.
example: default
type: string
x-struct: null
x-validate: null
workflows:
anyOf:
- additionalProperties:
$ref: '#/components/schemas/PreferenceSetWorkflowCategorySetting'
description: An object where the key is the workflow key and the values are the preference settings for that workflow.
example:
dinosaurs-loose:
channel_types:
email: false
title: PreferenceSetWorkflows
type: object
x-struct: null
x-validate: null
- x-struct: null
x-validate: null
description: An object where the key is the workflow key and the values are the preference settings for that workflow.
x-struct: null
x-validate: null
required:
- id
title: PreferenceSet
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.PreferenceSet
x-validate: null
OneSignalChannelDataPlayerIdsOnly:
description: OneSignal channel data.
example:
player_ids:
- 123e4567-e89b-12d3-a456-426614174000
properties:
player_ids:
description: A list of OneSignal player IDs.
example:
- 123e4567-e89b-12d3-a456-426614174000
items:
description: OneSignal player ID.
format: uuid
type: string
x-struct: null
x-validate: null
type: array
x-struct: null
x-validate: null
required:
- player_ids
title: OneSignalChannelDataPlayerIdsOnly
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.OneSignalChannelDataPlayerIdsOnly
x-validate: null
DiscordChannelConnection:
description: Discord channel connection.
example:
channel_id: '123456789012345678'
properties:
channel_id:
description: Discord channel ID.
example: '123456789012345678'
type: string
x-struct: null
x-validate: null
required:
- channel_id
title: DiscordChannelConnection
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.DiscordChannelData.ChannelConnection
x-validate: null
PreferenceSetRequest:
description: A request to set a preference set for a recipient.
example:
__persistence_strategy__: merge
categories:
marketing: false
transactional:
channel_types:
email: false
channel_types:
email: true
channels:
2f641633-95d3-4555-9222-9f1eb7888a80:
conditions:
- argument: US
operator: equal_to
variable: recipient.country_code
aef6e715-df82-4ab6-b61e-b743e249f7b6: true
commercial_subscribed: true
workflows:
dinosaurs-loose:
channel_types:
email: false
properties:
__persistence_strategy__:
description: Controls how the preference set is persisted. 'replace' will completely replace the preference set, 'merge' will merge with existing preferences.
enum:
- merge
- replace
type: string
x-struct: null
x-validate: null
categories:
anyOf:
- additionalProperties:
$ref: '#/components/schemas/PreferenceSetWorkflowCategorySetting'
description: An object where the key is the category and the values are the preference settings for that category.
example:
marketing:
channel_types:
email: false
transactional: true
title: PreferenceSetRequestCategories
type: object
x-struct: null
x-validate: null
- x-struct: null
x-validate: null
description: An object where the key is the category and the values are the preference settings for that category.
x-struct: null
x-validate: null
channel_types:
anyOf:
- $ref: '#/components/schemas/PreferenceSetChannelTypes'
- x-struct: null
x-validate: null
description: An object where the key is the channel type and the values are the preference settings for that channel type.
x-struct: null
x-validate: null
channels:
anyOf:
- $ref: '#/components/schemas/PreferenceSetChannels'
- x-struct: null
x-validate: null
description: An object where the key is the channel ID and the values are the preference settings for that channel ID.
x-struct: null
x-validate: null
commercial_subscribed:
description: Whether the recipient is subscribed to commercial communications. When false, the recipient will not receive commercial workflow notifications.
type:
- boolean
- 'null'
x-struct: null
x-validate: null
workflows:
anyOf:
- additionalProperties:
$ref: '#/components/schemas/PreferenceSetWorkflowCategorySetting'
description: An object where the key is the workflow key and the values are the preference settings for that workflow.
example:
dinosaurs-loose:
channel_types:
email: false
sms: true
welcome-sequence: true
title: PreferenceSetRequestWorkflows
type: object
x-struct: null
x-validate: null
- x-struct: null
x-validate: null
description: An object where the key is the workflow key and the values are the preference settings for that workflow.
x-struct: null
x-validate: null
title: PreferenceSetRequest
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.PreferenceSetRequest
x-validate: null
PreferenceSetWorkflowCategorySetting:
description: Workflow or category preferences within a preference set
example:
channel_types:
email: false
channels:
aef6e715-df82-4ab6-b61e-b743e249f7b6: true
oneOf:
- example: false
type: boolean
x-struct: null
x-validate: null
- description: The settings object for a workflow or category, where you can specify channel types or conditions.
example:
channel_types:
email: false
channels:
aef6e715-df82-4ab6-b61e-b743e249f7b6: true
conditions: null
properties:
channel_types:
anyOf:
- $ref: '#/components/schemas/PreferenceSetChannelTypes'
- x-struct: null
x-validate: null
description: An object where the key is the channel type and the values are the preference settings for that channel type.
x-struct: null
x-validate: null
channels:
anyOf:
- $ref: '#/components/schemas/PreferenceSetChannels'
- x-struct: null
x-validate: null
description: An object where the key is the channel ID and the values are the preference settings for that channel ID.
x-struct: null
x-validate: null
conditions:
description: A list of conditions to apply to a channel type.
items:
$ref: '#/components/schemas/Condition'
type:
- array
- 'null'
x-struct: null
x-validate: null
title: PreferenceSetWorkflowCategorySettingObject
type: object
x-struct: null
x-validate: null
title: PreferenceSetWorkflowCategorySetting
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.PreferenceSetWorkflowCategorySetting
x-validate: null
SlackTokenConnection:
description: A Slack connection token.
example:
access_token: xoxb-1234567890
channel_id: C01234567890
user_id: U01234567890
properties:
access_token:
description: A Slack access token.
example: xoxb-1234567890
type:
- string
- 'null'
x-struct: null
x-validate: null
channel_id:
description: A Slack channel ID from the Slack provider.
example: C01234567890
type:
- string
- 'null'
x-struct: null
x-validate: null
user_id:
description: A Slack user ID from the Slack provider.
example: U01234567890
type:
- string
- 'null'
x-struct: null
x-validate: null
title: SlackTokenConnection
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.SlackChannelData.TokenConnection
x-validate: null
PushChannelDataDevicesOnly:
description: Push channel data.
example:
devices:
- locale: en-US
timezone: America/Los_Angeles
token: push_token_1
properties:
devices:
description: A list of devices. Each device contains a token, and optionally a locale and timezone.
items:
properties:
locale:
description: The locale of the object. Used for [message localization](/concepts/translations).
type:
- string
- 'null'
x-struct: null
x-validate: null
timezone:
description: The timezone of the object. Must be a valid [tz database time zone string](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Used for [recurring schedules](/concepts/schedules#scheduling-workflows-with-recurring-schedules-for-recipients).
type:
- string
- 'null'
x-struct: null
x-validate: null
token:
description: The device token to send the push notification to.
type: string
x-struct: null
x-validate: null
required:
- token
type: object
x-struct: null
x-validate: null
type: array
x-struct: null
x-validate: null
required:
- devices
title: PushChannelDataDevicesOnly
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.PushChannelDataDevicesOnly
x-validate: null
MsTeamsTokenConnection:
description: Microsoft Teams token connection.
example:
ms_teams_channel_id: 123e4567-e89b-12d3-a456-426614174000
ms_teams_team_id: 123e4567-e89b-12d3-a456-426614174000
ms_teams_tenant_id: null
ms_teams_user_id: null
properties:
ms_teams_channel_id:
description: Microsoft Teams channel ID.
format: uuid
type:
- string
- 'null'
x-struct: null
x-validate: null
ms_teams_team_id:
description: Microsoft Teams team ID.
format: uuid
type:
- string
- 'null'
x-struct: null
x-validate: null
ms_teams_tenant_id:
description: Microsoft Teams tenant ID.
format: uuid
type:
- string
- 'null'
x-struct: null
x-validate: null
ms_teams_user_id:
description: Microsoft Teams user ID.
format: uuid
type:
- string
- 'null'
x-struct: null
x-validate: null
title: MsTeamsTokenConnection
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.MsTeamsChannelData.TokenConnection
x-validate: null
DiscordChannelData:
description: Discord channel data.
example:
connections:
- channel_id: '123456789012345678'
properties:
connections:
description: List of Discord channel connections.
items:
description: Discord channel connection, either a channel connection or an incoming webhook connection.
oneOf:
- $ref: '#/components/schemas/DiscordChannelConnection'
- $ref: '#/components/schemas/DiscordIncomingWebhookConnection'
type: object
x-struct: null
x-validate: null
type: array
x-struct: null
x-validate: null
required:
- connections
title: DiscordChannelData
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.DiscordChannelData
x-validate: null
SlackChannelData:
description: Slack channel data.
example:
connections:
- access_token: xoxb-1234567890
channel_id: C01234567890
user_id: U01234567890
token:
access_token: xoxb-1234567890
properties:
connections:
description: List of Slack channel connections.
items:
description: A Slack connection, either an access token or an incoming webhook
oneOf:
- $ref: '#/components/schemas/SlackTokenConnection'
- $ref: '#/components/schemas/SlackIncomingWebhookConnection'
type: object
x-struct: null
x-validate: null
type: array
x-struct: null
x-validate: null
token:
description: A Slack connection token.
example:
access_token: xoxb-1234567890
properties:
access_token:
description: A Slack access token.
example: xoxb-1234567890
type:
- string
- 'null'
x-struct: null
x-validate: null
required:
- access_token
title: SlackChannelDataTokenObject
type:
- object
- 'null'
x-struct: null
x-validate: null
required:
- connections
title: SlackChannelData
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.SlackChannelData
x-validate: null
PreferenceSetChannels:
additionalProperties:
description: Whether the specific channel (by channel_id) is enabled for the preference set, or a settings object with conditions.
oneOf:
- type: boolean
x-struct: null
x-validate: null
- $ref: '#/components/schemas/PreferenceSetChannelSetting'
x-struct: null
x-validate: null
description: Channel preferences.
example:
2f641633-95d3-4555-9222-9f1eb7888a80:
conditions:
- argument: US
operator: equal_to
variable: recipient.country_code
aef6e715-df82-4ab6-b61e-b743e249f7b6: true
title: PreferenceSetChannels
type: object
x-struct: Elixir.SwitchboardWeb.V1.Specs.PreferenceSetChannels
x-validate: null
Tenant:
additionalProperties: true
description: A tenant entity.
example:
__typename: Tenant
id: tenant_jp123
name: Jurassic Park
settings:
branding:
icon_url: https://example.com/trex_silhouette_icon.png
logo_url: https://example.com/amber_fossil_logo.png
primary_color: '#DF1A22'
primary_color_contrast: '#FFDE00'
preference_set:
categories:
safety:
channel_types:
email: true
push: true
channel_types:
email: true
in_app_feed: true
push: true
id: default
workflows:
park_alert:
channel_types:
email: true
push: true
properties:
__typename:
description: The typename of the schema.
example: Tenant
type: string
x-struct: null
x-validate: null
id:
description: The unique identifier for the tenant.
type: string
x-struct: null
x-validate: null
name:
description: An optional name for the tenant.
type:
- string
- 'null'
x-struct: null
x-validate: null
settings:
description: The settings for the tenant. Includes branding and preference set.
properties:
branding:
description: The branding for the tenant.
properties:
icon_url:
description: The icon URL for the tenant. Must point to a valid image with an image MIME type.
example: https://example.com/trex_silhouette_icon.png
format: uri
type:
- string
- 'null'
x-struct: null
x-validate: null
logo_url:
description: The logo URL for the tenant. Must point to a valid image with an image MIME type.
example: https://example.com/amber_fossil_logo.png
format: uri
type:
- string
- 'null'
x-struct: null
x-validate: null
primary_color:
description: The primary color for the tenant, provided as a hex value.
example: '#DF1A22'
type:
- string
- 'null'
x-struct: null
x-validate: null
primary_color_contrast:
description: The primary color contrast for the tenant, provided as a hex value.
example: '#FFDE00'
type:
- string
- 'null'
x-struct: null
# --- truncated at 32 KB (56 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/knock/refs/heads/main/openapi/knock-tenants-api-openapi.yml