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