Non-hierarchical content labels. Tags provide a flat taxonomy for cross-cutting categorization. Unlike categories, tags have no parent/child relationships.

7 endpoints

GET /tags

List tags

Returns all tags for your site with content counts.

Parameters

Name

In

Type

Required

Description

page

query

number

No

Number

limit

query

number

No

Number <= 100

search

query

string

No

Full-text search query

sortBy

query

"created_at" | "updated_at" | "name" | "slug"

No

One of: created_at, updated_at, name, slug

sortOrder

query

"asc" | "desc"

No

One of: asc, desc

dateFrom

query

string

No

Filter from date (ISO 8601)

dateTo

query

string

No

Filter until date (ISO 8601)

slug

query

string

No

URL-friendly identifier, unique per site and locale

slugs

query

string[]

No

Array of strings

ids

query

string[]

No

Array of strings

excludeIds

query

string[]

No

Array of strings

Responses

Status

Description

200

Successful response

401

Unauthorized — invalid or missing API token

403

Forbidden — insufficient permissions

Examples

Bash
curl https://api.lynkow.com/v1/tags \
  -H "Authorization: Bearer $API_TOKEN"

Response Example

JSON
{
  "data": [
    {
      "id": 1,
      "name": "JavaScript",
      "slug": "javascript",
      "locale": "en",
      "contentCount": 15,
      "createdAt": "2025-01-08T10:00:00.000Z"
    },
    {
      "id": 2,
      "name": "Tutorial",
      "slug": "tutorial",
      "locale": "en",
      "contentCount": 23,
      "createdAt": "2025-01-08T10:05:00.000Z"
    },
    {
      "id": 3,
      "name": "API",
      "slug": "api",
      "locale": "en",
      "contentCount": 9,
      "createdAt": "2025-01-15T14:30:00.000Z"
    }
  ],
  "meta": {
    "total": 18,
    "perPage": 15,
    "currentPage": 1,
    "lastPage": 2
  }
}

POST /tags

Create a tag

Creates a new tag. The slug is auto-generated from the name if not provided. Tag names must be unique per site and locale.

Request Body

Content-Type: application/json

Field

Type

Required

Description

name

string

Yes

Required. Display name. 1-255 characters

slug

string

Yes

Required. URL-friendly identifier, unique per site and locale. 1-255 characters

locale

string

No

BCP 47 locale code (e.g. "en", "fr")

Responses

Status

Description

201

Successful response

401

Unauthorized — invalid or missing API token

403

Forbidden — insufficient permissions

422

Validation error

Examples

Bash
curl -X POST https://api.lynkow.com/v1/tags \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "TypeScript",
    "description": "Articles about TypeScript"
  }'

Response Example

JSON
{
  "data": {
    "id": 10,
    "name": "TypeScript",
    "slug": "typescript",
    "description": "Articles about TypeScript",
    "locale": "en",
    "contentCount": 0,
    "createdAt": "2025-04-06T12:00:00.000Z",
    "updatedAt": "2025-04-06T12:00:00.000Z"
  }
}

GET /tags/:id

Get a tag

Returns a single tag with its content count.

Parameters

Name

In

Type

Required

Description

id

path

string

Yes

Unique identifier

Responses

Status

Description

200

Successful response

401

Unauthorized — invalid or missing API token

403

Forbidden — insufficient permissions

404

Not found

Examples

Bash
curl https://api.lynkow.com/v1/tags/1 \
  -H "Authorization: Bearer $API_TOKEN"

Response Example

JSON
{
  "data": {
    "id": 1,
    "name": "JavaScript",
    "slug": "javascript",
    "description": null,
    "locale": "en",
    "contentCount": 15,
    "createdAt": "2025-01-08T10:00:00.000Z",
    "updatedAt": "2025-01-08T10:00:00.000Z"
  }
}

PUT /tags/:id

Update a tag

Updates a tag's name, slug, or description.

Parameters

Name

In

Type

Required

Description

id

path

string

Yes

Unique identifier

Request Body

Content-Type: application/json

Field

Type

Required

Description

name

string

No

Display name. 1-255 characters

slug

string

No

URL-friendly identifier, unique per site and locale. 1-255 characters

Responses

Status

Description

200

Successful response

401

Unauthorized — invalid or missing API token

403

Forbidden — insufficient permissions

404

Not found

422

Validation error

Examples

Bash
curl -X PUT https://api.lynkow.com/v1/tags/1 \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "JS / JavaScript"}'

Response Example

JSON
{
  "data": {
    "id": 1,
    "name": "JS / JavaScript",
    "slug": "javascript",
    "locale": "en",
    "contentCount": 15,
    "createdAt": "2025-01-08T10:00:00.000Z",
    "updatedAt": "2025-04-06T16:00:00.000Z"
  }
}

DELETE /tags/:id

Delete a tag

Deletes a tag. Contents are not affected — they lose the tag association.

Parameters

Name

In

Type

Required

Description

id

path

string

Yes

Unique identifier

Responses

Status

Description

200

Successful response

401

Unauthorized — invalid or missing API token

403

Forbidden — insufficient permissions

404

Not found

Examples

Bash
curl -X DELETE https://api.lynkow.com/v1/tags/10 \
  -H "Authorization: Bearer $API_TOKEN"

Response Example

JSON
{
  "message": "Tag deleted"
}

GET /tags/:id/translations

Get tag translation status

Returns the translation status for this tag across all enabled locales.

Parameters

Name

In

Type

Required

Description

id

path

string

Yes

Unique identifier

Responses

Status

Description

200

Successful response

401

Unauthorized — invalid or missing API token

403

Forbidden — insufficient permissions

404

Not found

Examples

Bash
curl https://api.lynkow.com/v1/tags/1/translations \
  -H "Authorization: Bearer $API_TOKEN"

Response Example

JSON
{
  "data": {
    "en": {
      "status": "complete"
    },
    "fr": {
      "status": "missing"
    },
    "es": {
      "status": "partial"
    }
  }
}

POST /tags/:id/copy-to-locale

Copy tag to another locale

Creates a translated copy of this tag in the target locale.

Parameters

Name

In

Type

Required

Description

id

path

string

Yes

Unique identifier

Request Body

Content-Type: application/json

Field

Type

Required

Description

targetLocale

string

Yes

Required

Responses

Status

Description

200

Successful response

401

Unauthorized — invalid or missing API token

403

Forbidden — insufficient permissions

404

Not found

422

Validation error

Examples

Bash
curl -X POST https://api.lynkow.com/v1/tags/1/copy-to-locale \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"locale": "fr"}'

Response Example

JSON
{
  "data": {
    "id": 50,
    "name": "JavaScript",
    "slug": "javascript",
    "locale": "fr",
    "contentCount": 0,
    "createdAt": "2025-04-06T15:00:00.000Z",
    "updatedAt": "2025-04-06T15:00:00.000Z"
  }
}