---
title: "Create activity"
method: POST
path: "/v2/activities"
tags: ["Activities"]
---

# Create activity

`POST /v2/activities`

Create an activity on a deal. Requires the `ACTIVITIES_API` feature flag and an API key with the `activities:write` scope. `stage_id` must be a stage belonging to the deal's origin — when omitted, it defaults to the deal's current stage.

## Headers

- `api-token` string, required

## Request body

- object
  - `deal_id` string, uuid, required — UUID of the deal this activity belongs to. Must belong to the authenticated owner.
  - `title` string, required — Title of the activity.
  - `type` 'CALL' | 'MAIL' | 'SCHEDULE' | 'TASK' | 'MEETING' | 'WHATSAPP' | 'INSTAGRAM', required
  - `due_at` string, date-time, nullable — Due date/time (ISO 8601).
  - `content` string, nullable — Free-text body of the activity. For WHATSAPP and INSTAGRAM this is the message text (stored so it renders in the Clint UI message view); for CALL/MAIL/TASK it is the notes field.
  - `template_id` string, uuid — Optional WhatsApp Official message template to attach. Only supported when `type` is `WHATSAPP`; must reference a template belonging to the authenticated owner.
  - `stage_id` string, uuid — Stage of the deal's origin to associate the activity with. Defaults to the deal's current stage when omitted.

## Response `201`

The created activity object

- object
  - `status` integer — Response status
  - `data` Activity
    - `id` string, uuid
    - `title` string
    - `type` 'CALL' | 'MAIL' | 'SCHEDULE' | 'TASK' | 'MEETING' | 'WHATSAPP' | 'INSTAGRAM'
    - `content` string, nullable — Free-text body. For WHATSAPP/INSTAGRAM this is the message text (read from the message body the Clint UI renders); for CALL/MAIL/TASK it is the notes field.
    - `template_id` string, uuid, nullable — UUID of the attached WhatsApp Official message template, or null when none is attached.
    - `completed` boolean
    - `completed_at` string, date-time, nullable
    - `completed_by` string, uuid, nullable
    - `due_at` string, date-time, nullable — Public alias of the internal to_check_at column.
    - `custom` boolean — true when the activity was created manually (via the API or UI); false when generated automatically from a stage template.
    - `no_show` boolean
    - `stage_id` string, uuid
    - `created_at` string, date-time
    - `updated_at` string, date-time, nullable
    - `deal` object, nullable
      - `id` string, uuid
      - `status` 'OPEN' | 'WON' | 'LOST', nullable
      - `origin_id` string, uuid
      - `stage_id` string, uuid
      - `contact` object, nullable
        - `id` string, uuid
        - `name` string, nullable

## Other responses

- `400` — Param deal_id is required and must be a valid UUID
- `401` — Authentication error - invalid or missing api-token
- `403` — This feature is not available for your account.
- `404` — Deal not found

---

[API](https://skmtc.net/clint/apis/clint-api.md) · [All operations](https://skmtc.net/clint/apis/clint-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/clint/clint-api/versions/12b8f9eff943/schema)
