Short.io Link Bundles API
The Link Bundles API from Short.io — 7 operation(s) for link bundles.
The Link Bundles API from Short.io — 7 operation(s) for link bundles.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/short-io:short-io-link-bundles-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Short.io Link Bundles API
version: 1.0.0
x-scalar-sdk-installation:
- lang: Node
description: 'Install the official **Short.io Node.js SDK** from npm:'
source: npm install @short.io/client-node
servers:
- url: https://api.short.io
description: API server
security:
- apiKey: []
tags:
- name: Link Bundles
paths:
/links/bundle/templates:
get:
summary: Get bundle templates
tags:
- Link Bundles
description: Returns all available bundle templates
responses:
'200':
description: Default Response
operationId: listTemplate
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: 'const { data } = await listTemplate();
'
/links/bundle/{id}:
get:
summary: Get bundle by ID
tags:
- Link Bundles
description: Returns bundle details by ULID id
parameters:
- schema:
type: string
in: path
name: id
required: true
description: Bundle ULID id
responses:
'200':
description: Default Response
operationId: getBundle
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await getBundle({\n \"path\": {\n \"id\": \"string\"\n }\n});\n"
put:
summary: Update bundle
tags:
- Link Bundles
description: Updates bundle details, social media links, and branding
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
DomainId:
type: number
description: Domain ID the bundle belongs to
example: 12345
TemplateId:
type: string
nullable: true
description: Template ID
title:
type: string
nullable: true
description: Bundle title
description:
type: string
nullable: true
description: Bundle description
logoURL:
type: string
nullable: true
description: Profile or logo URL
backgroundImageURL:
type: string
nullable: true
description: Background image URL
twitterUsername:
type: string
nullable: true
description: Twitter username (without @)
fbUsername:
type: string
nullable: true
description: Facebook username
linkedinCompanyname:
type: string
nullable: true
description: LinkedIn company name (mutually exclusive with linkedinUsername)
linkedinUsername:
type: string
nullable: true
description: LinkedIn username (mutually exclusive with linkedinCompanyname)
instagramUsername:
type: string
nullable: true
description: Instagram username (without @)
whatsappURL:
type: string
nullable: true
description: WhatsApp URL (must start with whatsapp:// or https://)
viberURL:
type: string
nullable: true
description: Viber URL (must start with viber:// or https://)
telegramURL:
type: string
nullable: true
description: Telegram URL
threadsUsername:
type: string
nullable: true
description: Threads username (without @)
mastodonUsername:
type: string
nullable: true
description: Mastodon username
blueskyUsername:
type: string
nullable: true
description: Bluesky username
email:
type: string
nullable: true
format: email
description: Contact email address
parameters:
- schema:
type: string
in: path
name: id
required: true
description: Bundle ULID id
responses:
'200':
description: Default Response
operationId: updateBundle
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await updateBundle({\n \"path\": {\n \"id\": \"string\"\n },\n \"body\": {\n \"DomainId\": 12345,\n \"TemplateId\": \"string\",\n \"title\": \"string\",\n \"description\": \"string\",\n \"logoURL\": \"string\",\n \"backgroundImageURL\": \"string\",\n \"twitterUsername\": \"string\",\n \"fbUsername\": \"string\",\n \"linkedinCompanyname\": \"string\",\n \"linkedinUsername\": \"string\",\n \"instagramUsername\": \"string\",\n \"whatsappURL\": \"string\",\n \"viberURL\": \"string\",\n \"telegramURL\": \"string\",\n \"threadsUsername\": \"string\",\n \"mastodonUsername\": \"string\",\n \"blueskyUsername\": \"string\",\n \"email\": \"user@example.com\"\n }\n});\n"
delete:
summary: Delete bundle
tags:
- Link Bundles
description: Deletes a bundle by ULID id
parameters:
- schema:
type: string
in: path
name: id
required: true
description: Bundle ULID id
responses:
'200':
description: Default Response
operationId: deleteBundle
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await deleteBundle({\n \"path\": {\n \"id\": \"string\"\n }\n});\n"
/links/bundle/{id}/photo:
post:
summary: Upload bundle logo
tags:
- Link Bundles
description: Uploads a logo image for a bundle
requestBody:
required: true
content:
application/json:
schema:
description: Raw logo image bytes
description: Raw logo image bytes
parameters:
- schema:
type: string
in: path
name: id
required: true
description: Bundle ULID id
responses:
'200':
description: Default Response
operationId: createPhoto
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await createPhoto({\n \"path\": {\n \"id\": \"string\"\n }\n});\n"
/links/bundle/{id}/background-image:
put:
summary: Upload bundle background image
tags:
- Link Bundles
description: Uploads a background image for a bundle
requestBody:
required: true
content:
application/json:
schema:
description: Raw background image bytes
description: Raw background image bytes
parameters:
- schema:
type: string
in: path
name: id
required: true
description: Bundle ULID id
responses:
'200':
description: Default Response
operationId: updateBackgroundImage
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await updateBackgroundImage({\n \"path\": {\n \"id\": \"string\"\n }\n});\n"
/links/bundle:
post:
summary: Create bundle
tags:
- Link Bundles
description: Creates a new link bundle with customizable template, social media links, and branding
requestBody:
required: true
content:
application/json:
schema:
allOf:
- type: object
required:
- DomainId
- TemplateId
properties:
DomainId:
type: number
description: Domain ID where the bundle will be created
TemplateId:
type: string
description: Template ID from available templates
- type: object
properties:
title:
type: string
nullable: true
description: Bundle title
description:
type: string
nullable: true
description: Bundle description
logoURL:
type: string
nullable: true
description: Profile or logo URL
backgroundImageURL:
type: string
nullable: true
description: Background image URL
twitterUsername:
type: string
nullable: true
description: Twitter username (without @)
fbUsername:
type: string
nullable: true
description: Facebook username
linkedinCompanyname:
type: string
nullable: true
description: LinkedIn company name (mutually exclusive with linkedinUsername)
linkedinUsername:
type: string
nullable: true
description: LinkedIn username (mutually exclusive with linkedinCompanyname)
instagramUsername:
type: string
nullable: true
description: Instagram username (without @)
whatsappURL:
type: string
nullable: true
description: WhatsApp URL (must start with whatsapp:// or https://)
viberURL:
type: string
nullable: true
description: Viber URL (must start with viber:// or https://)
telegramURL:
type: string
nullable: true
description: Telegram URL
threadsUsername:
type: string
nullable: true
description: Threads username (without @)
mastodonUsername:
type: string
nullable: true
description: Mastodon username
blueskyUsername:
type: string
nullable: true
description: Bluesky username
email:
type: string
nullable: true
format: email
description: Contact email address
responses:
'200':
description: Default Response
operationId: createBundle
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await createBundle({\n \"body\": {\n \"DomainId\": 0,\n \"TemplateId\": \"string\",\n \"title\": \"string\",\n \"description\": \"string\",\n \"logoURL\": \"string\",\n \"backgroundImageURL\": \"string\",\n \"twitterUsername\": \"string\",\n \"fbUsername\": \"string\",\n \"linkedinCompanyname\": \"string\",\n \"linkedinUsername\": \"string\",\n \"instagramUsername\": \"string\",\n \"whatsappURL\": \"string\",\n \"viberURL\": \"string\",\n \"telegramURL\": \"string\",\n \"threadsUsername\": \"string\",\n \"mastodonUsername\": \"string\",\n \"blueskyUsername\": \"string\",\n \"email\": \"user@example.com\"\n }\n});\n"
/links/bundle/{id}/links:
get:
summary: Get bundle links
tags:
- Link Bundles
description: Returns all links in a bundle, ordered by sort order
parameters:
- schema:
type: string
in: path
name: id
required: true
description: Bundle ULID id
responses:
'200':
description: Default Response
operationId: listLink
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await listLink({\n \"path\": {\n \"id\": \"string\"\n }\n});\n"
post:
summary: Add link to bundle
tags:
- Link Bundles
description: Adds a short link to a bundle. If the link doesn't exist, it will be created.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- path
- title
properties:
path:
type: string
description: Short link path or full URL
title:
type: string
description: Display title for the link
parameters:
- schema:
type: string
in: path
name: id
required: true
description: Bundle ULID id
responses:
'200':
description: Default Response
operationId: createLink
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await createLink({\n \"path\": {\n \"id\": \"string\"\n },\n \"body\": {\n \"path\": \"string\",\n \"title\": \"string\"\n }\n});\n"
patch:
summary: Update link sort order
tags:
- Link Bundles
description: Updates the sort order of links in a bundle
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
required:
- id
- sortOrder
properties:
id:
type: string
description: Link template ID
sortOrder:
type: number
description: New sort order position
parameters:
- schema:
type: string
in: path
name: id
required: true
description: Bundle ULID id
responses:
'200':
description: Default Response
operationId: updateLink
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await updateLink({\n \"path\": {\n \"id\": \"string\"\n },\n \"body\": [\n {\n \"id\": \"string\",\n \"sortOrder\": 0\n }\n ]\n});\n"
/links/bundle/{id}/links/{linkTemplateId}:
delete:
summary: Remove link from bundle
tags:
- Link Bundles
description: Removes a link from a bundle by its link template ID
parameters:
- schema:
type: string
in: path
name: id
required: true
description: Bundle ULID id
- schema:
type: string
in: path
name: linkTemplateId
required: true
description: Link template ID to remove
responses:
'200':
description: Default Response
operationId: deleteLink
x-codeSamples:
- lang: JavaScript
label: '@short.io/client-node'
source: "const { data } = await deleteLink({\n \"path\": {\n \"id\": \"string\",\n \"linkTemplateId\": \"string\"\n }\n});\n"
components:
securitySchemes:
apiKey:
type: apiKey
name: Authorization
in: header