---
title: "Create tags."
method: POST
path: "/api/v1/projects/{projectId}/labels"
tags: ["Tags"]
---

# Create tags.

`POST /api/v1/projects/{projectId}/labels`

## Request

- Base URL: `https://app.customgpt.ai`
- URL: `https://app.customgpt.ai/api/v1/projects/{projectId}/labels`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/poll-the-people/apis/customgpt-ai/docs/api/v1/projects/:projectId/labels/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates one or more new tags for document access control. Accepts an array of tag names, allowing bulk creation. After creating tags, assign them to documents and users to control access.

Tags are called *labels* in the API, so paths and fields use `label` (for example `labelId` and `labels`).

Notes: Requires Custom plan.

## Path parameters

- `projectId` integer, required

## Request body

- object
  - `names` string[]: Tag names to create/restore (max 20 characters each, must not start with a digit)

## Response `200`

Create (or restore) tags within a project

- object
  - `status` 'error' | 'success': The status of the response
  - `data` Label[]
    - `id` integer: Tag ID
    - `name` string: Tag name

## Other responses

- `400`: Bad Argument
- `401`: API Token is either missing or invalid
- `403`: Source labeling feature is not enabled for this account.
- `404`: Agent not found
- `429`: Too many requests. You have exceeded your API rate limit.
- `500`: Internal Server Error

## Changes

- **2026-11-03** `77aab4354382`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/poll-the-people/apis/customgpt-ai/changes/api/v1/projects/:projectId/labels/post.md)

---

[API](https://skmtc.dev/poll-the-people/apis/customgpt-ai.md) - [All operations](https://skmtc.dev/poll-the-people/apis/customgpt-ai/llms.txt) - [OpenAPI document](https://skmtc.dev/poll-the-people/apis/customgpt-ai/revisions/77aab4354382?raw)
