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.
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
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: $.