---
title: "Create Agent Activity"
method: POST
path: "/api/v4/{workspace-slug}/agent-sessions/{agent-session-id}/activities"
---

# Create Agent Activity

`POST /api/v4/{workspace-slug}/agent-sessions/{agent-session-id}/activities`

## Request

- Base URL: `https://api.app.shortcut.com`
- URL: `https://api.app.shortcut.com/api/v4/{workspace-slug}/agent-sessions/{agent-session-id}/activities`
- Auth: HTTP bearer

Publish a typed activity as the agent owning the session.

## Path parameters

- `workspace-slug` string, required
- `agent-session-id` string, uuid, required

## Request body

- Body2522600
  - `content` ActivityContent, required: Typed activity content: thought, action, elicitation, response or error.
    - `type` 'error' | 'action' | 'prompt' | 'elicitation' | 'response' | 'thought', required
    - `action` string
    - `body` string
    - `parameter` string
    - `result` string
  - `idempotency_key` string, required: Client key that makes repeated identical requests return the same activity.
  - `turn` integer, required: The session turn this activity belongs to. Must match the current turn.
  - `ephemeral` boolean: Replace this thought or action when the next agent activity arrives.
  - `signal` 'auth' | 'select': Optional signal on an elicitation.
  - `signal_metadata` SignalMetadata: Metadata for the signal: a url for auth, options for select.
    - `options` SignalOption[]
      - `label` string, required
      - `value` string, required
    - `url` string

## Response `201`

Resource

- AgentActivity
  - `author_id` string, uuid, required
  - `content` ActivityContent, required: Typed activity content: thought, action, elicitation, response or error.
    - `type` 'error' | 'action' | 'prompt' | 'elicitation' | 'response' | 'thought', required
    - `action` string
    - `body` string
    - `parameter` string
    - `result` string
  - `created_at` string, date-time, required
  - `ephemeral` boolean, required
  - `id` string, uuid, required
  - `in_reply_to` string, uuid, nullable, required
  - `sequence` integer, required
  - `session_id` string, uuid, required
  - `signal` string, nullable, required
  - `signal_metadata` SignalMetadata, required: Metadata for the signal: a url for auth, options for select.
    - `options` SignalOption[]
      - `label` string, required
      - `value` string, required
    - `url` string
  - `superseded` boolean, required
  - `turn` integer, required
  - `workspace_id` string, uuid, required

## Other responses

- `400`: Schema mismatch
- `403`: **Either:** (1) Resource does not exist **or** (2)
- `404`: **Either:** (1) Resource does not exist **or** (2)
- `409`: **Either:** (1) Resource does not exist **or** (2)
- `422`: **Either:** (1) Resource does not exist **or** (2)
- `429`: **Either:** (1) Resource does not exist **or** (2)
- `503`: **Either:** (1) Resource does not exist **or** (2)

## Changes

- **2026-10-15** `46322a38c246`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/shortcut-com/apis/shortcut-api/changes/api/v4/:workspace-slug/agent-sessions/:agent-session-id/activities/post.md)

---

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