---
title: "Create activity"
method: POST
path: "/activity/create"
tags: ["Activity"]
---

# Create activity

`POST /activity/create`

Record a system-generated event on a task. Most events are written by the server itself; this exists for importers and integrations.

## Request body

- object
  - `taskId` string, required
  - `message` string, nullable, required — Free-text body. Null for events whose meaning is in eventData.
  - `type` string, required — The event kind, e.g. status_changed or assignee_changed.
  - `eventData` object, nullable — Type-specific payload stored alongside the event.

## Response `200`

The created activity

- Activity
  - `id` string, required
  - `taskId` string, required
  - `type` string, required — One of: comment, task, create, status_changed, priority_changed, assignee_changed, unassigned, due_date_changed, title_changed, description_changed.
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `userId` string, nullable, required
  - `content` string, nullable, required
  - `eventData` unknown
  - `externalUserName` string, nullable, required — Set when the activity was imported from another tool.
  - `externalUserAvatar` string, nullable, required
  - `externalSource` string, nullable, required — The tool it was imported from, e.g. planka, trello, jira.
  - `externalUrl` string, nullable, required

## Other responses

- `400` — Invalid body, or unknown task
- `401` — Missing or invalid credentials
- `403` — No workspace access, or missing task:update permission

## Changes

- **2026-08-24** `08bbb5bedb5d` — 4 breaking, 1 warning, 14 info
  - the request property `eventData` became not nullable
  - the request property `message` became not nullable
  - the response property `eventData` became optional for the status `200`
  - the `eventData` response's property type/format changed from `object`/`` to ``/`` for status `200`
  - …15 more
- **2026-07-11** `32cece1ebe43` — 3 breaking, 3 info
  - request body became required
  - the `createdAt` response's property type/format changed from ``/`` to `string`/`date-time` for status `200`
  - the `type` response's property type/format changed from ``/`` to `string`/`` for status `200`
  - added the new optional request property `eventData`
  - …2 more
- **2026-03-05** `c45ef22a736c` — 6 breaking, 6 info
  - the response property `content` became nullable for the status `200`
  - the response property `externalSource` became nullable for the status `200`
  - the response property `externalUrl` became nullable for the status `200`
  - the response property `externalUserAvatar` became nullable for the status `200`
  - …8 more
- …earlier changes not shown

[Full history](https://skmtc.dev/usekaneo/apis/kaneo-api/changes/activity/create/post.md)

---

[API](https://skmtc.dev/usekaneo/apis/kaneo-api.md) · [All operations](https://skmtc.dev/usekaneo/apis/kaneo-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/usekaneo/kaneo-api/revisions/9d1da42c10ce/schema)
