Bulk create links
curl --request POST \
--url https://biq.li/api/v1/link/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"links": [
{
"long_url": "https://example.com/product",
"name": "<string>",
"external_id": "<string>",
"domain_id": "<string>",
"alias": "<string>",
"active": true,
"password": "<string>",
"activates_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"exp_clicks_rule": {
"key": 2,
"value": "<string>"
},
"utm": "source=newsletter&medium=email&campaign=summer",
"geo_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"device_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"platform_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"folder_ids": [
"<string>"
],
"pixel_ids": [
"<string>"
],
"tag_ids": [
"<string>"
],
"conversion_tracking_enabled": false,
"allow_search_engine_indexing": false,
"proxy": false,
"title": "<string>",
"description": "<string>",
"image": "<string>",
"create_qr_code": false,
"qr_logo": "app"
}
]
}
'import requests
url = "https://biq.li/api/v1/link/bulk"
payload = { "links": [
{
"long_url": "https://example.com/product",
"name": "<string>",
"external_id": "<string>",
"domain_id": "<string>",
"alias": "<string>",
"active": True,
"password": "<string>",
"activates_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"exp_clicks_rule": {
"key": 2,
"value": "<string>"
},
"utm": "source=newsletter&medium=email&campaign=summer",
"geo_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"device_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"platform_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"folder_ids": ["<string>"],
"pixel_ids": ["<string>"],
"tag_ids": ["<string>"],
"conversion_tracking_enabled": False,
"allow_search_engine_indexing": False,
"proxy": False,
"title": "<string>",
"description": "<string>",
"image": "<string>",
"create_qr_code": False,
"qr_logo": "app"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
links: [
{
long_url: 'https://example.com/product',
name: '<string>',
external_id: '<string>',
domain_id: '<string>',
alias: '<string>',
active: true,
password: '<string>',
activates_at: '2023-11-07T05:31:56Z',
expires_at: '2023-11-07T05:31:56Z',
exp_clicks_rule: {key: 2, value: '<string>'},
utm: 'source=newsletter&medium=email&campaign=summer',
geo_rules: [{key: '<string>', value: '<string>'}],
device_rules: [{key: '<string>', value: '<string>'}],
platform_rules: [{key: '<string>', value: '<string>'}],
folder_ids: ['<string>'],
pixel_ids: ['<string>'],
tag_ids: ['<string>'],
conversion_tracking_enabled: false,
allow_search_engine_indexing: false,
proxy: false,
title: '<string>',
description: '<string>',
image: '<string>',
create_qr_code: false,
qr_logo: 'app'
}
]
})
};
fetch('https://biq.li/api/v1/link/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://biq.li/api/v1/link/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'links' => [
[
'long_url' => 'https://example.com/product',
'name' => '<string>',
'external_id' => '<string>',
'domain_id' => '<string>',
'alias' => '<string>',
'active' => true,
'password' => '<string>',
'activates_at' => '2023-11-07T05:31:56Z',
'expires_at' => '2023-11-07T05:31:56Z',
'exp_clicks_rule' => [
'key' => 2,
'value' => '<string>'
],
'utm' => 'source=newsletter&medium=email&campaign=summer',
'geo_rules' => [
[
'key' => '<string>',
'value' => '<string>'
]
],
'device_rules' => [
[
'key' => '<string>',
'value' => '<string>'
]
],
'platform_rules' => [
[
'key' => '<string>',
'value' => '<string>'
]
],
'folder_ids' => [
'<string>'
],
'pixel_ids' => [
'<string>'
],
'tag_ids' => [
'<string>'
],
'conversion_tracking_enabled' => false,
'allow_search_engine_indexing' => false,
'proxy' => false,
'title' => '<string>',
'description' => '<string>',
'image' => '<string>',
'create_qr_code' => false,
'qr_logo' => 'app'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://biq.li/api/v1/link/bulk"
payload := strings.NewReader("{\n \"links\": [\n {\n \"long_url\": \"https://example.com/product\",\n \"name\": \"<string>\",\n \"external_id\": \"<string>\",\n \"domain_id\": \"<string>\",\n \"alias\": \"<string>\",\n \"active\": true,\n \"password\": \"<string>\",\n \"activates_at\": \"2023-11-07T05:31:56Z\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"exp_clicks_rule\": {\n \"key\": 2,\n \"value\": \"<string>\"\n },\n \"utm\": \"source=newsletter&medium=email&campaign=summer\",\n \"geo_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"device_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"platform_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"folder_ids\": [\n \"<string>\"\n ],\n \"pixel_ids\": [\n \"<string>\"\n ],\n \"tag_ids\": [\n \"<string>\"\n ],\n \"conversion_tracking_enabled\": false,\n \"allow_search_engine_indexing\": false,\n \"proxy\": false,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"create_qr_code\": false,\n \"qr_logo\": \"app\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://biq.li/api/v1/link/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"links\": [\n {\n \"long_url\": \"https://example.com/product\",\n \"name\": \"<string>\",\n \"external_id\": \"<string>\",\n \"domain_id\": \"<string>\",\n \"alias\": \"<string>\",\n \"active\": true,\n \"password\": \"<string>\",\n \"activates_at\": \"2023-11-07T05:31:56Z\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"exp_clicks_rule\": {\n \"key\": 2,\n \"value\": \"<string>\"\n },\n \"utm\": \"source=newsletter&medium=email&campaign=summer\",\n \"geo_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"device_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"platform_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"folder_ids\": [\n \"<string>\"\n ],\n \"pixel_ids\": [\n \"<string>\"\n ],\n \"tag_ids\": [\n \"<string>\"\n ],\n \"conversion_tracking_enabled\": false,\n \"allow_search_engine_indexing\": false,\n \"proxy\": false,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"create_qr_code\": false,\n \"qr_logo\": \"app\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://biq.li/api/v1/link/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"links\": [\n {\n \"long_url\": \"https://example.com/product\",\n \"name\": \"<string>\",\n \"external_id\": \"<string>\",\n \"domain_id\": \"<string>\",\n \"alias\": \"<string>\",\n \"active\": true,\n \"password\": \"<string>\",\n \"activates_at\": \"2023-11-07T05:31:56Z\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"exp_clicks_rule\": {\n \"key\": 2,\n \"value\": \"<string>\"\n },\n \"utm\": \"source=newsletter&medium=email&campaign=summer\",\n \"geo_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"device_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"platform_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"folder_ids\": [\n \"<string>\"\n ],\n \"pixel_ids\": [\n \"<string>\"\n ],\n \"tag_ids\": [\n \"<string>\"\n ],\n \"conversion_tracking_enabled\": false,\n \"allow_search_engine_indexing\": false,\n \"proxy\": false,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"create_qr_code\": false,\n \"qr_logo\": \"app\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"index": 1,
"status": "success",
"link": {
"id": "<string>",
"external_id": "<string>",
"short_url": "<string>",
"long_url": "<string>",
"name": "<string>",
"domain_id": "<string>",
"alias": "<string>",
"active": true,
"has_password": true,
"activates_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"exp_clicks_rule": {
"key": 2,
"value": "<string>"
},
"utm": "<string>",
"geo_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"device_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"platform_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"folder_ids": [
"<string>"
],
"pixel_ids": [
"<string>"
],
"tag_ids": [
"<string>"
],
"conversion_tracking_enabled": true,
"allow_search_engine_indexing": true,
"proxy": true,
"title": "<string>",
"description": "<string>",
"image": "<string>",
"qr_code": {
"url": "<string>",
"format": "svg",
"logo": "app"
},
"clicks_count": 1,
"leads_count": 1,
"sales_count": 1,
"revenue": 1,
"revenue_currency": "USD",
"clicked_at": "2023-11-07T05:31:56Z",
"safety_status": "clear",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}
],
"summary": {
"requested_count": 50,
"created_count": 50,
"failed_count": 50
},
"status": "success"
}{
"results": [
{
"index": 1,
"status": "success",
"link": {
"id": "<string>",
"external_id": "<string>",
"short_url": "<string>",
"long_url": "<string>",
"name": "<string>",
"domain_id": "<string>",
"alias": "<string>",
"active": true,
"has_password": true,
"activates_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"exp_clicks_rule": {
"key": 2,
"value": "<string>"
},
"utm": "<string>",
"geo_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"device_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"platform_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"folder_ids": [
"<string>"
],
"pixel_ids": [
"<string>"
],
"tag_ids": [
"<string>"
],
"conversion_tracking_enabled": true,
"allow_search_engine_indexing": true,
"proxy": true,
"title": "<string>",
"description": "<string>",
"image": "<string>",
"qr_code": {
"url": "<string>",
"format": "svg",
"logo": "app"
},
"clicks_count": 1,
"leads_count": 1,
"sales_count": 1,
"revenue": 1,
"revenue_currency": "USD",
"clicked_at": "2023-11-07T05:31:56Z",
"safety_status": "clear",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}
],
"summary": {
"requested_count": 50,
"created_count": 50,
"failed_count": 50
},
"status": "success"
}{
"error": {
"code": "invalid_token",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}{
"error": {
"code": "invalid_token",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}{
"error": {
"code": "invalid_token",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}{
"error": {
"code": "invalid_token",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}{
"error": {
"code": "invalid_token",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}Links
Bulk create links
Create up to 100 complete links in one ordered request.
POST
/
v1
/
link
/
bulk
Bulk create links
curl --request POST \
--url https://biq.li/api/v1/link/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"links": [
{
"long_url": "https://example.com/product",
"name": "<string>",
"external_id": "<string>",
"domain_id": "<string>",
"alias": "<string>",
"active": true,
"password": "<string>",
"activates_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"exp_clicks_rule": {
"key": 2,
"value": "<string>"
},
"utm": "source=newsletter&medium=email&campaign=summer",
"geo_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"device_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"platform_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"folder_ids": [
"<string>"
],
"pixel_ids": [
"<string>"
],
"tag_ids": [
"<string>"
],
"conversion_tracking_enabled": false,
"allow_search_engine_indexing": false,
"proxy": false,
"title": "<string>",
"description": "<string>",
"image": "<string>",
"create_qr_code": false,
"qr_logo": "app"
}
]
}
'import requests
url = "https://biq.li/api/v1/link/bulk"
payload = { "links": [
{
"long_url": "https://example.com/product",
"name": "<string>",
"external_id": "<string>",
"domain_id": "<string>",
"alias": "<string>",
"active": True,
"password": "<string>",
"activates_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"exp_clicks_rule": {
"key": 2,
"value": "<string>"
},
"utm": "source=newsletter&medium=email&campaign=summer",
"geo_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"device_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"platform_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"folder_ids": ["<string>"],
"pixel_ids": ["<string>"],
"tag_ids": ["<string>"],
"conversion_tracking_enabled": False,
"allow_search_engine_indexing": False,
"proxy": False,
"title": "<string>",
"description": "<string>",
"image": "<string>",
"create_qr_code": False,
"qr_logo": "app"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
links: [
{
long_url: 'https://example.com/product',
name: '<string>',
external_id: '<string>',
domain_id: '<string>',
alias: '<string>',
active: true,
password: '<string>',
activates_at: '2023-11-07T05:31:56Z',
expires_at: '2023-11-07T05:31:56Z',
exp_clicks_rule: {key: 2, value: '<string>'},
utm: 'source=newsletter&medium=email&campaign=summer',
geo_rules: [{key: '<string>', value: '<string>'}],
device_rules: [{key: '<string>', value: '<string>'}],
platform_rules: [{key: '<string>', value: '<string>'}],
folder_ids: ['<string>'],
pixel_ids: ['<string>'],
tag_ids: ['<string>'],
conversion_tracking_enabled: false,
allow_search_engine_indexing: false,
proxy: false,
title: '<string>',
description: '<string>',
image: '<string>',
create_qr_code: false,
qr_logo: 'app'
}
]
})
};
fetch('https://biq.li/api/v1/link/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://biq.li/api/v1/link/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'links' => [
[
'long_url' => 'https://example.com/product',
'name' => '<string>',
'external_id' => '<string>',
'domain_id' => '<string>',
'alias' => '<string>',
'active' => true,
'password' => '<string>',
'activates_at' => '2023-11-07T05:31:56Z',
'expires_at' => '2023-11-07T05:31:56Z',
'exp_clicks_rule' => [
'key' => 2,
'value' => '<string>'
],
'utm' => 'source=newsletter&medium=email&campaign=summer',
'geo_rules' => [
[
'key' => '<string>',
'value' => '<string>'
]
],
'device_rules' => [
[
'key' => '<string>',
'value' => '<string>'
]
],
'platform_rules' => [
[
'key' => '<string>',
'value' => '<string>'
]
],
'folder_ids' => [
'<string>'
],
'pixel_ids' => [
'<string>'
],
'tag_ids' => [
'<string>'
],
'conversion_tracking_enabled' => false,
'allow_search_engine_indexing' => false,
'proxy' => false,
'title' => '<string>',
'description' => '<string>',
'image' => '<string>',
'create_qr_code' => false,
'qr_logo' => 'app'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://biq.li/api/v1/link/bulk"
payload := strings.NewReader("{\n \"links\": [\n {\n \"long_url\": \"https://example.com/product\",\n \"name\": \"<string>\",\n \"external_id\": \"<string>\",\n \"domain_id\": \"<string>\",\n \"alias\": \"<string>\",\n \"active\": true,\n \"password\": \"<string>\",\n \"activates_at\": \"2023-11-07T05:31:56Z\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"exp_clicks_rule\": {\n \"key\": 2,\n \"value\": \"<string>\"\n },\n \"utm\": \"source=newsletter&medium=email&campaign=summer\",\n \"geo_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"device_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"platform_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"folder_ids\": [\n \"<string>\"\n ],\n \"pixel_ids\": [\n \"<string>\"\n ],\n \"tag_ids\": [\n \"<string>\"\n ],\n \"conversion_tracking_enabled\": false,\n \"allow_search_engine_indexing\": false,\n \"proxy\": false,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"create_qr_code\": false,\n \"qr_logo\": \"app\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://biq.li/api/v1/link/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"links\": [\n {\n \"long_url\": \"https://example.com/product\",\n \"name\": \"<string>\",\n \"external_id\": \"<string>\",\n \"domain_id\": \"<string>\",\n \"alias\": \"<string>\",\n \"active\": true,\n \"password\": \"<string>\",\n \"activates_at\": \"2023-11-07T05:31:56Z\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"exp_clicks_rule\": {\n \"key\": 2,\n \"value\": \"<string>\"\n },\n \"utm\": \"source=newsletter&medium=email&campaign=summer\",\n \"geo_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"device_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"platform_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"folder_ids\": [\n \"<string>\"\n ],\n \"pixel_ids\": [\n \"<string>\"\n ],\n \"tag_ids\": [\n \"<string>\"\n ],\n \"conversion_tracking_enabled\": false,\n \"allow_search_engine_indexing\": false,\n \"proxy\": false,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"create_qr_code\": false,\n \"qr_logo\": \"app\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://biq.li/api/v1/link/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"links\": [\n {\n \"long_url\": \"https://example.com/product\",\n \"name\": \"<string>\",\n \"external_id\": \"<string>\",\n \"domain_id\": \"<string>\",\n \"alias\": \"<string>\",\n \"active\": true,\n \"password\": \"<string>\",\n \"activates_at\": \"2023-11-07T05:31:56Z\",\n \"expires_at\": \"2023-11-07T05:31:56Z\",\n \"exp_clicks_rule\": {\n \"key\": 2,\n \"value\": \"<string>\"\n },\n \"utm\": \"source=newsletter&medium=email&campaign=summer\",\n \"geo_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"device_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"platform_rules\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"folder_ids\": [\n \"<string>\"\n ],\n \"pixel_ids\": [\n \"<string>\"\n ],\n \"tag_ids\": [\n \"<string>\"\n ],\n \"conversion_tracking_enabled\": false,\n \"allow_search_engine_indexing\": false,\n \"proxy\": false,\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"image\": \"<string>\",\n \"create_qr_code\": false,\n \"qr_logo\": \"app\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"index": 1,
"status": "success",
"link": {
"id": "<string>",
"external_id": "<string>",
"short_url": "<string>",
"long_url": "<string>",
"name": "<string>",
"domain_id": "<string>",
"alias": "<string>",
"active": true,
"has_password": true,
"activates_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"exp_clicks_rule": {
"key": 2,
"value": "<string>"
},
"utm": "<string>",
"geo_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"device_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"platform_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"folder_ids": [
"<string>"
],
"pixel_ids": [
"<string>"
],
"tag_ids": [
"<string>"
],
"conversion_tracking_enabled": true,
"allow_search_engine_indexing": true,
"proxy": true,
"title": "<string>",
"description": "<string>",
"image": "<string>",
"qr_code": {
"url": "<string>",
"format": "svg",
"logo": "app"
},
"clicks_count": 1,
"leads_count": 1,
"sales_count": 1,
"revenue": 1,
"revenue_currency": "USD",
"clicked_at": "2023-11-07T05:31:56Z",
"safety_status": "clear",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}
],
"summary": {
"requested_count": 50,
"created_count": 50,
"failed_count": 50
},
"status": "success"
}{
"results": [
{
"index": 1,
"status": "success",
"link": {
"id": "<string>",
"external_id": "<string>",
"short_url": "<string>",
"long_url": "<string>",
"name": "<string>",
"domain_id": "<string>",
"alias": "<string>",
"active": true,
"has_password": true,
"activates_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"exp_clicks_rule": {
"key": 2,
"value": "<string>"
},
"utm": "<string>",
"geo_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"device_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"platform_rules": [
{
"key": "<string>",
"value": "<string>"
}
],
"folder_ids": [
"<string>"
],
"pixel_ids": [
"<string>"
],
"tag_ids": [
"<string>"
],
"conversion_tracking_enabled": true,
"allow_search_engine_indexing": true,
"proxy": true,
"title": "<string>",
"description": "<string>",
"image": "<string>",
"qr_code": {
"url": "<string>",
"format": "svg",
"logo": "app"
},
"clicks_count": 1,
"leads_count": 1,
"sales_count": 1,
"revenue": 1,
"revenue_currency": "USD",
"clicked_at": "2023-11-07T05:31:56Z",
"safety_status": "clear",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
}
}
],
"summary": {
"requested_count": 50,
"created_count": 50,
"failed_count": 50
},
"status": "success"
}{
"error": {
"code": "invalid_token",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}{
"error": {
"code": "invalid_token",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}{
"error": {
"code": "invalid_token",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}{
"error": {
"code": "invalid_token",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}{
"error": {
"code": "invalid_token",
"message": "<string>",
"details": {}
},
"request_id": "<string>"
}Create between 1 and 100 links in one request. Each entry supports the complete
payload documented by Create a link, including
external IDs, dynamic routing, attachments, custom previews, and attached QR
codes.
The key determines the workspace. Do not include a workspace or internal
numeric ID.
Every item is validated and created through the same flow as the single Create
endpoint. That includes URL normalization and safety checks, plan features,
quota usage, alias and external-ID uniqueness, workspace references, QR file
cleanup, activity history, and the complete safe link response.
The response preserves request order.
The actual
Always inspect every result; do not treat
Authentication and permissions
The key needs Links: Write (links.create). An item that attaches a domain,
folder, pixel, or tag also requires the corresponding read permission described
in Create a link.
Authorization: Bearer biqli_your_workspace_api_key
Content-Type: application/json
Accept: application/json
Request
Wrap the ordered link payloads inlinks:
curl --request POST \
--url 'https://biq.li/api/v1/link/bulk' \
--header 'Authorization: Bearer biqli_your_workspace_api_key' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"links": [
{
"long_url": "https://example.com/products/blue",
"name": "Blue product",
"external_id": "catalog-blue"
},
{
"long_url": "https://example.com/products/red",
"name": "Red product",
"external_id": "catalog-red",
"tag_ids": ["biq_tag_01M14CC1TW7AQ6DWZG9TMRH0PQ"]
}
]
}'
index is the zero-based position of the
corresponding request item.
Complete success
If all items are created, the endpoint returns201 Created:
{
"results": [
{
"index": 0,
"status": "success",
"link": {
"id": "biq_lnk_01M17YFAR0FEN7R66T99JH820N",
"external_id": "catalog-blue",
"short_url": "https://biq.li/vYdheWL",
"long_url": "https://example.com/products/blue",
"name": "Blue product",
"active": true,
"clicks_count": 0,
"leads_count": 0,
"sales_count": 0,
"revenue": 0,
"revenue_currency": "USD",
"safety_status": "clear"
}
}
],
"summary": {
"requested_count": 1,
"created_count": 1,
"failed_count": 0
},
"status": "success"
}
link object contains every field documented by
Retrieve a link. An item whose URL needs an
asynchronous check has status: "pending"; the link exists but cannot redirect
until its safety_status becomes clear.
Partial success
Items are independent. A bad item does not roll back successful items. If any item fails, the endpoint returns207 Multi-Status with an error beside that
item:
{
"results": [
{
"index": 0,
"status": "success",
"link": {"id": "biq_lnk_01M17YFAR0FEN7R66T99JH820N"}
},
{
"index": 1,
"status": "error",
"error": {
"code": "external_id_taken",
"message": "The external ID is already in use in this workspace.",
"details": {"field": "external_id"}
}
}
],
"summary": {
"requested_count": 2,
"created_count": 1,
"failed_count": 1
},
"status": "partial_success"
}
207 as a total failure. Retry only
failed items. Supplying stable, unique external_id values makes reconciliation
and safe retries straightforward.
Request-level errors
The whole request fails before item processing whenlinks is missing, empty,
larger than 100, not an array, or when an unsupported top-level field is sent.
| HTTP status | Meaning |
|---|---|
401 | Invalid or revoked workspace API key. |
403 | Missing links.create, lost workspace access, or request-level plan/rate restriction. |
422 | Invalid bulk envelope. Item validation failures normally appear in 207 results. |
429 | Workspace API rate limit exceeded. |
500 | Unexpected server error; use request_id when contacting support. |
Shared API behavior
Authentication is workspace-scoped; see Authentication. Errors use the standard envelope and request IDs described in Errors, and requests are subject to Rate limits.Authorizations
A workspace API key beginning with biqli_.
Body
application/json
Required array length:
1 - 100 elementsShow child attributes
Show child attributes

