> ## Documentation Index
> Fetch the complete documentation index at: https://help.gorelo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Returns one task in full.

> Everything the project's task list returns, plus the fields that live only on the task
itself: linked assets, blocking relationships in both directions, the reason behind its
status, and time recorded against it.
            
A task in a project you cannot see returns 404, the same as one that does not exist.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/projects/{projectId}/tasks/{taskId}
openapi: 3.0.4
info:
  title: Public API
  description: Gorelo Public API documentation.
  version: 1.0.0
servers:
  - url: https://api.usw.gorelo.io
    description: US
  - url: https://api.aue.gorelo.io
    description: Australia
security:
  - ApiKeyAuth: []
tags:
  - name: Attachments
    description: "Uploading a file, for anything that can carry one. One endpoint rather than one per record\r\ntype, because the upload itself is identical - only the record it is checked against differs."
  - name: Alerts
    description: Alerts management operations
  - name: Assets
    description: Assets management operations
  - name: Billing
    description: Billing management operations
  - name: Tickets
    description: Tickets management operations
  - name: Clients
    description: Clients management operations
  - name: Contacts
    description: Contacts management operations
  - name: Deletions
    description: Deletions management operations
  - name: Documents
    description: Documents management operations
  - name: Forms
    description: Forms management operations
  - name: Organization
    description: Organization management operations
  - name: Projects
    description: Projects management operations
paths:
  /v1/projects/{projectId}/tasks/{taskId}:
    get:
      tags:
        - Projects
      summary: Returns one task in full.
      description: "Everything the project's task list returns, plus the fields that live only on the task\r\nitself: linked assets, blocking relationships in both directions, the reason behind its\r\nstatus, and time recorded against it.\r\n            \r\nA task in a project you cannot see returns 404, the same as one that does not exist."
      operationId: get_v1_projects_projectId_tasks_taskId
      parameters:
        - name: projectId
          in: path
          description: Project the task belongs to.
          required: true
          schema:
            type: string
            format: uuid
        - name: taskId
          in: path
          description: Task to return.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/TaskDetailModelBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/TaskDetailModelBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/TaskDetailModelBaseResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
components:
  schemas:
    TaskDetailModelBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          $ref: '#/components/schemas/TaskDetailModel'
        DataContext:
          type: object
          additionalProperties: false
          nullable: true
          example: null
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    ObjectBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          nullable: true
        DataContext:
          $ref: '#/components/schemas/ErrorDataContext'
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    HttpStatusCode:
      enum:
        - 100
        - 101
        - 102
        - 103
        - 200
        - 201
        - 202
        - 203
        - 204
        - 205
        - 206
        - 207
        - 208
        - 226
        - 300
        - 301
        - 302
        - 303
        - 304
        - 305
        - 306
        - 307
        - 308
        - 400
        - 401
        - 402
        - 403
        - 404
        - 405
        - 406
        - 407
        - 408
        - 409
        - 410
        - 411
        - 412
        - 413
        - 414
        - 415
        - 416
        - 417
        - 421
        - 422
        - 423
        - 424
        - 426
        - 428
        - 429
        - 431
        - 451
        - 500
        - 501
        - 502
        - 503
        - 504
        - 505
        - 506
        - 507
        - 508
        - 510
        - 511
      type: integer
      format: int32
    TaskDetailModel:
      type: object
      properties:
        Id:
          type: string
          description: Task identifier.
          format: uuid
        Title:
          type: string
          description: Task title.
        Number:
          type: integer
          description: Sequential task number within the project.
          format: int64
          nullable: true
        DisplayNumber:
          type: string
          description: "Human-readable task number, the project's display number and the task number joined —\r\ne.g. `PRO-462-3`."
        SectionId:
          type: string
          description: Identifier of the section the task sits in.
          format: uuid
        LeadAssigneeId:
          type: integer
          description: Identifier of the lead assignee.
          format: int64
          nullable: true
        AssistingAssigneeIds:
          type: array
          items:
            type: integer
            format: int64
          description: Identifiers of assisting assignees.
        WatcherIds:
          type: array
          items:
            type: integer
            format: int64
          description: Identifiers of technicians watching the task.
        PrimaryGroupId:
          type: integer
          description: "Identifier of the primary technician group. A task has no groups of its own - it inherits\r\nthem from its parent project - so this is the first entry of the project's\r\n`GroupIds`, the same reading a ticket's `PrimaryGroupId` uses. Null when the\r\nproject has no groups."
          format: int64
          nullable: true
        Status:
          $ref: '#/components/schemas/CodeModel'
        StatusUpdatedOn:
          type: string
          description: When the current status was last set (UTC).
          format: date-time
          nullable: true
        StatusReason:
          type: string
          description: Free-text reason recorded for the current status.
        Priority:
          $ref: '#/components/schemas/CodeModel'
        DueDate:
          type: string
          description: Date the task is due (UTC).
          format: date-time
          nullable: true
        ChecklistSummary:
          $ref: '#/components/schemas/TaskChecklistSummaryModel'
        IsUnread:
          type: boolean
          description: Whether the task is currently unread.
        IsWaitingOnThem:
          type: boolean
          description: >-
            Whether the task is waiting on the client rather than on the service
            provider.
        BlockedByTaskIds:
          type: array
          items:
            type: string
            format: uuid
          description: Identifiers of tasks that must finish before this one can.
        BlockingTaskIds:
          type: array
          items:
            type: string
            format: uuid
          description: Identifiers of tasks this one is blocking.
        LastUpdate:
          $ref: '#/components/schemas/ProjectLastUpdateModel'
        CreatedOn:
          type: string
          description: When the task was created (UTC).
          format: date-time
          nullable: true
        UpdatedOn:
          type: string
          description: When the task was last updated (UTC).
          format: date-time
          nullable: true
        ClosedOn:
          type: string
          description: "When the task was marked Done (UTC). Null whenever the task's current status is not Done:\r\nunlike a reopened ticket's `ClosedOn`, it reports the current close, not the last one\r\never recorded."
          format: date-time
          nullable: true
        ProjectId:
          type: string
          description: Identifier of the project the task belongs to.
          format: uuid
        ClientId:
          type: integer
          description: >-
            Identifier of the client the task is for - always the parent
            project's client.
          format: int64
          nullable: true
        StatusDetails:
          $ref: '#/components/schemas/TaskStatusDetailsModel'
        AgentAssetIds:
          type: array
          items:
            type: string
            format: uuid
          description: Identifiers of linked agent-managed assets.
        CustomAssetIds:
          type: array
          items:
            type: string
            format: uuid
          description: Identifiers of linked custom assets.
        UptimeIds:
          type: array
          items:
            type: string
            format: uuid
          description: Identifiers of linked uptime checks.
        Time:
          $ref: '#/components/schemas/TaskTimeModel'
        Products:
          $ref: '#/components/schemas/TaskProductsModel'
        BillingOverride:
          $ref: '#/components/schemas/TaskBillingOverrideModel'
        Shipments:
          type: array
          items:
            $ref: '#/components/schemas/TaskShipmentModel'
          description: "Shipment tracking attached to the task. Tasks do not support shipment tracking, so this is\r\nalways empty; the list is present so the shape matches a ticket's."
        Banner:
          type: string
          description: The banner shown on the task, if one is set.
          nullable: true
      additionalProperties: false
      description: "A single task in full. Everything the task list returns, plus the fields only a single task\r\ncarries. All timestamps are UTC."
    Error:
      type: object
      properties:
        Code:
          pattern: ^[0-9]{6}$
          type: string
          description: 6-digit MMTTNN error code. See the Public API error-code registry.
          example: '070101'
        Message:
          type: string
        PropertyName:
          type: string
          nullable: true
        ActionHint:
          type: string
          nullable: true
        DocUrl:
          type: string
          nullable: true
      additionalProperties: false
    ErrorDataContext:
      type: object
      properties:
        TraceId:
          type: string
          description: Request correlation id. Quote this when reporting a problem.
          nullable: true
      additionalProperties: false
      description: "The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest."
    CodeModel:
      type: object
      properties:
        Id:
          type: integer
          description: >-
            Numeric identifier of the coded value (e.g. status, priority, type,
            or source id).
          format: int64
          example: 1
        Name:
          type: string
          description: Display name of the coded value.
      additionalProperties: false
      description: >-
        A coded value, such as a status, priority, type or source, as an id and
        a display name.
    TaskChecklistSummaryModel:
      type: object
      properties:
        Completed:
          type: integer
          description: Number of completed checklist items.
          format: int32
        Total:
          type: integer
          description: Total number of checklist items.
          format: int32
        ProgressPercent:
          type: number
          description: Percentage complete, 0-100, rounded to two decimal places.
          format: float
          nullable: true
      additionalProperties: false
      description: >-
        How many checklist items are done out of the total, across a task's
        checklists.
    ProjectLastUpdateModel:
      type: object
      properties:
        UpdateType:
          type: string
          description: "Type of the last update, from a fixed set. Empty, with an empty `Summary`, for any\r\nother recorded event.\r\n\n\r\nOn a project: `ProjectCreated`, `ProjectSectionCreated`,\r\n`ProjectSectionUpdated`, `ProjectSectionDeleted`, `TaskCreated`,\r\n`TaskSectionUpdated`, `TaskStatusUpdated`, `TaskDeleted`,\r\n`ProjectLeadAssigneeUpdated`, `ProjectContactsUpdated`, `ProjectDueDateUpdated`,\r\n`ProjectTypeUpdated`, `ProjectTagsUpdated`, `ProjectGroupsUpdated`,\r\n`ProjectStatusUpdated`, `ProjectCommentAdded`, `ProjectDeleted`,\r\n`ProjectRecovered`, `ProjectTitleUpdated`, `ProjectWatchersUpdated`,\r\n`ProjectClientUpdated`, `ProjectClientLocationUpdated`,\r\n`ProjectDescriptionUpdated`.\r\n\n\r\nOn a task: `TaskCreated`, `TaskSectionUpdated`, `TaskDeleted`,\r\n`TaskStatusUpdated`, `TaskPriorityUpdated`, `TaskDueDateUpdated`,\r\n`TaskLeadAssigneeUpdated`, `TaskAssistingAssigneesUpdated`, `TaskAssetsUpdated`,\r\n`TaskBlockersUpdated`, `TaskReadStatusUpdated`, `TaskTPCAdded`,\r\n`TaskShipmentTrackingAdded`, `TaskShipmentTrackingDeleted`,\r\n`TaskShipmentTrackingUpdated`, `TaskChecklistAdded`, `TaskChecklistDeleted`,\r\n`TaskChecklistItemAdded`, `TaskChecklistItemDeleted`,\r\n`TaskChecklistItemCompleted`, `TaskApprovalAdded`, `TaskCommentAdded`,\r\n`TaskTitleUpdated`, `TaskWatchersUpdated`, `TaskRecovered`, `TaskMerged`,\r\n`ProjectShortcutApplied`, `TaskDeviceFileExplorerUsed`,\r\n`TaskDeviceRemoteConnectLaunched`, `TaskEventScheduled`, `TaskEventRemoved`.\r\n"
        Summary:
          type: string
          description: >-
            Short plain-text summary of the last update. Empty when the event
            type carries no summary.
        'On':
          type: string
          description: When the last update happened (UTC).
          format: date-time
          nullable: true
      additionalProperties: false
      description: The most recent activity recorded on a project.
    TaskStatusDetailsModel:
      type: object
      properties:
        Reason:
          type: string
          description: Free-text reason for the current status.
          nullable: true
        UpdatedById:
          type: integer
          description: Identifier of the technician who last set the status.
          format: int64
          nullable: true
        UpdatedOn:
          type: string
          description: When the status was last set (UTC).
          format: date-time
          nullable: true
      additionalProperties: false
      description: The reason recorded with a task's status, and who set it.
    TaskTimeModel:
      type: object
      properties:
        ActualHours:
          type: number
          description: >-
            All time recorded against the task as timed, whatever its billable
            state.
          format: double
        AdjustedHours:
          type: number
          description: The same total after manual corrections to individual entries.
          format: double
        Breakdown:
          $ref: '#/components/schemas/TaskTimeBreakdownModel'
      additionalProperties: false
      description: Time recorded against a task, on both bases and split by billable state.
    TaskProductsModel:
      type: object
      properties:
        Count:
          type: integer
          description: How many products are on the task, whatever their billable state.
          format: int32
        TotalAmount:
          type: number
          description: "What those products are worth to the client, in the service provider's currency: each\r\nbillable product's price x quantity, rounded to two decimals, summed. Products marked not\r\nbillable, hidden or void are counted by `Count` but contribute nothing here,\r\nbecause invoicing bills them as zero. Excludes tax."
          format: double
      additionalProperties: false
      description: The products added to a task.
    TaskBillingOverrideModel:
      type: object
      properties:
        ServiceLine:
          $ref: '#/components/schemas/CodeModel'
        BillingRole:
          $ref: '#/components/schemas/CodeModel'
        WorkType:
          $ref: '#/components/schemas/CodeModel'
        BillableStatus:
          $ref: '#/components/schemas/CodeModel'
      additionalProperties: false
      description: "Billing settings overridden at the task level. Tasks do not support billing overrides, so\r\nevery field here is always null."
    TaskShipmentModel:
      type: object
      properties:
        TrackingNumber:
          type: string
          description: The carrier's tracking number.
        Carrier:
          type: string
          description: The carrier, as its tracking slug (e.g. "star-track").
        Status:
          $ref: '#/components/schemas/CodeModel'
        Name:
          type: string
          description: Label given to the shipment on the task.
          nullable: true
      additionalProperties: false
      description: "One shipment tracked on a task. Tasks do not support shipment tracking, so the list is always\r\nempty; the shape matches a ticket's shipment."
    TaskTimeBreakdownModel:
      type: object
      properties:
        Billable:
          $ref: '#/components/schemas/TaskTimeBucketModel'
        NotBillable:
          $ref: '#/components/schemas/TaskTimeBucketModel'
        NotBillableHidden:
          $ref: '#/components/schemas/TaskTimeBucketModel'
      additionalProperties: false
      description: "A task's time split by billable state. An entry stays in its billable-state bucket whatever\r\nits position in the billing pipeline - approved or invoiced time is not moved out."
    TaskTimeBucketModel:
      type: object
      properties:
        ActualHours:
          type: number
          description: Hours as the timer recorded them.
          format: double
        AdjustedHours:
          type: number
          description: Hours after any manual correction to the entry.
          format: double
      additionalProperties: false
      description: One bucket of a task's time, in decimal hours.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: >-
        Your Gorelo API key. See [Generate API key](/generate-api-key). If your
        data is hosted in Australia, click the base URL at the top of this page
        and select `https://api.aue.gorelo.io`.
      name: X-API-Key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.