---
title: "Create a scheduling task"
method: POST
path: "/v1/tasks"
tags: ["Scheduling Task"]
---

# Create a scheduling task

`POST /v1/tasks`

Creates a scheduling task for the supplied application and job stage. The task starts with the requested urgency and optional initial note; the server assigns the scheduling-task type. An idempotency key is required so retries return the original result instead of creating another task.

## Request body

- SchedulingTaskCreate
  - `application_id` string, required — an application ID. Accepts the canonical prefixed compact UUID, a prefixed dashed UUID, a bare dashed UUID, or a bare compact UUID; input is case-insensitive.
  - `job_stage_id` string, required — a job stage ID. Accepts the canonical prefixed compact UUID, a prefixed dashed UUID, a bare dashed UUID, or a bare compact UUID; input is case-insensitive.
  - `is_urgent` boolean — Sets the task urgency. Defaults to false.
  - `note` string — Optional initial internal task note; omit to create no note.

## Response `201`

Success

- SchedulingTask
  - `id` string, required — Canonical task ID (tsk_ followed by 32 lowercase hexadecimal UUID characters).
  - `application` object, required
    - `id` string, required — Canonical application ID (app_ followed by 32 lowercase hexadecimal UUID characters).
    - `candidate` object, required
      - `id` string, required — Canonical candidate ID (can_ followed by 32 lowercase hexadecimal UUID characters).
      - `name` string, required
    - `job` object, required
      - `id` string, required — Canonical job ID (job_ followed by 32 lowercase hexadecimal UUID characters).
      - `name` string, required
  - `job_stage` object, required
    - `id` string, required — Canonical job stage ID (stg_ followed by 32 lowercase hexadecimal UUID characters).
    - `name` string, required
  - `status` 'NEEDS_AVAILABILITY' | 'WAITING_FOR_CANDIDATE' | 'READY_TO_SCHEDULE' | 'READY_TO_RESCHEDULE' | 'HOLD' | 'READY_TO_SEND_TO_CANDIDATE' | 'SCHEDULED' | 'COMPLETED' | 'CANCELED' | 'NEEDS_DEBRIEF', required
  - `is_urgent` boolean, required
  - `assignee` object, nullable, required
    - `id` string, required — Canonical employee ID (emp_ followed by 32 lowercase hexadecimal UUID characters).
    - `name` string, required
  - `queue_id` string, nullable, required — Canonical task queue ID (que_ followed by 32 lowercase hexadecimal UUID characters).
  - `tags` string[], required
  - `flags` object[], required
    - `code` string, required
    - `message` string, required
    - `raised_at` string, date-time, required — ISO 8601 timestamp.
  - `is_debrief_required` boolean, required
  - `delegation` object, required
    - `type` 'NONE' | 'AGENT', required
    - `status` 'NONE' | 'QUEUED' | 'ACTIVE' | 'WAITING_ON_CANDIDATE' | 'WAITING_ON_TEAM' | 'COMPLETED' | 'STOPPED', required
  - `notes` object[], required
    - `id` string, required
    - `author` object, required
      - `id` string, required — Canonical employee ID (emp_ followed by 32 lowercase hexadecimal UUID characters).
      - `name` string, required
    - `body` string, required
    - `created_at` string, date-time, required — ISO 8601 timestamp.
  - `created_at` string, date-time, required — ISO 8601 timestamp.
  - `updated_at` string, date-time, required — ISO 8601 timestamp.
  - `app_url` string, uri, required

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `409` — Conflict
- `410` — Gone
- `500` — Internal error

---

[API](https://skmtc.dev/modernloop/apis/modernloop-platform-api.md) · [All operations](https://skmtc.dev/modernloop/apis/modernloop-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/modernloop/modernloop-platform-api/revisions/33a0f9f44e4c/schema)
