---
title: "POST /experimental/tasks/{id}/events"
method: POST
path: "/experimental/tasks/{id}/events"
tags: ["Tasks"]
---

# POST /experimental/tasks/{id}/events

`POST /experimental/tasks/{id}/events`

Write a client-emitted task event (`user_input.received`, `input.requested`, `run.progress`). Backend-owned lifecycle events (`task.created`, `run.*`, `task.cancelled`) MUST be rejected with 400.

## Path parameters

- `id` string, uuid, required

## Headers

- `Authorization` string

## Request body

- union
  - object
    - `type` 'user_input.received', required
    - `payload` object, required
      - `text` string
      - `structured` object
      - `inResponseTo` string, uuid
  - object
    - `type` 'input.requested', required
    - `payload` object, required
      - `questions` object[], required
        - `id` string, required
        - `prompt` string, required
        - `options` string[]
        - `default` string
  - object
    - `type` 'run.progress', required
    - `payload` object, required
      - `message` string, required
      - `tool` string

## Response `201`

Default Response

- object
  - `links` object, required
    - `self` string, uri, required
  - `data` object, required
    - `id` string, uuid, required
    - `type` 'task-event', required
    - `attributes` union, required
      - object
        - `taskId` string, uuid, required
        - `runId` string, uuid, nullable, required
        - `actor` object, required
          - `kind` union, required
            - 'trigger'
            - 'agent'
            - 'human'
            - 'system'
          - `id` string
          - `name` string
        - `createdAt` string, date-time, required
        - `type` 'task.created', required
        - `payload` object, required
          - `definition` object, required
            - `skillRef` string, required
            - `repoUrl` string, required
            - `baseBranch` string
            - `agent` string, required
            - `model` string
            - `environmentId` string, uuid
            - `environmentName` string
            - `snapshotFamily` union
              - …
          - `inputs` object, required
      - object
        - `taskId` string, uuid, required
        - `runId` string, uuid, nullable, required
        - `actor` object, required
          - `kind` union, required
            - 'trigger'
            - 'agent'
            - 'human'
            - 'system'
          - `id` string
          - `name` string
        - `createdAt` string, date-time, required
        - `type` 'user_input.received', required
        - `payload` object, required
          - `text` string
          - `structured` object
          - `inResponseTo` string, uuid
      - object
        - `taskId` string, uuid, required
        - `runId` string, uuid, nullable, required
        - `actor` object, required
          - `kind` union, required
            - 'trigger'
            - 'agent'
            - 'human'
            - 'system'
          - `id` string
          - `name` string
        - `createdAt` string, date-time, required
        - `type` 'run.created', required
        - `payload` object, required
          - `runId` string, uuid, required
          - `consumedInputEventIds` string[], required
          - `resumeOfRunId` string, uuid
      - object
        - `taskId` string, uuid, required
        - `runId` string, uuid, nullable, required
        - `actor` object, required
          - `kind` union, required
            - 'trigger'
            - 'agent'
            - 'human'
            - 'system'
          - `id` string
          - `name` string
        - `createdAt` string, date-time, required
        - `type` 'run.finished', required
        - `payload` union, required
          - object
            - `status` 'succeeded', required
            - `summary` string, required — One sentence on what the skill did.
            - `output` unknown
            - `truncated` object
              - …
          - object
            - `status` 'no_action', required
            - `summary` string, required — One sentence on what the skill did.
            - `truncated` object
              - …
          - object
            - `status` 'needs_input', required
            - `summary` string, required — One sentence on what the skill did.
            - `questions` string[], required — The exact questions the skill asked, verbatim.
            - `truncated` object
              - …
          - object
            - `status` 'failed', required
            - `summary` string, required — One sentence on what the skill did.
            - `reason` string, required — Why the skill could not complete.
            - `truncated` object
              - …
      - object
        - `taskId` string, uuid, required
        - `runId` string, uuid, nullable, required
        - `actor` object, required
          - `kind` union, required
            - 'trigger'
            - 'agent'
            - 'human'
            - 'system'
          - `id` string
          - `name` string
        - `createdAt` string, date-time, required
        - `type` 'run.error', required
        - `payload` object, required
          - `error` object, required
            - `code` string, required
            - `message` string, required
      - object
        - `taskId` string, uuid, required
        - `runId` string, uuid, nullable, required
        - `actor` object, required
          - `kind` union, required
            - 'trigger'
            - 'agent'
            - 'human'
            - 'system'
          - `id` string
          - `name` string
        - `createdAt` string, date-time, required
        - `type` 'task.cancelled', required
        - `payload` object, required
          - `reason` string
      - object
        - `taskId` string, uuid, required
        - `runId` string, uuid, nullable, required
        - `actor` object, required
          - `kind` union, required
            - 'trigger'
            - 'agent'
            - 'human'
            - 'system'
          - `id` string
          - `name` string
        - `createdAt` string, date-time, required
        - `type` 'input.requested', required
        - `payload` object, required
          - `questions` object[], required
            - `id` string, required
            - `prompt` string, required
            - `options` string[]
            - `default` string
      - object
        - `taskId` string, uuid, required
        - `runId` string, uuid, nullable, required
        - `actor` object, required
          - `kind` union, required
            - 'trigger'
            - 'agent'
            - 'human'
            - 'system'
          - `id` string
          - `name` string
        - `createdAt` string, date-time, required
        - `type` 'run.progress', required
        - `payload` object, required
          - `message` string, required
          - `tool` string
  - `meta` object, required
    - `task` object, required
      - `id` string, uuid, required
      - `status` union, required
        - 'running'
        - 'waiting_for_input'
        - 'cancelled'
        - 'completed'
      - `currentRunId` string, uuid, nullable, required
    - `startedRun` object
      - `launchRunId` string, uuid, required
      - `temporalWorkflowId` string, required

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `500` — Internal Server Error

## Changes

- **2026-09-15** `d50a02b79ad3` — 2 info
  - added the optional property `error/code` to the response with the `403` status
  - added the optional property `error/url` to the response with the `403` status
- **2026-09-08** `78f96a975834` — 3 breaking, 1 warning, 1 info
  - the `data/attributes/anyOf[subschema #4]/payload` response's property type changed from `object` to no type for status `201`
  - removed the required property `data/attributes/anyOf[subschema #4]/payload/launchResult` from the response with the `201` status
  - removed the required property `data/attributes/anyOf[subschema #4]/payload/outcome` from the response with the `201` status
  - removed the optional property `data/attributes/anyOf[subschema #4]/payload/questions` from the response with the `201` status
  - …1 more
- **2026-09-04** `ffb03b5d287f` — 2 info
  - added `subschema #4, subschema #5` to the `data/attributes` response property `anyOf` list for the response status `201`
  - removed `subschema #4, subschema #5` from the `data/attributes` response property `anyOf` list for the response status `201`
- **2026-08-12** `a3e84124ece4` — 1 info
  - added the optional property `data/attributes/anyOf[subschema #1]/payload/definition/snapshotFamily` to the response with the `201` status

[Change history](https://skmtc.dev/tessl/apis/tessl-api/changes/experimental/tasks/:id/events/post.md)

---

[API](https://skmtc.dev/tessl/apis/tessl-api.md) · [All operations](https://skmtc.dev/tessl/apis/tessl-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tessl/apis/tessl-api/revisions/ee9b4e55fec4?raw)
