---
title: "Get Task"
method: GET
path: "/tasks/{task_id}"
tags: ["Tasks"]
---

# Get Task

`GET /tasks/{task_id}`

## Request

- Base URL: `https://am1.portal.api.nasuni.com`
- URL: `https://am1.portal.api.nasuni.com/tasks/{task_id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/nasuni/apis/portal-api/docs/tasks/:task_id/get.ts> (a function with typed inputs; its response is checked against the schema)

Get one task by ID.

## Path parameters

- `task_id` string, uuid, required

## Response `200`

Successful Response

- TaskSummaryDto: Customer-facing task view: the rolled-up task `state` plus an optional, curated task-level `reason`. Deliberately carries no `steps`. Internal step `reason`s — unstructured, engineering-facing strings (often raw exception detail) — stay in the backend and never ride on this DTO. The task-level `reason` is a separate, customer-safe contract persisted when the task becomes failed. It is never derived from internal step reasons while serving a customer request.
  - `id` string, uuid, required
  - `created_at` string, date-time, required
  - `resource` string, required
  - `resource_id` union
    - string, uuid
    - string
  - `stack_id` string, uuid, nullable
  - `action` string, required
  - `executor` 'edge', required
  - `executor_id` string, uuid, nullable
  - `initiated_by` 'portal' | 'edge', required
  - `initiator_id` string, uuid, nullable
  - `activity_log_id` string, uuid, nullable
  - `reason` string, nullable
  - `state` 'in_progress' | 'completed' | 'failed', required
  - `last_updated_at` string, date-time, required
  - `user_acknowledged_at` string, date-time, nullable
  - `deletion_time` string, date-time, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/nasuni/apis/portal-api.md) - [All operations](https://skmtc.dev/nasuni/apis/portal-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nasuni/apis/portal-api/revisions/2a505bec6d14?raw)
