---
title: "Create up to 1000 links in one call"
method: POST
path: "/links/bulk"
tags: ["Link Management"]
---

# Create up to 1000 links in one call

`POST /links/bulk`

## Request

- Base URL: `https://api.short.io`
- URL: `https://api.short.io/links/bulk`
- Auth: API key in header `Authorization`

Please use this method if you need to create big packs of links. It
accepts up to 1000 links in one API call.

It works almost the same as single link creation endpoint, but accepts
an array of URLs and returns an array of responses.

Returns list of Link objects. If any URL is failed to insert, it returns
error object instead as array element. Method is not transactional – it
can insert some links from the list and return an error for others.

Returns 404 if the domain does not exist in your organization.

**Rate limit**: 5 queries in 10 seconds

## Request body

- object
  - `domain` string, hostname, required: Domain hostname
  - `allowDuplicates` boolean: Allow duplicate destinations across the batch
  - `links` object[], required: Links to create (up to 1000)
    - `originalURL` string, required: Original URL
    - `cloaking` boolean: Cloaking
    - `password` string: Link password
    - `redirectType` 301 | 302 | 307 | 308, nullable: HTTP code for redirect
    - `expiresAt` union: Link expiration date in milliseconds or ISO string
      - integer, nullable
      - string, iso-date-time, nullable
    - `expiredURL` string, nullable: Expired URL
    - `title` string: Link title
    - `tags` string[]: Array of link tags
    - `utmSource` string: set utm_source parameter to destination link
    - `utmMedium` string: set utm_medium parameter to destination link
    - `utmCampaign` string: set utm_campaign parameter to destination link
    - `utmTerm` string: set utm_term parameter to destination link
    - `utmContent` string: set utm_content parameter to destination link
    - `ttl` union: Time to live in milliseconds or ISO string
      - string, iso-date-time, nullable
      - integer, nullable
    - `path` string, nullable: Link slug. For case-insensitive domains, the path is normalized to lowercase and the original value is preserved in displayPath.
    - `androidURL` string, nullable: Android URL
    - `iphoneURL` string, nullable: iPhone URL
    - `createdAt` union: Link creation date in milliseconds
      - integer, nullable
      - string, iso-date-time, nullable
    - `clicksLimit` integer, nullable: disable link after specified number of clicks
    - `passwordContact` boolean, nullable: Provide your email to users to get a password
    - `skipQS` boolean: Skip query string merging
    - `archived` boolean: Link is archived
    - `splitURL` string, nullable: Split URL
    - `splitPercent` integer, nullable: Split URL percentage
    - `splitURLV2` object[], nullable: Split URL configurations for multi-way A/B testing
      - `percent` integer, required: Traffic percentage
    - `integrationAdroll` string, nullable: Adroll integration
    - `integrationFB` string, nullable: Facebook integration
    - `integrationTT` string, nullable: TikTok integration
    - `integrationGA` string, nullable: Google Analytics integration
    - `integrationGTM` string, nullable: Google Tag Manager integration
  - `folderId` string: Folder ID

## Response `200`

Default Response

---

[API](https://skmtc.dev/short/apis/short-io-api-2.md) · [All operations](https://skmtc.dev/short/apis/short-io-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/short/apis/short-io-api-2/revisions/9e4e60c560b1?raw)
