Shlink Tags API

Let you handle the list of available tags

Operations 4

GET /rest/v{version}/tags List existing tags #
PUT /rest/v{version}/tags Rename tag #
DELETE /rest/v{version}/tags Delete tags #
GET /rest/v{version}/tags/stats Get tags with stats #

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/shlink:shlink-tags-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

shlink-tags-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Shlink Tags API
  version: '3.0'
  description: 'Operations tagged Tags across 3 of this provider''s published API definitions: shlink-openapi-v5.1.4.json, shlink-openapi-v5.1.0.json, shlink-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: '{scheme}://{host}'
  variables:
    scheme:
      enum:
      - https
      - http
      default: https
    host:
      default: ''
tags:
- name: Tags
  description: Let you handle the list of available tags
paths:
  /rest/v{version}/tags:
    get:
      tags:
      - Tags
      summary: List existing tags
      description: Returns the list of all tags used in any short URL
      operationId: listTags
      parameters:
      - name: version
        in: path
        description: The API version to be consumed
        required: true
        schema:
          enum:
          - '3'
          - '2'
          - '1'
          type: string
      - name: page
        in: query
        description: The page to display. Defaults to 1
        required: false
        schema:
          type: number
      - name: itemsPerPage
        in: query
        description: The amount of items to return on every page. Defaults to all the items
        required: false
        schema:
          type: number
      - name: searchTerm
        in: query
        description: A query used to filter results by searching for it on the tag name.
        required: false
        schema:
          type: string
      - name: orderBy
        in: query
        description: To determine how to order the results.
        required: false
        schema:
          enum:
          - tag-ASC
          - tag-DESC
          type: string
      responses:
        '200':
          description: The list of tags
          content:
            application/json:
              schema:
                type: object
                properties:
                  tags:
                    required:
                    - data
                    type: object
                    properties:
                      data:
                        type: array
                        items:
                          type: string
                      pagination:
                        type: object
                        properties:
                          currentPage:
                            type: integer
                            description: The number of current page.
                          pagesCount:
                            type: integer
                            description: The total number of pages that can be obtained.
                          itemsPerPage:
                            type: integer
                            description: The number of items for every page.
                          itemsInCurrentPage:
                            type: integer
                            description: The number of items in current page (could be smaller than itemsPerPage).
                          totalItems:
                            type: integer
                            description: The total number of items among all pages.
              example:
                tags:
                  data:
                  - games
                  - php
                  - shlink
                  - tech
                  pagination:
                    currentPage: 5
                    pagesCount: 10
                    itemsPerPage: 4
                    itemsInCurrentPage: 4
                    totalItems: 38
        default:
          description: Unexpected error.
          content:
            application/problem+json:
              schema:
                required:
                - type
                - title
                - detail
                - status
                type: object
                properties:
                  type:
                    type: string
                    description: A machine unique code
                  title:
                    type: string
                    description: A unique title
                  detail:
                    type: string
                    description: A human-friendly error description
                  status:
                    type: number
                    description: HTTP response status code
      security:
      - ApiKey: []
    put:
      tags:
      - Tags
      summary: Rename tag
      description: Renames one existing tag
      operationId: renameTag
      parameters:
      - name: version
        in: path
        description: The API version to be consumed
        required: true
        schema:
          enum:
          - '3'
          - '2'
          - '1'
          type: string
      requestBody:
        description: Request body.
        content:
          application/json:
            schema:
              required:
              - oldName
              - newName
              type: object
              properties:
                oldName:
                  type: string
                  description: Current name of the tag
                newName:
                  type: string
                  description: New name of the tag
        required: true
      responses:
        '204':
          description: The tag has been properly renamed
        '400':
          description: You have not provided either the oldName or the newName params.
          content:
            application/problem+json:
              schema:
                required:
                - type
                - title
                - detail
                - status
                type: object
                properties:
                  type:
                    type: string
                    description: A machine unique code
                  title:
                    type: string
                    description: A unique title
                  detail:
                    type: string
                    description: A human-friendly error description
                  status:
                    type: number
                    description: HTTP response status code
              examples:
                API v3 and newer:
                  value:
                    title: Invalid data
                    type: https://shlink.io/api/error/invalid-data
                    detail: Provided data is not valid
                    status: 400
                    invalidElements:
                    - oldName
                    - newName
                Previous to API v3:
                  value:
                    title: Invalid data
                    type: INVALID_ARGUMENT
                    detail: Provided data is not valid
                    status: 400
                    invalidElements:
                    - oldName
                    - newName
        '403':
          description: The API key you used does not have permissions to rename tags.
          content:
            application/problem+json:
              schema:
                required:
                - type
                - title
                - detail
                - status
                type: object
                properties:
                  type:
                    type: string
                    description: A machine unique code
                  title:
                    type: string
                    description: A unique title
                  detail:
                    type: string
                    description: A human-friendly error description
                  status:
                    type: number
                    description: HTTP response status code
              examples:
                API v3 and newer:
                  value:
                    detail: You are not allowed to rename tags
                    title: Forbidden tag operation
                    type: https://shlink.io/api/error/forbidden-tag-operation
                    status: 403
                Previous to API v3:
                  value:
                    detail: You are not allowed to rename tags
                    title: Forbidden tag operation
                    type: FORBIDDEN_OPERATION
                    status: 403
        '404':
          description: There's no tag found with the name provided in oldName param.
          content:
            application/problem+json:
              schema:
                required:
                - type
                - title
                - detail
                - status
                type: object
                properties:
                  type:
                    type: string
                    description: A machine unique code
                  title:
                    type: string
                    description: A unique title
                  detail:
                    type: string
                    description: A human-friendly error description
                  status:
                    type: number
                    description: HTTP response status code
              examples:
                API v3 and newer:
                  value:
                    detail: Tag with name "foo" could not be found
                    title: Tag not found
                    type: https://shlink.io/api/error/tag-not-found
                    status: 404
                    tag: foo
        '409':
          description: The name provided in newName param is already in use for another tag.
          content:
            application/problem+json:
              schema:
                required:
                - type
                - title
                - detail
                - status
                type: object
                properties:
                  type:
                    type: string
                    description: A machine unique code
                  title:
                    type: string
                    description: A unique title
                  detail:
                    type: string
                    description: A human-friendly error description
                  status:
                    type: number
                    description: HTTP response status code
              examples:
                API v3 and newer:
                  value:
                    detail: You cannot rename tag foo, because it already exists
                    title: Tag conflict
                    type: https://shlink.io/api/error/tag-conflict
                    status: 409
                    oldName: bar
                    newName: foo
                Previous to API v3:
                  value:
                    detail: You cannot rename tag foo, because it already exists
                    title: Tag conflict
                    type: TAG_CONFLICT
                    status: 409
                    oldName: bar
                    newName: foo
        default:
          description: Unexpected error.
          content:
            application/problem+json:
              schema:
                required:
                - type
                - title
                - detail
                - status
                type: object
                properties:
                  type:
                    type: string
                    description: A machine unique code
                  title:
                    type: string
                    description: A unique title
                  detail:
                    type: string
                    description: A human-friendly error description
                  status:
                    type: number
                    description: HTTP response status code
      security:
      - ApiKey: []
    delete:
      tags:
      - Tags
      summary: Delete tags
      description: Deletes provided list of tags
      operationId: deleteTags
      parameters:
      - name: version
        in: path
        description: The API version to be consumed
        required: true
        schema:
          enum:
          - '3'
          - '2'
          - '1'
          type: string
      - name: tags[]
        in: query
        description: The names of the tags to delete
        required: true
        schema:
          type: array
          items:
            type: string
      responses:
        '204':
          description: Tags properly deleted
        '403':
          description: The API key you used does not have permissions to delete tags.
          content:
            application/problem+json:
              schema:
                required:
                - type
                - title
                - detail
                - status
                type: object
                properties:
                  type:
                    type: string
                    description: A machine unique code
                  title:
                    type: string
                    description: A unique title
                  detail:
                    type: string
                    description: A human-friendly error description
                  status:
                    type: number
                    description: HTTP response status code
              examples:
                API v3 and newer:
                  value:
                    detail: You are not allowed to delete tags
                    title: Forbidden tag operation
                    type: https://shlink.io/api/error/forbidden-tag-operation
                    status: 403
                Previous to API v3:
                  value:
                    detail: You are not allowed to delete tags
                    title: Forbidden tag operation
                    type: FORBIDDEN_OPERATION
                    status: 403
        default:
          description: Unexpected error.
          content:
            application/problem+json:
              schema:
                required:
                - type
                - title
                - detail
                - status
                type: object
                properties:
                  type:
                    type: string
                    description: A machine unique code
                  title:
                    type: string
                    description: A unique title
                  detail:
                    type: string
                    description: A human-friendly error description
                  status:
                    type: number
                    description: HTTP response status code
      security:
      - ApiKey: []
    servers:
    - url: '{scheme}://{host}'
      variables:
        scheme:
          enum:
          - https
          - http
          default: https
        host:
          default: ''
  /rest/v{version}/tags/stats:
    get:
      tags:
      - Tags
      summary: Get tags with stats
      description: Returns the list of all tags used in any short URL, together with the amount of short URLs and visits for it
      operationId: tagsWithStats
      parameters:
      - name: version
        in: path
        description: The API version to be consumed
        required: true
        schema:
          enum:
          - '3'
          - '2'
          - '1'
          type: string
      - name: page
        in: query
        description: The page to display. Defaults to 1
        required: false
        schema:
          type: number
      - name: itemsPerPage
        in: query
        description: The amount of items to return on every page. Defaults to all the items
        required: false
        schema:
          type: number
      - name: searchTerm
        in: query
        description: A query used to filter results by searching for it on the tag name.
        required: false
        schema:
          type: string
      - name: orderBy
        in: query
        description: To determine how to order the results.<br /><br />**Important!** Ordering by `shortUrlsCount`, `visits` or `nonBotVisits` has a [known performance issue](https://github.com/shlinkio/shlink/issues/1346) which makes loading a subset of the list take as much as loading the whole list.<br />If you plan to order by any of these fields, it's worth loading the whole list with no pagination.
        required: false
        schema:
          enum:
          - tag-ASC
          - tag-DESC
          - shortUrlsCount-ASC
          - shortUrlsCount-DESC
          - visits-ASC
          - visits-DESC
          - nonBotVisits-ASC
          - nonBotVisits-DESC
          type: string
      responses:
        '200':
          description: The list of tags
          content:
            application/json:
              schema:
                type: object
                properties:
                  tags:
                    required:
                    - data
                    type: object
                    properties:
                      data:
                        type: array
                        items:
                          required:
                          - tag
                          - shortUrlsCount
                          - visitsSummary
                          type: object
                          properties:
                            tag:
                              type: string
                              description: The unique tag name
                            shortUrlsCount:
                              type: number
                              description: The amount of short URLs using this tag
                            visitsSummary:
                              required:
                              - total
                              - nonBots
                              - bots
                              type: object
                              properties:
                                total:
                                  type: integer
                                  description: The total amount of visits.
                                nonBots:
                                  type: integer
                                  description: The amount of visits which were not identified as bots.
                                bots:
                                  type: integer
                                  description: The amount of visits that were identified as potential bots.
                      pagination:
                        type: object
                        properties:
                          currentPage:
                            type: integer
                            description: The number of current page.
                          pagesCount:
                            type: integer
                            description: The total number of pages that can be obtained.
                          itemsPerPage:
                            type: integer
                            description: The number of items for every page.
                          itemsInCurrentPage:
                            type: integer
                            description: The number of items in current page (could be smaller than itemsPerPage).
                          totalItems:
                            type: integer
                            description: The total number of items among all pages.
              example:
                tags:
                  data:
                  - tag: games
                    shortUrlsCount: 10
                    visitsSummary:
                      total: 521
                      nonBots: 521
                      bots: 0
                  - tag: shlink
                    shortUrlsCount: 7
                    visitsSummary:
                      total: 1087
                      nonBots: 1000
                      bots: 87
                  pagination:
                    currentPage: 5
                    pagesCount: 5
                    itemsPerPage: 10
                    itemsInCurrentPage: 2
                    totalItems: 42
        default:
          description: Unexpected error.
          content:
            application/problem+json:
              schema:
                required:
                - type
                - title
                - detail
                - status
                type: object
                properties:
                  type:
                    type: string
                    description: A machine unique code
                  title:
                    type: string
                    description: A unique title
                  detail:
                    type: string
                    description: A human-friendly error description
                  status:
                    type: number
                    description: HTTP response status code
      security:
      - ApiKey: []
    servers:
    - url: '{scheme}://{host}'
      variables:
        scheme:
          enum:
          - https
          - http
          default: https
        host:
          default: ''
components:
  securitySchemes:
    ApiKey:
      type: apiKey
      description: A valid shlink API key
      name: X-Api-Key
      in: header
externalDocs:
  description: Find more info on how to start using this API here
  url: https://shlink.io/documentation/api-docs
x-refined-from:
- shlink-openapi-v5.1.4.json
- shlink-openapi-v5.1.0.json
- shlink-openapi.json