Huddlekit · Schema

ListRecentEventsResponse

Visual AnnotationWebsite FeedbackDeveloper ToolsAI Integration

Properties

Name Type Description
events array Sample payloads built from the newest comments, newest first.
sample boolean Always true: these are samples, not replayed deliveries.
View JSON Schema on GitHub

JSON Schema

huddlekit-list-recent-events-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/huddlekit/json-schema/huddlekit-list-recent-events-response-schema.json",
  "title": "ListRecentEventsResponse",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/huddlekit-events-api-openapi.yml#/components/schemas/ListRecentEventsResponse",
  "type": "object",
  "required": [
    "events",
    "sample"
  ],
  "properties": {
    "events": {
      "type": "array",
      "description": "Sample payloads built from the newest comments, newest first.",
      "items": {
        "$ref": "#/$defs/WebhookPayload"
      }
    },
    "sample": {
      "type": "boolean",
      "const": true,
      "description": "Always true: these are samples, not replayed deliveries."
    }
  },
  "$defs": {
    "Change": {
      "type": "object",
      "description": "Before and after values of a changed field.",
      "required": [
        "old",
        "new"
      ],
      "properties": {
        "old": {
          "description": "Previous value. Always null for text edits (the pre-edit text is never sent) and for screenshots."
        },
        "new": {
          "description": "New value."
        }
      }
    },
    "DocumentPage": {
      "type": "object",
      "title": "Document page",
      "description": "Location of a document comment.",
      "additionalProperties": false,
      "required": [
        "page_number"
      ],
      "properties": {
        "page_number": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Page number (1-based)."
        },
        "video_timestamp": {
          "type": "number",
          "description": "Position in seconds. Present only for comments on a video."
        }
      }
    },
    "EventType": {
      "type": "string",
      "enum": [
        "comment.created",
        "comment.status_changed",
        "comment.text_changed",
        "comment.screenshot_ready"
      ],
      "description": "`comment.created`: a comment was added. `comment.status_changed`: its status changed. `comment.text_changed`: its text was edited. `comment.screenshot_ready`: its screenshot finished capturing (website and webapp comments only). The **Send test event** button in the Huddlekit app also sends `ping`, with a made-up comment and no `source` or `permalink`; answer it with any 2xx and don't treat it as a real event."
    },
    "Surface": {
      "type": "string",
      "enum": [
        "website",
        "webapp",
        "document"
      ],
      "description": "What a comment is attached to. `website`: a website project (the parent is a project). `webapp`: a web app that runs the Huddlekit SDK widget (the parent is a web app). `document`: an uploaded PDF, image or video (the parent is a document)."
    },
    "WebappPage": {
      "type": "object",
      "title": "Web app page",
      "description": "Location of a web app comment.",
      "additionalProperties": false,
      "required": [
        "url",
        "path",
        "title"
      ],
      "properties": {
        "url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Full URL of the page."
        },
        "path": {
          "type": [
            "string",
            "null"
          ],
          "description": "Page path."
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "description": "Page title."
        }
      }
    },
    "WebhookAuthor": {
      "type": "object",
      "description": "Who wrote the comment.",
      "required": [
        "name",
        "kind"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Display name, or `Someone` when the name is unknown. Comments created through this API show as `API`."
        },
        "kind": {
          "type": "string",
          "enum": [
            "user",
            "guest"
          ],
          "description": "`user` for a Huddlekit member, `guest` for anyone else."
        }
      }
    },
    "WebhookComment": {
      "type": "object",
      "description": "The comment as it is when the event is sent.",
      "required": [
        "id",
        "number",
        "title",
        "text",
        "status",
        "page",
        "permalink",
        "screenshot",
        "browser_info",
        "author",
        "created_at"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Comment id."
        },
        "number": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Sequential number of the comment within its parent."
        },
        "title": {
          "type": "string",
          "description": "One-line title made from the text: its first line, shortened to about 80 characters, ending in … when anything was cut."
        },
        "text": {
          "type": "string",
          "description": "Full comment text."
        },
        "status": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "open",
            "in-review",
            "in-progress",
            "resolved",
            null
          ],
          "description": "Workflow status: `open`, `in-review`, `in-progress` or `resolved`."
        },
        "page": {
          "description": "Where the comment is. Shape depends on `surface`.",
          "oneOf": [
            {
              "$ref": "#/$defs/WebsitePage"
            },
            {
              "$ref": "#/$defs/WebappPage"
            },
            {
              "$ref": "#/$defs/DocumentPage"
            }
          ]
        },
        "permalink": {
          "type": "string",
          "format": "uri",
          "description": "Link back to the comment. For website and document comments it opens the comment in Huddlekit; for web app comments it opens your page with the Huddlekit widget."
        },
        "screenshot": {
          "type": [
            "string",
            "null"
          ],
          "description": "Screenshot of the page, or null. Always null for documents."
        },
        "browser_info": {
          "description": "Browser and device details recorded with the comment (JSON), or null. Always null for documents."
        },
        "author": {
          "description": "Who wrote the comment, or null when unknown.",
          "oneOf": [
            {
              "$ref": "#/$defs/WebhookAuthor"
            },
            {
              "type": "null"
            }
          ]
        },
        "created_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "When the comment was created."
        }
      }
    },
    "WebhookPayload": {
      "type": "object",
      "description": "Body of every webhook delivery, and of each item returned by `GET /events/recent`.",
      "required": [
        "event",
        "event_id",
        "occurred_at",
        "workspace_id",
        "surface",
        "parent_id",
        "source",
        "comment",
        "changed"
      ],
      "properties": {
        "event": {
          "$ref": "#/$defs/EventType"
        },
        "event_id": {
          "type": "string",
          "description": "Unique event id; the same on every retry, so use it to de-duplicate. Samples from `GET /events/recent` use `sample:<comment id>`."
        },
        "occurred_at": {
          "type": "string",
          "format": "date-time",
          "description": "When the change happened."
        },
        "workspace_id": {
          "type": "string",
          "format": "uuid",
          "description": "Workspace the comment belongs to."
        },
        "surface": {
          "$ref": "#/$defs/Surface"
        },
        "parent_id": {
          "type": "string",
          "description": "Id of the project, web app or document the comment is on."
        },
        "source": {
          "type": [
            "string",
            "null"
          ],
          "description": "Who made the change: `app` (a change made in Huddlekit, or synced back from Slack, Linear, ClickUp or Notion), `mcp` (an AI agent via Huddlekit's MCP server) or `connector:<api_key_id>` (a call to this API with that key). Null only on events from before 2026-09-06."
        },
        "comment": {
          "description": "The comment. Typed as nullable, but events whose comment no longer exists are not sent.",
          "oneOf": [
            {
              "$ref": "#/$defs/WebhookComment"
            },
            {
              "type": "null"
            }
          ]
        },
        "changed": {
          "type": [
            "object",
            "null"
          ],
          "description": "What changed, keyed by field: `status` for comment.status_changed, `text` for comment.text_changed (with `old` always null), `screenshot` for comment.screenshot_ready (with `old` null). Null for comment.created.",
          "additionalProperties": {
            "$ref": "#/$defs/Change"
          }
        }
      }
    },
    "WebsitePage": {
      "type": "object",
      "title": "Website page",
      "description": "Location of a website comment.",
      "additionalProperties": false,
      "required": [
        "path"
      ],
      "properties": {
        "path": {
          "type": [
            "string",
            "null"
          ],
          "description": "Page path, relative to the project's URL."
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/huddlekit-list-recent-events-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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.