Knock Message
A per-recipient delivery record produced by a Knock workflow run or broadcast. Carries channel, provider, status, engagement, and content references for one message to one recipient.
NotificationMessagingInfrastructureWorkflowsCross-ChannelEmailSMSPushIn-AppChatSlackWebhookMCPAI AgentsDeveloper Platform
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/knock-app/main/json-schema/knock-message-schema.json",
"title": "Knock Message",
"description": "A per-recipient delivery record produced by a Knock workflow run or broadcast. Carries channel, provider, status, engagement, and content references for one message to one recipient.",
"type": "object",
"required": ["__typename", "id", "channel_id", "recipient", "workflow", "status", "inserted_at"],
"properties": {
"__typename": {
"type": "string",
"const": "Message"
},
"id": {
"type": "string",
"description": "Globally unique Knock-assigned identifier (typically a ULID)."
},
"channel_id": {
"type": "string",
"format": "uuid",
"description": "ID of the Knock channel that produced this message."
},
"recipient": {
"oneOf": [
{ "type": "string" },
{
"type": "object",
"properties": {
"id": { "type": "string" },
"collection": { "type": "string" }
}
}
],
"description": "Either a string user id, or an object reference identifying a non-user recipient."
},
"workflow": {
"type": "string",
"description": "Key of the workflow that triggered this message."
},
"tenant": {
"type": ["string", "null"],
"description": "Tenant id, when the message was triggered with a tenant."
},
"status": {
"type": "string",
"enum": [
"queued",
"sent",
"delivered",
"delivery_attempted",
"undelivered",
"not_sent",
"bounced"
]
},
"engagement_statuses": {
"type": "array",
"items": {
"type": "string",
"enum": ["seen", "unseen", "read", "unread", "interacted", "link_clicked", "archived", "unarchived"]
}
},
"read_at": { "type": ["string", "null"], "format": "date-time" },
"seen_at": { "type": ["string", "null"], "format": "date-time" },
"archived_at": { "type": ["string", "null"], "format": "date-time" },
"interacted_at": { "type": ["string", "null"], "format": "date-time" },
"link_clicked_at":{ "type": ["string", "null"], "format": "date-time" },
"inserted_at": { "type": "string", "format": "date-time" },
"updated_at": { "type": "string", "format": "date-time" },
"source": {
"type": "object",
"description": "How this message originated (workflow trigger, broadcast, schedule, etc.).",
"properties": {
"key": { "type": "string" },
"version_id": { "type": "string" },
"step_ref": { "type": "string" }
}
},
"data": {
"type": ["object", "null"],
"description": "Trigger-time payload available for templating and conditions."
},
"metadata": {
"type": ["object", "null"],
"description": "Channel/provider-specific metadata captured at send time."
},
"scheduled_at": { "type": ["string", "null"], "format": "date-time" }
},
"additionalProperties": true
}
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.