Hlix Packs API

The packs API from Hlix — 6 operation(s) for packs.

GitHub OpenAPI

Operations 11

GET /v1/api/packs List every pack the registry knows #
GET /v1/api/packs/custom-skills List the workspace's own skills #
POST /v1/api/packs/custom-skills Write a custom skill #
POST /v1/api/packs/custom-skills/generate Draft a custom skill without saving it #
DELETE /v1/api/packs/custom-skills/{slug} Delete a custom skill #
GET /v1/api/packs/custom-skills/{slug} Get one custom skill #
PATCH /v1/api/packs/custom-skills/{slug} Update a custom skill #
GET /v1/api/packs/project/{projectId} List a project's attached packs #
POST /v1/api/packs/project/{projectId} Attach a pack to a project #
DELETE /v1/api/packs/{id} Detach a pack from a project #
PATCH /v1/api/packs/{id} Toggle an attached pack #

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-packs-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-packs-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 Packs API
  version: 1.0.0
servers:
- url: https://server.hlix.ai
  description: API server
security:
- apiKey: []
- sessionCookie: []
tags:
- name: Packs
paths:
  /v1/api/packs:
    get:
      operationId: listAvailablePacks
      parameters:
      - description: 'Report attachment state for this project. Without `projectId`, every entry has `isActive: false`; this indicates that no project was selected.'
        in: query
        name: projectId
        required: false
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AvailablePack'
                type: array
          description: The whole registry, with attachment state.
        '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 every pack the registry knows
      tags:
      - Packs
  /v1/api/packs/custom-skills:
    get:
      operationId: listCustomSkills
      parameters:
      - $ref: '#/components/parameters/OrganizationId'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/CustomSkill'
                type: array
          description: Every custom skill, with its markdown.
        '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 the workspace's own skills
      tags:
      - Packs
    post:
      operationId: createCustomSkill
      parameters:
      - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomSkill'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomSkill'
          description: The stored skill.
        '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: The resource does not exist, or the caller is a task-scoped credential and this endpoint is outside its allowlist.
      summary: Write a custom skill
      tags:
      - Packs
  /v1/api/packs/custom-skills/generate:
    post:
      operationId: generateCustomSkill
      parameters:
      - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateCustomSkill'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneratedSkillDraft'
          description: The draft. It only prefills the review form; saving is the caller's explicit act.
        '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: The resource does not exist, or the caller is a task-scoped credential and this endpoint is outside its allowlist.
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The drafting model call failed or timed out. The draft was not produced and nothing was stored.
      summary: Draft a custom skill without saving it
      tags:
      - Packs
  /v1/api/packs/custom-skills/{slug}:
    delete:
      operationId: deleteCustomSkill
      parameters:
      - in: path
        name: slug
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeletedAck'
          description: The skill is gone.
        '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 custom skill with that slug in this workspace.
      summary: Delete a custom skill
      tags:
      - Packs
    get:
      operationId: getCustomSkill
      parameters:
      - in: path
        name: slug
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomSkill'
          description: The skill.
        '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 custom skill with that slug in this workspace.
      summary: Get one custom skill
      tags:
      - Packs
    patch:
      operationId: updateCustomSkill
      parameters:
      - in: path
        name: slug
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomSkill'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomSkill'
          description: The updated skill.
        '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 custom skill with that slug in this workspace.
      summary: Update a custom skill
      tags:
      - Packs
  /v1/api/packs/project/{projectId}:
    get:
      operationId: listProjectPacks
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ProjectPack'
                type: array
          description: The attachment rows, active or not.
        '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 a project's attached packs
      tags:
      - Packs
    post:
      operationId: attachProjectPack
      parameters:
      - in: path
        name: projectId
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActivatePack'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectPack'
          description: The attachment row, active.
        '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: The caller is a client collaborator with project access. Pack configuration is restricted to agency members.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: The project does not exist or the caller has no project grant. Both cases return 404.
      summary: Attach a pack to a project
      tags:
      - Packs
  /v1/api/packs/{id}:
    delete:
      operationId: detachProjectPack
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeletedAck'
          description: The attachment row is gone. The pack itself is untouched.
        '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: The caller is a client collaborator on this pack's project; pack configuration is agency-only.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No such attached pack in this workspace — or the caller is a client collaborator with no access to its project, which answers the same 404 rather than confirming it exists.
      summary: Detach a pack from a project
      tags:
      - Packs
    patch:
      operationId: updateProjectPack
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/OrganizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePack'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectPack'
          description: The updated attachment row.
        '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: The caller is a client collaborator on this pack's project; pack configuration is agency-only.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
          description: No such attached pack in this workspace — or the caller is a client collaborator with no access to its project, which answers the same 404 rather than confirming it exists.
      summary: Toggle an attached pack
      tags:
      - Packs
components:
  schemas:
    ApiError:
      additionalProperties: {}
      properties:
        error:
          type: string
      required:
      - error
      type: object
    GeneratedSkillDraft:
      properties:
        content:
          type: string
        description:
          type: string
        name:
          type: string
      required:
      - name
      - description
      - content
      type: object
    AvailablePack:
      properties:
        agentSlugs:
          items:
            type: string
          type: array
        alwaysOn:
          type: boolean
        category:
          type: string
        description:
          type: string
        isActive:
          type: boolean
        keywords:
          items:
            type: string
          type: array
        name:
          type: string
        projectPackId:
          type:
          - string
          - 'null'
        skillSlugs:
          items:
            type: string
          type: array
        source:
          const: repo
          type: string
        system:
          type: boolean
        version:
          type: string
      required:
      - name
      - version
      - description
      - keywords
      - category
      - skillSlugs
      - agentSlugs
      - isActive
      - projectPackId
      type: object
    CreateCustomSkill:
      properties:
        content:
          minLength: 1
          type: string
        description:
          maxLength: 1000
          minLength: 1
          type: string
        enabled:
          type: boolean
        name:
          maxLength: 200
          minLength: 1
          type: string
        projectIds:
          items:
            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
          maxItems: 100
          type: array
        slug:
          maxLength: 100
          minLength: 1
          pattern: ^[a-z0-9-]+$
          type: string
      required:
      - slug
      - name
      - description
      - content
      type: object
    ActivatePack:
      properties:
        packName:
          maxLength: 100
          minLength: 1
          type: string
      required:
      - packName
      type: object
    GenerateCustomSkill:
      properties:
        context:
          items:
            maxLength: 200
            minLength: 1
            type: string
          maxItems: 10
          type: array
        description:
          maxLength: 2000
          minLength: 1
          type: string
      required:
      - description
      type: object
    CustomSkill:
      properties:
        content:
          type: string
        createdAt:
          type: string
        description:
          type: string
        enabled:
          type: boolean
        id:
          type: string
        name:
          type: string
        organizationId:
          type: string
        projectIds:
          items:
            type: string
          type: array
        slug:
          type: string
        updatedAt:
          type: string
      required:
      - id
      - organizationId
      - slug
      - name
      - description
      - content
      - enabled
      - createdAt
      - updatedAt
      - projectIds
      type: object
    UpdatePack:
      properties:
        isActive:
          type: boolean
      required:
      - isActive
      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
    DeletedAck:
      properties:
        ok:
          const: true
          type: boolean
      required:
      - ok
      type: object
    ProjectPack:
      properties:
        createdAt:
          type: string
        id:
          type: string
        isActive:
          type: boolean
        organizationId:
          type: string
        packName:
          type: string
        projectId:
          type: string
        updatedAt:
          type: string
      required:
      - id
      - organizationId
      - projectId
      - packName
      - isActive
      - createdAt
      - updatedAt
      type: object
    UpdateCustomSkill:
      properties:
        content:
          minLength: 1
          type: string
        description:
          maxLength: 1000
          minLength: 1
          type: string
        enabled:
          type: boolean
        name:
          maxLength: 200
          minLength: 1
          type: string
        projectIds:
          items:
            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
          maxItems: 100
          type: array
      type: object
  parameters:
    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