Label Studio · Capability

API Reference — subpackage_projects

API Reference — subpackage_projects. 11 operations. Lead operation: List projects. Self-contained Naftiko capability covering one Label Studio business surface.

Run with Naftiko Label Studiosubpackage_projects

What You Can Do

GET
List — List projects
/v1/api/projects
POST
Create — Create a project
/v1/api/projects
GET
Listcounts — List projects' counts
/v1/api/projects/counts
GET
Get — Get project by ID
/v1/api/projects/{id}
DELETE
Delete — Delete project
/v1/api/projects/{id}
PATCH
Update — Update project details
/v1/api/projects/{id}
GET
Listuniqueannotators — List unique annotators for project
/v1/api/projects/{id}/annotators
POST
Duplicate — ✨ Duplicate project
/v1/api/projects/{id}/duplicate
POST
Importtasks — Import tasks
/v1/api/projects/{id}/import
POST
Importpredictions — Import predictions
/v1/api/projects/{id}/import/predictions
POST
Validatelabelconfig — Validate project label config
/v1/api/projects/{id}/validate

MCP Tools

list-projects

List projects

read-only idempotent
create-project

Create a project

list-projects-counts

List projects' counts

read-only idempotent
get-project-id

Get project by ID

read-only idempotent
delete-project

Delete project

idempotent
update-project-details

Update project details

idempotent
list-unique-annotators-project

List unique annotators for project

read-only idempotent
duplicate-project

✨ Duplicate project

import-tasks

Import tasks

import-predictions

Import predictions

validate-project-label-config

Validate project label config

read-only

Capability Spec

label-studio-subpackage-projects.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: API Reference — subpackage_projects
  description: 'API Reference — subpackage_projects. 11 operations. Lead operation: List projects. Self-contained Naftiko
    capability covering one Label Studio business surface.'
  tags:
  - Label Studio
  - subpackage_projects
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    LABEL_STUDIO_API_KEY: LABEL_STUDIO_API_KEY
capability:
  consumes:
  - type: http
    namespace: label-studio-subpackage-projects
    baseUri: http://localhost:8000
    description: API Reference — subpackage_projects business capability. Self-contained, no shared references.
    resources:
    - name: api-projects
      path: /api/projects/
      operations:
      - name: list
        method: GET
        description: List projects
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: archived
          in: query
          type: boolean
          description: Filter by projects that belong to archived workspaces
        - name: filter
          in: query
          type: string
          description: 'Filter projects by pinned status. Use ''pinned_only'' to return only pinned projects, ''exclude_pinned''
            to return only non-pinned projects, or ''all'' to return all '
        - name: ids
          in: query
          type: string
          description: Filter id by in list
        - name: include
          in: query
          type: string
          description: 'Comma-separated list of count fields to include in the response to optimize performance. Available
            fields: task_number, finished_task_number, total_predictions_'
        - name: members_limit
          in: query
          type: integer
          description: Maximum number of members to return
        - name: ordering
          in: query
          type: string
          description: Which field to use when ordering the results.
        - name: page
          in: query
          type: integer
          description: A page number within the paginated result set.
        - name: page_size
          in: query
          type: integer
          description: Number of results to return per page.
        - name: search
          in: query
          type: string
          description: Search term for project title and description
        - name: state
          in: query
          type: string
          description: Filter current_state by exact match
        - name: title
          in: query
          type: string
          description: Filter title by contains (case-insensitive)
        - name: workspaces
          in: query
          type: number
          description: Filter workspaces by exact match
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
      - name: create
        method: POST
        description: Create a project
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: api-projects-counts
      path: /api/projects/counts/
      operations:
      - name: listcounts
        method: GET
        description: List projects' counts
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: archived
          in: query
          type: boolean
          description: Filter by projects that belong to archived workspaces
        - name: filter
          in: query
          type: string
          description: 'Filter projects by pinned status. Use ''pinned_only'' to return only pinned projects, ''exclude_pinned''
            to return only non-pinned projects, or ''all'' to return all '
        - name: ids
          in: query
          type: string
          description: Filter id by in list
        - name: include
          in: query
          type: string
          description: 'Comma-separated list of count fields to include in the response to optimize performance. Available
            fields: task_number, finished_task_number, total_predictions_'
        - name: ordering
          in: query
          type: string
          description: Which field to use when ordering the results.
        - name: page
          in: query
          type: integer
          description: A page number within the paginated result set.
        - name: page_size
          in: query
          type: integer
          description: Number of results to return per page.
        - name: search
          in: query
          type: string
          description: Search term for project title and description
        - name: state
          in: query
          type: string
          description: Filter current_state by exact match
        - name: title
          in: query
          type: string
          description: Filter title by contains (case-insensitive)
        - name: workspaces
          in: query
          type: number
          description: Filter workspaces by exact match
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
    - name: api-projects-id
      path: /api/projects/{id}/
      operations:
      - name: get
        method: GET
        description: Get project by ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: members_limit
          in: query
          type: integer
          description: Maximum number of members to return
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
      - name: delete
        method: DELETE
        description: Delete project
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
      - name: update
        method: PATCH
        description: Update project details
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: members_limit
          in: query
          type: integer
          description: Maximum number of members to return
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: api-projects-id-annotators
      path: /api/projects/{id}/annotators/
      operations:
      - name: listuniqueannotators
        method: GET
        description: List unique annotators for project
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
    - name: api-projects-id-duplicate
      path: /api/projects/{id}/duplicate/
      operations:
      - name: duplicate
        method: POST
        description: ✨ Duplicate project
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: api-projects-id-import
      path: /api/projects/{id}/import
      operations:
      - name: importtasks
        method: POST
        description: Import tasks
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          description: A unique integer value identifying this project.
          required: true
        - name: commit_to_project
          in: query
          type: boolean
          description: Set to "true" to immediately commit tasks to the project.
        - name: preannotated_from_fields
          in: query
          type: array
          description: 'List of fields to preannotate from the task data. For example, if you provide a list of `{"text":
            "text", "prediction": "label"}` items in the request, the syst'
        - name: return_task_ids
          in: query
          type: boolean
          description: Set to "true" to return task IDs in the response.
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: api-projects-id-import-predictions
      path: /api/projects/{id}/import/predictions
      operations:
      - name: importpredictions
        method: POST
        description: Import predictions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          description: A unique integer value identifying this project.
          required: true
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: api-projects-id-validate
      path: /api/projects/{id}/validate/
      operations:
      - name: validatelabelconfig
        method: POST
        description: Validate project label config
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          description: A unique integer value identifying this project.
          required: true
        - name: Authorization
          in: header
          type: string
          description: 'The token (or API key) must be passed as a request header. You can find your user token on the User
            Account page in Label Studio. Example: <br><pre><code class='
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.LABEL_STUDIO_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: label-studio-subpackage-projects-rest
    port: 8080
    description: REST adapter for API Reference — subpackage_projects. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/api/projects
      name: api-projects
      description: REST surface for api-projects.
      operations:
      - method: GET
        name: list
        description: List projects
        call: label-studio-subpackage-projects.list
        with:
          archived: rest.archived
          filter: rest.filter
          ids: rest.ids
          include: rest.include
          members_limit: rest.members_limit
          ordering: rest.ordering
          page: rest.page
          page_size: rest.page_size
          search: rest.search
          state: rest.state
          title: rest.title
          workspaces: rest.workspaces
          Authorization: rest.Authorization
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: create
        description: Create a project
        call: label-studio-subpackage-projects.create
        with:
          Authorization: rest.Authorization
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/projects/counts
      name: api-projects-counts
      description: REST surface for api-projects-counts.
      operations:
      - method: GET
        name: listcounts
        description: List projects' counts
        call: label-studio-subpackage-projects.listcounts
        with:
          archived: rest.archived
          filter: rest.filter
          ids: rest.ids
          include: rest.include
          ordering: rest.ordering
          page: rest.page
          page_size: rest.page_size
          search: rest.search
          state: rest.state
          title: rest.title
          workspaces: rest.workspaces
          Authorization: rest.Authorization
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/projects/{id}
      name: api-projects-id
      description: REST surface for api-projects-id.
      operations:
      - method: GET
        name: get
        description: Get project by ID
        call: label-studio-subpackage-projects.get
        with:
          id: rest.id
          members_limit: rest.members_limit
          Authorization: rest.Authorization
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: delete
        description: Delete project
        call: label-studio-subpackage-projects.delete
        with:
          id: rest.id
          Authorization: rest.Authorization
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: update
        description: Update project details
        call: label-studio-subpackage-projects.update
        with:
          id: rest.id
          members_limit: rest.members_limit
          Authorization: rest.Authorization
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/projects/{id}/annotators
      name: api-projects-id-annotators
      description: REST surface for api-projects-id-annotators.
      operations:
      - method: GET
        name: listuniqueannotators
        description: List unique annotators for project
        call: label-studio-subpackage-projects.listuniqueannotators
        with:
          id: rest.id
          Authorization: rest.Authorization
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/projects/{id}/duplicate
      name: api-projects-id-duplicate
      description: REST surface for api-projects-id-duplicate.
      operations:
      - method: POST
        name: duplicate
        description: ✨ Duplicate project
        call: label-studio-subpackage-projects.duplicate
        with:
          id: rest.id
          Authorization: rest.Authorization
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/projects/{id}/import
      name: api-projects-id-import
      description: REST surface for api-projects-id-import.
      operations:
      - method: POST
        name: importtasks
        description: Import tasks
        call: label-studio-subpackage-projects.importtasks
        with:
          id: rest.id
          commit_to_project: rest.commit_to_project
          preannotated_from_fields: rest.preannotated_from_fields
          return_task_ids: rest.return_task_ids
          Authorization: rest.Authorization
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/projects/{id}/import/predictions
      name: api-projects-id-import-predictions
      description: REST surface for api-projects-id-import-predictions.
      operations:
      - method: POST
        name: importpredictions
        description: Import predictions
        call: label-studio-subpackage-projects.importpredictions
        with:
          id: rest.id
          Authorization: rest.Authorization
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/projects/{id}/validate
      name: api-projects-id-validate
      description: REST surface for api-projects-id-validate.
      operations:
      - method: POST
        name: validatelabelconfig
        description: Validate project label config
        call: label-studio-subpackage-projects.validatelabelconfig
        with:
          id: rest.id
          Authorization: rest.Authorization
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: label-studio-subpackage-projects-mcp
    port: 9090
    transport: http
    description: MCP adapter for API Reference — subpackage_projects. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: list-projects
      description: List projects
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: label-studio-subpackage-projects.list
      with:
        archived: tools.archived
        filter: tools.filter
        ids: tools.ids
        include: tools.include
        members_limit: tools.members_limit
        ordering: tools.ordering
        page: tools.page
        page_size: tools.page_size
        search: tools.search
        state: tools.state
        title: tools.title
        workspaces: tools.workspaces
        Authorization: tools.Authorization
      outputParameters:
      - type: object
        mapping: $.
    - name: create-project
      description: Create a project
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: label-studio-subpackage-projects.create
      with:
        Authorization: tools.Authorization
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-projects-counts
      description: List projects' counts
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: label-studio-subpackage-projects.listcounts
      with:
        archived: tools.archived
        filter: tools.filter
        ids: tools.ids
        include: tools.include
        ordering: tools.ordering
        page: tools.page
        page_size: tools.page_size
        search: tools.search
        state: tools.state
        title: tools.title
        workspaces: tools.workspaces
        Authorization: tools.Authorization
      outputParameters:
      - type: object
        mapping: $.
    - name: get-project-id
      description: Get project by ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: label-studio-subpackage-projects.get
      with:
        id: tools.id
        members_limit: tools.members_limit
        Authorization: tools.Authorization
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-project
      description: Delete project
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: label-studio-subpackage-projects.delete
      with:
        id: tools.id
        Authorization: tools.Authorization
      outputParameters:
      - type: object
        mapping: $.
    - name: update-project-details
      description: Update project details
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: label-studio-subpackage-projects.update
      with:
        id: tools.id
        members_limit: tools.members_limit
        Authorization: tools.Authorization
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-unique-annotators-project
      description: List unique annotators for project
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: label-studio-subpackage-projects.listuniqueannotators
      with:
        id: tools.id
        Authorization: tools.Authorization
      outputParameters:
      - type: object
        mapping: $.
    - name: duplicate-project
      description: ✨ Duplicate project
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: label-studio-subpackage-projects.duplicate
      with:
        id: tools.id
        Authorization: tools.Authorization
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: import-tasks
      description: Import tasks
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: label-studio-subpackage-projects.importtasks
      with:
        id: tools.id
        commit_to_project: tools.commit_to_project
        preannotated_from_fields: tools.preannotated_from_fields
        return_task_ids: tools.return_task_ids
        Authorization: tools.Authorization
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: import-predictions
      description: Import predictions
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: label-studio-subpackage-projects.importpredictions
      with:
        id: tools.id
        Authorization: tools.Authorization
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: validate-project-label-config
      description: Validate project label config
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: label-studio-subpackage-projects.validatelabelconfig
      with:
        id: tools.id
        Authorization: tools.Authorization
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.