Short.io Link Duplication API

The Link Duplication API from Short.io — 1 operation(s) for link duplication.

Operations 1

POST /links/duplicate/{linkId} Duplicate an existing link #

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/short-io:short-io-link-duplication-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

short-io-link-duplication-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Short.io Link Duplication 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 Duplication
paths:
  /links/duplicate/{linkId}:
    post:
      summary: Duplicate an existing link
      tags:
      - Link Duplication
      description: 'Duplicates an existing link with all its properties, targeting rules, and settings.

        The duplicated link will have a new random path (or custom if provided) and be fully independent.


        **Rate limit**: 50/s'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                path:
                  type: string
                  description: Custom path for duplicated link
                  example: my-link-copy
      parameters:
      - schema:
          type: string
          pattern: (?:lnk|link)_\w+_\w+
        example: lnk_1A2b_3Cd4Ef5Gh
        in: path
        name: linkId
        required: true
        description: Encoded link ID string of the source link
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                allOf:
                - allOf:
                  - allOf:
                    - type: object
                      required:
                      - originalURL
                      properties:
                        originalURL:
                          type: string
                          url: destination
                          description: Original URL
                          examples:
                          - https://example.com
                        cloaking:
                          type: boolean
                          description: Cloaking
                        password:
                          type: string
                          description: Link password
                          examples:
                          - s3cur3p@ssw0rd
                        expiresAt:
                          anyOf:
                          - type: integer
                            nullable: true
                          - type: string
                            format: iso-date-time
                            nullable: true
                          description: Link expiration date in milliseconds or ISO string
                          examples:
                          - '2026-10-26T11:51:52.472Z'
                        expiredURL:
                          type: string
                          nullable: true
                          url: destination
                          description: Expired URL
                          examples:
                          - https://example.com/expired
                        title:
                          type: string
                          description: Link title
                        tags:
                          type: array
                          items:
                            type: string
                          description: Array of link tags
                        utmSource:
                          type: string
                          description: set utm_source parameter to destination link
                          examples:
                          - cpc
                          - organic
                        utmMedium:
                          type: string
                          description: set utm_medium parameter to destination link
                          examples:
                          - banner
                          - email
                        utmCampaign:
                          type: string
                          description: set utm_campaign parameter to destination link
                          examples:
                          - summer_sale
                        utmTerm:
                          type: string
                          description: set utm_term parameter to destination link
                          examples:
                          - running_shoes
                        utmContent:
                          type: string
                          description: set utm_content parameter to destination link
                          examples:
                          - cta_button
                        ttl:
                          anyOf:
                          - type: string
                            format: iso-date-time
                            nullable: true
                          - type: integer
                            nullable: true
                          description: Time to live in milliseconds or ISO string
                          examples:
                          - '2026-10-26T11:51:52.472Z'
                        androidURL:
                          type: string
                          url: destination
                          description: Android URL
                          nullable: true
                          examples:
                          - https://play.google.com/store/apps/details?id=com.example.app
                        iphoneURL:
                          type: string
                          url: destination
                          description: iPhone URL
                          nullable: true
                          examples:
                          - https://apps.apple.com/us/app/example-app/id1234567890
                        clicksLimit:
                          type: integer
                          nullable: true
                          minimum: 1
                          description: disable link after specified number of clicks
                          examples:
                          - 100
                        passwordContact:
                          type: boolean
                          description: Provide your email to users to get a password
                          nullable: true
                        skipQS:
                          type: boolean
                          description: Skip query string merging
                          default: false
                        archived:
                          type: boolean
                          description: Link is archived
                          default: false
                        splitURL:
                          type: string
                          url: destination
                          description: Split URL
                          nullable: true
                          examples:
                          - https://example.com/split
                        splitPercent:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 100
                          description: Split URL percentage
                          examples:
                          - 50
                        splitURLV2:
                          type: array
                          items:
                            type: object
                            required:
                            - url
                            - percent
                            properties:
                              url:
                                type: string
                                url: destination
                                description: Split URL destination
                              percent:
                                type: integer
                                minimum: 1
                                maximum: 100
                                description: Traffic percentage
                          description: Split URL configurations for multi-way A/B testing
                          maxItems: 10
                          nullable: true
                        integrationAdroll:
                          type: string
                          description: Adroll integration
                          nullable: true
                        integrationFB:
                          type: string
                          description: Facebook integration
                          nullable: true
                        integrationTT:
                          type: string
                          description: TikTok integration
                          nullable: true
                        integrationGA:
                          type: string
                          description: Google Analytics integration
                          nullable: true
                        integrationGTM:
                          type: string
                          description: Google Tag Manager integration
                          nullable: true
                    - type: object
                      required:
                      - idString
                      - id
                      - shortURL
                      - secureShortURL
                      - path
                      - displayPath
                      - createdAt
                      - updatedAt
                      properties:
                        idString:
                          type: string
                          description: Link ID
                        id:
                          type: string
                          description: Link ID
                        shortURL:
                          type: string
                          url: short
                          description: Short URL
                          examples:
                          - https://short.gy/abc123
                        secureShortURL:
                          type: string
                          url: short
                          description: Secure short URL
                          examples:
                          - https://short.gy/abc123
                        path:
                          anyOf:
                          - type: string
                            description: Link slug. For case-insensitive domains, this is the normalized lowercase version of the path.
                            examples:
                            - my-link
                          - type: 'null'
                        displayPath:
                          anyOf:
                          - type: string
                            description: Original path preserving the case as provided during creation. Set only for case-insensitive domains when the path contains uppercase characters, otherwise null.
                            examples:
                            - My-Link
                          - type: 'null'
                        redirectType:
                          type: string
                          description: HTTP code for redirect
                          enum:
                          - '301'
                          - '302'
                          - '307'
                          - '308'
                        createdAt:
                          anyOf:
                          - type: string
                            format: iso-date-time
                          - type: 'null'
                          description: Link creation date in ISO format
                        updatedAt:
                          anyOf:
                          - type: string
                            format: iso-date-time
                          - type: 'null'
                          description: Link last update date in ISO format
                        FolderId:
                          anyOf:
                          - type: string
                            description: Folder ID
                            examples:
                            - abc123
                          - type: 'null'
                        DomainId:
                          type: integer
                          description: Domain ID
                          examples:
                          - 1
                        OwnerId:
                          type: integer
                          description: Owner ID
                          examples:
                          - 1
                        hasPassword:
                          type: boolean
                          description: Link has password
                          default: false
                        source:
                          enum:
                          - website
                          - api
                          - public
                          - spreadsheets
                          - slack
                          - telegram
                          - ''
                          description: Link source
                          examples:
                          - api
                        pageType:
                          type: integer
                          enum:
                          - 1
                          - 2
                          description: 'Special page type rendered at the short link: 1 = bundle, 2 = post. Absent for normal redirect links.'
                          examples:
                          - 2
                        User:
                          anyOf:
                          - type: object
                            required:
                            - id
                            - name
                            - email
                            - photoURL
                            properties:
                              id:
                                type: integer
                                description: Creator user ID
                                examples:
                                - 123
                              name:
                                anyOf:
                                - type: string
                                  description: Creator name
                                  examples:
                                  - John Doe
                                - type: 'null'
                              email:
                                type: string
                                description: Creator email
                                examples:
                                - a@example.com
                              photoURL:
                                anyOf:
                                - type: string
                                  description: User photo URL
                                  examples:
                                  - https://example.com/photo.jpg
                                - type: 'null'
                          - type: 'null'
                  - type: object
                    properties:
                      success:
                        type: boolean
                        default: true
                      duplicate:
                        type: boolean
                        default: false
                - type: object
                  required:
                  - duplicatedFrom
                  properties:
                    duplicatedFrom:
                      type: string
                      description: Original link's idString
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                properties:
                  message:
                    type: string
                    description: Bad request error message
                  field:
                    type: string
                    description: Field that failed validation
                    example: path
        '401':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                properties:
                  message:
                    type: string
                    description: Unauthorized error message
        '402':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                properties:
                  message:
                    type: string
                    description: Payment required error message
                  field:
                    type: string
                    description: Field that triggered the plan limit
                    example: path
        '403':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                properties:
                  message:
                    type: string
                    description: Access denied error message
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                properties:
                  message:
                    type: string
                    description: Not found error message
        '409':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                properties:
                  message:
                    type: string
                    description: Conflict error message
                  field:
                    type: string
                    description: Field that triggered the conflict
                    example: path
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                required:
                - message
                properties:
                  message:
                    type: string
                    description: Internal server error message
      operationId: createDuplicate
      x-codeSamples:
      - lang: JavaScript
        label: '@short.io/client-node'
        source: "const { data } = await createDuplicate({\n    \"path\": {\n        \"linkId\": \"lnk_1A2b_3Cd4Ef5Gh\"\n    },\n    \"body\": {\n        \"path\": \"my-link-copy\"\n    }\n});\n"
components:
  securitySchemes:
    apiKey:
      type: apiKey
      name: Authorization
      in: header