---
title: "Create Task"
method: POST
path: "/gtm-internal/tasks"
tags: ["gtm-internal"]
---

# Create Task

`POST /gtm-internal/tasks`

## Request

- Base URL: `https://api-v1.unusual.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api-v1.unusual.ai/gtm-internal/tasks`
- Auth: OAuth 2
  - Password
  - Token URL: `/auth/login`

Create a task. `domain_id` is optional — omit for engineering/personal/
ops tasks (set `category`). When a domain is given, `org_id` is denormalized
from it. `account_id` addresses the CRM spine row directly instead (one or
the other, not both) — the task inherits the account's domain/org
down-pointers, which is how a task lands on an unmaterialized prospect.
`created_by` is the internal user (the assigner). Mirrors the MCP
`create_task`; `source`/`disposition` take the model defaults (human/active).

## Request body

- CreateTaskRequest
  - `title` string, required
  - `domain_id` string, nullable
  - `account_id` string, nullable
  - `category` string
  - `audience` string
  - `detail` string, nullable
  - `assignee` string, nullable
  - `subscribers` string[], nullable
  - `priority` string
  - `labels` string[], nullable
  - `parent_task_id` string, nullable
  - `due_at` string, nullable
  - `priority_id` string, nullable
  - `contact_id` string, nullable
  - `external_ref` string, nullable
  - `external_url` string, nullable

## Response `201`

Successful Response

- BackendDashboardServerRoutesGtmInternalTaskOut: Staff serializer — mirrors the MCP `_serialize_task` dict shape and so INCLUDES `detail` (staff-internal). The list route also enriches each row with human-readable `domain_host` / `org_name` so the cross-account table is not a wall of UUIDs (those two are not Task columns).
  - `id` string, required
  - `account_id` string, nullable
  - `domain_id` string, nullable
  - `org_id` string, nullable
  - `priority_id` string, nullable
  - `parent_task_id` string, nullable
  - `contact_id` string, nullable
  - `category` string, nullable
  - `title` string, required
  - `detail` string, nullable
  - `attachments` unknown
  - `labels` unknown
  - `priority` string, nullable
  - `created_by` string, nullable
  - `assignee` string, nullable
  - `subscribers` unknown
  - `status` string, nullable
  - `disposition` string, nullable
  - `source` string, nullable
  - `audience` string, nullable
  - `visibility_status` string, nullable
  - `external_ref` string, nullable
  - `external_url` string, nullable
  - `due_at` string, nullable
  - `completed_at` string, nullable
  - `killed_at` string, nullable
  - `position` integer, nullable
  - `created_at` string, nullable
  - `updated_at` string, nullable
  - `domain_host` string, nullable
  - `org_name` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/unusual/apis/dashboard-server.md) - [All operations](https://skmtc.dev/unusual/apis/dashboard-server/llms.txt) - [OpenAPI document](https://skmtc.dev/unusual/apis/dashboard-server/revisions/89f716930ead?raw)
