Hlix Tasks API

Tasks, comments and review evidence.

GitHub OpenAPI

Operations 6

GET /v1/api/tasks List tasks in the workspace #
POST /v1/api/tasks Create a task; taskConfig delegates it through a one-task cycle #
GET /v1/api/tasks/{id} Get one task #
PATCH /v1/api/tasks/{id} Update a task's title, description or status #
GET /v1/api/tasks/{id}/comments List the comments on a task #
POST /v1/api/tasks/{id}/comments Comment on a task #

Specifications

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hlix-ai:hlix-ai-tasks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hlix-ai-tasks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Explore the Hlix API for projects, agent teams, and delivery workflows. Authenticate with `x-api-key` and select a Workspace with `X-Organization-Id`. Session-only operations require a signed-in user session. Authentication setup.
  title: reference Tasks API
  version: 1.0.0
servers:
- url: https://server.hlix.ai
  description: API server
security:
- apiKey: []
- sessionCookie: []
tags:
- description: Tasks, comments and review evidence.
  name: Tasks
paths:
  /v1/api/tasks:
    get:
      operationId: listTasks
      parameters:
      - description: Only tasks in this project.
        in: query
        name: projectId
        required: false
        schema:
          type: string
      - description: Only tasks in this status.
        in: query
        name: status
        required: false
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Task'
                type: array
          description: The matching tasks.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The request named no active organization.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No valid session or API key.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Authenticated, but not a member of the named organization — or a client collaborator without the required access on this project.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The resource does not exist, or the caller is a task-scoped credential and this endpoint is outside its allowlist.
      summary: List tasks in the workspace
      tags:
      - Tasks
    post:
      operationId: createTask
      parameters:
      - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTask'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
          description: The created task.
        '400':
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ValidationError'
                - $ref: '#/components/schemas/ApiError'
          description: The JSON body failed schema validation (`ValidationError`), or the request named no active organization (`ApiError`).
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No valid session or API key.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Authenticated, but not a member of the named organization — or a client collaborator without the required access on this project.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No such project in this workspace — or a client collaborator it was never shared with (existence is deliberately not revealed).
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The project is archived and does not accept new tasks.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The task could not be created.
      summary: Create a task; taskConfig delegates it through a one-task cycle
      tags:
      - Tasks
  /v1/api/tasks/{id}:
    get:
      operationId: getTask
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      - $ref: '#/components/parameters/ClientPortal'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
          description: The task.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The request named no active organization.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No valid session or API key.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Authenticated, but not a member of the named organization — or a client collaborator without the required access on this project.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No such task in this workspace.
      summary: Get one task
      tags:
      - Tasks
    patch:
      operationId: updateTask
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTask'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
          description: The updated task.
        '400':
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ValidationError'
                - $ref: '#/components/schemas/ApiError'
          description: The JSON body failed schema validation (`ValidationError`), or the request named no active organization (`ApiError`).
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No valid session or API key.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Authenticated, but not a member of the named organization — or a client collaborator without the required access on this project.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No such task in this workspace.
      summary: Update a task's title, description or status
      tags:
      - Tasks
  /v1/api/tasks/{id}/comments:
    get:
      operationId: listTaskComments
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      - $ref: '#/components/parameters/ClientPortal'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/TaskComment'
                type: array
          description: The task's comment thread, oldest first.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The request named no active organization.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No valid session or API key.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Authenticated, but not a member of the named organization — or a client collaborator without the required access on this project.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No such task in this workspace.
      summary: List the comments on a task
      tags:
      - Tasks
    post:
      operationId: addTaskComment
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      - $ref: '#/components/parameters/ClientPortal'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddTaskComment'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskComment'
          description: The stored comment.
        '400':
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ValidationError'
                - $ref: '#/components/schemas/ApiError'
          description: The JSON body failed schema validation (`ValidationError`), or the request named no active organization (`ApiError`).
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No valid session or API key.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: Authenticated, but not a member of the named organization — or a client collaborator without the required access on this project.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No such task in this workspace.
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The supplied `messageId` is already in use — either on another conversation, or on this one with different content.
      summary: Comment on a task
      tags:
      - Tasks
components:
  schemas:
    ApiError:
      additionalProperties: {}
      properties:
        error:
          type: string
      required:
      - error
      type: object
    CreateTask:
      properties:
        description:
          maxLength: 5000
          minLength: 1
          type: string
        doneWhen:
          maxLength: 1000
          minLength: 1
          pattern: ^[^\r\n]+$
          type: string
        projectId:
          format: uuid
          pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          type: string
        taskConfig:
          additionalProperties: false
          properties:
            agent:
              enum:
              - claude-code
              - codex
              - opencode
              - goose
              - qwen-code
              - pi
              - hlix
              type: string
            funding:
              additionalProperties: false
              properties:
                accountId:
                  anyOf:
                  - maxLength: 200
                    minLength: 1
                    type: string
                  - type: 'null'
                mode:
                  enum:
                  - managed
                  - api_key
                  - subscription
                  type: string
                nativeModel:
                  anyOf:
                  - maxLength: 200
                    minLength: 1
                    type: string
                  - type: 'null'
                providerId:
                  anyOf:
                  - maxLength: 200
                    minLength: 1
                    type: string
                  - type: 'null'
              required:
              - mode
              - accountId
              - nativeModel
              type: object
          type: object
        title:
          maxLength: 200
          minLength: 1
          type: string
      required:
      - projectId
      - description
      type: object
    TaskComment:
      properties:
        author:
          type:
          - string
          - 'null'
        body:
          type: string
        createdAt:
          type: string
        id:
          type: string
        parts:
          items:
            oneOf:
            - properties:
                text:
                  type: string
                type:
                  const: text
                  type: string
              required:
              - type
              - text
              type: object
            - properties:
                text:
                  type: string
                type:
                  const: reasoning
                  type: string
              required:
              - type
              - text
              type: object
            - properties:
                producer:
                  const: roadmap-planner
                  type: string
                spec:
                  additionalProperties: false
                  properties:
                    components:
                      items:
                        additionalProperties: {}
                        properties:
                          component:
                            enum:
                            - Column
                            - Row
                            - Card
                            - Heading
                            - Text
                            - Metric
                            - Status
                            - Progress
                            - Link
                            - Steps
                            - Suggestions
                            - Divider
                            type: string
                          id:
                            minLength: 1
                            type: string
                        required:
                        - id
                        - component
                        type: object
                      maxItems: 200
                      minItems: 1
                      type: array
                    data:
                      additionalProperties: {}
                      propertyNames:
                        type: string
                      type: object
                    surfaceId:
                      maxLength: 128
                      minLength: 1
                      type: string
                  required:
                  - surfaceId
                  - components
                  type: object
                type:
                  const: presentation
                  type: string
              required:
              - type
              - producer
              - spec
              type: object
            - properties:
                error:
                  type: string
                input: {}
                output: {}
                state:
                  enum:
                  - pending
                  - done
                  - error
                  type: string
                toolCallId:
                  minLength: 1
                  type: string
                toolName:
                  minLength: 1
                  type: string
                type:
                  const: tool
                  type: string
              required:
              - type
              - toolCallId
              - toolName
              - state
              type: object
          type: array
        replyTo:
          type: string
        role:
          enum:
          - user
          - assistant
          type: string
        status:
          enum:
          - complete
          - error
          - aborted
          type: string
      required:
      - id
      - body
      - author
      - role
      - createdAt
      type: object
    Task:
      properties:
        agentId:
          type:
          - string
          - 'null'
        billableCostMicros:
          anyOf:
          - format: int64
            maximum: 9007199254740991
            minimum: -9007199254740991
            type: integer
          - type: 'null'
        costMicros:
          anyOf:
          - format: int64
            maximum: 9007199254740991
            minimum: -9007199254740991
            type: integer
          - type: 'null'
        createdAt:
          type: string
        currentStage:
          type:
          - string
          - 'null'
        cycleId:
          type:
          - string
          - 'null'
        deliveryEvidence:
          properties:
            candidateRevision:
              pattern: ^[a-f0-9]{40}$
              type: string
            deliveredRevision:
              pattern: ^[a-f0-9]{40}$
              type: string
            integratedRepos:
              items:
                type: string
              type: array
            integratedRevision:
              pattern: ^[a-f0-9]{40}$
              type: string
            reason:
              enum:
              - awaiting_delivery
              - stale_receipt
              - unknown_evidence
              - required_checks_unmet
              - independent_review_unmet
              - durable_output_missing
              - durable_output_changed
              - durable_output_unknown
              - candidate_changed
              - repository_unknown
              - preview_unmet
              - pull_request_unmet
              - delivery_write_unmet
              type: string
            status:
              enum:
              - delivered
              - unmet
              - unknown
              type: string
          required:
          - status
          type: object
        description:
          type: string
        doingSince:
          type:
          - string
          - 'null'
        doneWhen:
          type:
          - string
          - 'null'
        headSha:
          type:
          - string
          - 'null'
        id:
          type: string
        implementationPlan:
          type:
          - string
          - 'null'
        iteration:
          maximum: 9007199254740991
          minimum: -9007199254740991
          type: integer
        metadata: {}
        note:
          type:
          - string
          - 'null'
        organizationId:
          type: string
        pipeline: {}
        projectId:
          type: string
        repoId:
          type:
          - string
          - 'null'
        requirementsSummary:
          type:
          - string
          - 'null'
        reviewFeedback:
          type:
          - string
          - 'null'
        reviewRounds:
          maximum: 9007199254740991
          minimum: -9007199254740991
          type: integer
        sortOrder:
          maximum: 9007199254740991
          minimum: -9007199254740991
          type: integer
        source:
          enum:
          - operator
          - engineer
          - review
          - platform
          type: string
        status:
          enum:
          - queued
          - blocked
          - building
          - testing
          - reviewing
          - approved
          - merging
          - resolving
          - merged
          - pr_created
          - ci_passing
          - done
          - failed
          type: string
        title:
          type:
          - string
          - 'null'
        updatedAt:
          type: string
      required:
      - id
      - organizationId
      - projectId
      - cycleId
      - repoId
      - agentId
      - title
      - description
      - doneWhen
      - status
      - headSha
      - costMicros
      - billableCostMicros
      - sortOrder
      - iteration
      - reviewRounds
      - reviewFeedback
      - note
      - doingSince
      - source
      - requirementsSummary
      - implementationPlan
      - pipeline
      - currentStage
      - metadata
      - createdAt
      - updatedAt
      type: object
    UpdateTask:
      properties:
        description:
          maxLength: 5000
          minLength: 1
          type: string
        doneWhen:
          anyOf:
          - maxLength: 1000
            minLength: 1
            pattern: ^[^\r\n]+$
            type: string
          - type: 'null'
        status:
          enum:
          - queued
          - blocked
          - building
          - testing
          - reviewing
          - approved
          - merging
          - merged
          - pr_created
          - ci_passing
          - done
          - failed
          type: string
        title:
          maxLength: 200
          minLength: 1
          type: string
      type: object
    ValidationError:
      properties:
        error:
          properties:
            message:
              type: string
            name:
              type: string
          required:
          - name
          - message
          type: object
        success:
          const: false
          type: boolean
      required:
      - success
      - error
      type: object
    AddTaskComment:
      properties:
        body:
          maxLength: 10000
          minLength: 1
          type: string
        messageId:
          format: uuid
          pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          type: string
      required:
      - body
      type: object
  parameters:
    ClientPortal:
      description: The agency Workspace ID for a signed-in client's portal requests. A verified user session and portal membership are required; API keys cannot authenticate portal access. This header does not grant agency administration access.
      in: header
      name: X-Client-Portal
      required: false
      schema:
        type: string
    OrganizationId:
      description: The workspace (organization) to act in. Omitted, the session's active organization is used.
      in: header
      name: X-Organization-Id
      required: false
      schema:
        type: string
      example: YOUR_WORKSPACE_ID
  securitySchemes:
    apiKey:
      description: An API key issued through `/v1/api/auth/api-key/*`. Browser clients can use their session cookie instead.
      in: header
      name: x-api-key
      type: apiKey
    sessionCookie:
      description: The complete session Cookie header issued by sign-in at the selected API host. Cookie names vary by hosting region and environment; preserve the issued name and value. Browsers send these HTTP-only cookies automatically. Session-only operations require this user session and do not accept an API key.
      in: header
      name: Cookie
      type: apiKey