Bulk update links
curl --request PATCH \
--url https://biq.li/api/v1/link/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"link_ids": [
"<string>"
],
"data": {
"long_url": "<unknown>",
"name": "<unknown>",
"external_id": "<unknown>",
"domain_id": "<unknown>",
"alias": "<unknown>",
"active": "<unknown>",
"password": "<unknown>",
"activates_at": "<unknown>",
"expires_at": "<unknown>",
"exp_clicks_rule": "<unknown>",
"utm": "<unknown>",
"geo_rules": "<unknown>",
"device_rules": "<unknown>",
"platform_rules": "<unknown>",
"folder_ids": "<unknown>",
"pixel_ids": "<unknown>",
"tag_ids": "<unknown>",
"conversion_tracking_enabled": "<unknown>",
"allow_search_engine_indexing": "<unknown>",
"proxy": "<unknown>",
"title": "<unknown>",
"description": "<unknown>",
"image": "<unknown>"
},
"external_ids": [
"<string>"
]
}
'import requests
url = "https://biq.li/api/v1/link/bulk"
payload = {
"link_ids": ["<string>"],
"data": {
"long_url": "<unknown>",
"name": "<unknown>",
"external_id": "<unknown>",
"domain_id": "<unknown>",
"alias": "<unknown>",
"active": "<unknown>",
"password": "<unknown>",
"activates_at": "<unknown>",
"expires_at": "<unknown>",
"exp_clicks_rule": "<unknown>",
"utm": "<unknown>",
"geo_rules": "<unknown>",
"device_rules": "<unknown>",
"platform_rules": "<unknown>",
"folder_ids": "<unknown>",
"pixel_ids": "<unknown>",
"tag_ids": "<unknown>",
"conversion_tracking_enabled": "<unknown>",
"allow_search_engine_indexing": "<unknown>",
"proxy": "<unknown>",
"title": "<unknown>",
"description": "<unknown>",
"image": "<unknown>"
},
"external_ids": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
link_ids: ['<string>'],
data: {
long_url: '<unknown>',
name: '<unknown>',
external_id: '<unknown>',
domain_id: '<unknown>',
alias: '<unknown>',
active: '<unknown>',
password: '<unknown>',
activates_at: '<unknown>',
expires_at: '<unknown>',
exp_clicks_rule: '<unknown>',
utm: '<unknown>',
geo_rules: '<unknown>',
device_rules: '<unknown>',
platform_rules: '<unknown>',
folder_ids: '<unknown>',
pixel_ids: '<unknown>',
tag_ids: '<unknown>',
conversion_tracking_enabled: '<unknown>',
allow_search_engine_indexing: '<unknown>',
proxy: '<unknown>',
title: '<unknown>',
description: '<unknown>',
image: '<unknown>'
},
external_ids: ['<string>']
})
};
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 => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'link_ids' => [
'<string>'
],
'data' => [
'long_url' => '<unknown>',
'name' => '<unknown>',
'external_id' => '<unknown>',
'domain_id' => '<unknown>',
'alias' => '<unknown>',
'active' => '<unknown>',
'password' => '<unknown>',
'activates_at' => '<unknown>',
'expires_at' => '<unknown>',
'exp_clicks_rule' => '<unknown>',
'utm' => '<unknown>',
'geo_rules' => '<unknown>',
'device_rules' => '<unknown>',
'platform_rules' => '<unknown>',
'folder_ids' => '<unknown>',
'pixel_ids' => '<unknown>',
'tag_ids' => '<unknown>',
'conversion_tracking_enabled' => '<unknown>',
'allow_search_engine_indexing' => '<unknown>',
'proxy' => '<unknown>',
'title' => '<unknown>',
'description' => '<unknown>',
'image' => '<unknown>'
],
'external_ids' => [
'<string>'
]
]),
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 \"link_ids\": [\n \"<string>\"\n ],\n \"data\": {\n \"long_url\": \"<unknown>\",\n \"name\": \"<unknown>\",\n \"external_id\": \"<unknown>\",\n \"domain_id\": \"<unknown>\",\n \"alias\": \"<unknown>\",\n \"active\": \"<unknown>\",\n \"password\": \"<unknown>\",\n \"activates_at\": \"<unknown>\",\n \"expires_at\": \"<unknown>\",\n \"exp_clicks_rule\": \"<unknown>\",\n \"utm\": \"<unknown>\",\n \"geo_rules\": \"<unknown>\",\n \"device_rules\": \"<unknown>\",\n \"platform_rules\": \"<unknown>\",\n \"folder_ids\": \"<unknown>\",\n \"pixel_ids\": \"<unknown>\",\n \"tag_ids\": \"<unknown>\",\n \"conversion_tracking_enabled\": \"<unknown>\",\n \"allow_search_engine_indexing\": \"<unknown>\",\n \"proxy\": \"<unknown>\",\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"image\": \"<unknown>\"\n },\n \"external_ids\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://biq.li/api/v1/link/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"link_ids\": [\n \"<string>\"\n ],\n \"data\": {\n \"long_url\": \"<unknown>\",\n \"name\": \"<unknown>\",\n \"external_id\": \"<unknown>\",\n \"domain_id\": \"<unknown>\",\n \"alias\": \"<unknown>\",\n \"active\": \"<unknown>\",\n \"password\": \"<unknown>\",\n \"activates_at\": \"<unknown>\",\n \"expires_at\": \"<unknown>\",\n \"exp_clicks_rule\": \"<unknown>\",\n \"utm\": \"<unknown>\",\n \"geo_rules\": \"<unknown>\",\n \"device_rules\": \"<unknown>\",\n \"platform_rules\": \"<unknown>\",\n \"folder_ids\": \"<unknown>\",\n \"pixel_ids\": \"<unknown>\",\n \"tag_ids\": \"<unknown>\",\n \"conversion_tracking_enabled\": \"<unknown>\",\n \"allow_search_engine_indexing\": \"<unknown>\",\n \"proxy\": \"<unknown>\",\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"image\": \"<unknown>\"\n },\n \"external_ids\": [\n \"<string>\"\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::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"link_ids\": [\n \"<string>\"\n ],\n \"data\": {\n \"long_url\": \"<unknown>\",\n \"name\": \"<unknown>\",\n \"external_id\": \"<unknown>\",\n \"domain_id\": \"<unknown>\",\n \"alias\": \"<unknown>\",\n \"active\": \"<unknown>\",\n \"password\": \"<unknown>\",\n \"activates_at\": \"<unknown>\",\n \"expires_at\": \"<unknown>\",\n \"exp_clicks_rule\": \"<unknown>\",\n \"utm\": \"<unknown>\",\n \"geo_rules\": \"<unknown>\",\n \"device_rules\": \"<unknown>\",\n \"platform_rules\": \"<unknown>\",\n \"folder_ids\": \"<unknown>\",\n \"pixel_ids\": \"<unknown>\",\n \"tag_ids\": \"<unknown>\",\n \"conversion_tracking_enabled\": \"<unknown>\",\n \"allow_search_engine_indexing\": \"<unknown>\",\n \"proxy\": \"<unknown>\",\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"image\": \"<unknown>\"\n },\n \"external_ids\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"index": 1,
"identifier": "<string>",
"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,
"updated_count": 50,
"failed_count": 50
},
"status": "success"
}{
"results": [
{
"index": 1,
"identifier": "<string>",
"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,
"updated_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 update links
Apply one shared partial update to up to 100 links.
PATCH
/
v1
/
link
/
bulk
Bulk update links
curl --request PATCH \
--url https://biq.li/api/v1/link/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"link_ids": [
"<string>"
],
"data": {
"long_url": "<unknown>",
"name": "<unknown>",
"external_id": "<unknown>",
"domain_id": "<unknown>",
"alias": "<unknown>",
"active": "<unknown>",
"password": "<unknown>",
"activates_at": "<unknown>",
"expires_at": "<unknown>",
"exp_clicks_rule": "<unknown>",
"utm": "<unknown>",
"geo_rules": "<unknown>",
"device_rules": "<unknown>",
"platform_rules": "<unknown>",
"folder_ids": "<unknown>",
"pixel_ids": "<unknown>",
"tag_ids": "<unknown>",
"conversion_tracking_enabled": "<unknown>",
"allow_search_engine_indexing": "<unknown>",
"proxy": "<unknown>",
"title": "<unknown>",
"description": "<unknown>",
"image": "<unknown>"
},
"external_ids": [
"<string>"
]
}
'import requests
url = "https://biq.li/api/v1/link/bulk"
payload = {
"link_ids": ["<string>"],
"data": {
"long_url": "<unknown>",
"name": "<unknown>",
"external_id": "<unknown>",
"domain_id": "<unknown>",
"alias": "<unknown>",
"active": "<unknown>",
"password": "<unknown>",
"activates_at": "<unknown>",
"expires_at": "<unknown>",
"exp_clicks_rule": "<unknown>",
"utm": "<unknown>",
"geo_rules": "<unknown>",
"device_rules": "<unknown>",
"platform_rules": "<unknown>",
"folder_ids": "<unknown>",
"pixel_ids": "<unknown>",
"tag_ids": "<unknown>",
"conversion_tracking_enabled": "<unknown>",
"allow_search_engine_indexing": "<unknown>",
"proxy": "<unknown>",
"title": "<unknown>",
"description": "<unknown>",
"image": "<unknown>"
},
"external_ids": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
link_ids: ['<string>'],
data: {
long_url: '<unknown>',
name: '<unknown>',
external_id: '<unknown>',
domain_id: '<unknown>',
alias: '<unknown>',
active: '<unknown>',
password: '<unknown>',
activates_at: '<unknown>',
expires_at: '<unknown>',
exp_clicks_rule: '<unknown>',
utm: '<unknown>',
geo_rules: '<unknown>',
device_rules: '<unknown>',
platform_rules: '<unknown>',
folder_ids: '<unknown>',
pixel_ids: '<unknown>',
tag_ids: '<unknown>',
conversion_tracking_enabled: '<unknown>',
allow_search_engine_indexing: '<unknown>',
proxy: '<unknown>',
title: '<unknown>',
description: '<unknown>',
image: '<unknown>'
},
external_ids: ['<string>']
})
};
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 => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'link_ids' => [
'<string>'
],
'data' => [
'long_url' => '<unknown>',
'name' => '<unknown>',
'external_id' => '<unknown>',
'domain_id' => '<unknown>',
'alias' => '<unknown>',
'active' => '<unknown>',
'password' => '<unknown>',
'activates_at' => '<unknown>',
'expires_at' => '<unknown>',
'exp_clicks_rule' => '<unknown>',
'utm' => '<unknown>',
'geo_rules' => '<unknown>',
'device_rules' => '<unknown>',
'platform_rules' => '<unknown>',
'folder_ids' => '<unknown>',
'pixel_ids' => '<unknown>',
'tag_ids' => '<unknown>',
'conversion_tracking_enabled' => '<unknown>',
'allow_search_engine_indexing' => '<unknown>',
'proxy' => '<unknown>',
'title' => '<unknown>',
'description' => '<unknown>',
'image' => '<unknown>'
],
'external_ids' => [
'<string>'
]
]),
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 \"link_ids\": [\n \"<string>\"\n ],\n \"data\": {\n \"long_url\": \"<unknown>\",\n \"name\": \"<unknown>\",\n \"external_id\": \"<unknown>\",\n \"domain_id\": \"<unknown>\",\n \"alias\": \"<unknown>\",\n \"active\": \"<unknown>\",\n \"password\": \"<unknown>\",\n \"activates_at\": \"<unknown>\",\n \"expires_at\": \"<unknown>\",\n \"exp_clicks_rule\": \"<unknown>\",\n \"utm\": \"<unknown>\",\n \"geo_rules\": \"<unknown>\",\n \"device_rules\": \"<unknown>\",\n \"platform_rules\": \"<unknown>\",\n \"folder_ids\": \"<unknown>\",\n \"pixel_ids\": \"<unknown>\",\n \"tag_ids\": \"<unknown>\",\n \"conversion_tracking_enabled\": \"<unknown>\",\n \"allow_search_engine_indexing\": \"<unknown>\",\n \"proxy\": \"<unknown>\",\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"image\": \"<unknown>\"\n },\n \"external_ids\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://biq.li/api/v1/link/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"link_ids\": [\n \"<string>\"\n ],\n \"data\": {\n \"long_url\": \"<unknown>\",\n \"name\": \"<unknown>\",\n \"external_id\": \"<unknown>\",\n \"domain_id\": \"<unknown>\",\n \"alias\": \"<unknown>\",\n \"active\": \"<unknown>\",\n \"password\": \"<unknown>\",\n \"activates_at\": \"<unknown>\",\n \"expires_at\": \"<unknown>\",\n \"exp_clicks_rule\": \"<unknown>\",\n \"utm\": \"<unknown>\",\n \"geo_rules\": \"<unknown>\",\n \"device_rules\": \"<unknown>\",\n \"platform_rules\": \"<unknown>\",\n \"folder_ids\": \"<unknown>\",\n \"pixel_ids\": \"<unknown>\",\n \"tag_ids\": \"<unknown>\",\n \"conversion_tracking_enabled\": \"<unknown>\",\n \"allow_search_engine_indexing\": \"<unknown>\",\n \"proxy\": \"<unknown>\",\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"image\": \"<unknown>\"\n },\n \"external_ids\": [\n \"<string>\"\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::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"link_ids\": [\n \"<string>\"\n ],\n \"data\": {\n \"long_url\": \"<unknown>\",\n \"name\": \"<unknown>\",\n \"external_id\": \"<unknown>\",\n \"domain_id\": \"<unknown>\",\n \"alias\": \"<unknown>\",\n \"active\": \"<unknown>\",\n \"password\": \"<unknown>\",\n \"activates_at\": \"<unknown>\",\n \"expires_at\": \"<unknown>\",\n \"exp_clicks_rule\": \"<unknown>\",\n \"utm\": \"<unknown>\",\n \"geo_rules\": \"<unknown>\",\n \"device_rules\": \"<unknown>\",\n \"platform_rules\": \"<unknown>\",\n \"folder_ids\": \"<unknown>\",\n \"pixel_ids\": \"<unknown>\",\n \"tag_ids\": \"<unknown>\",\n \"conversion_tracking_enabled\": \"<unknown>\",\n \"allow_search_engine_indexing\": \"<unknown>\",\n \"proxy\": \"<unknown>\",\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"image\": \"<unknown>\"\n },\n \"external_ids\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"index": 1,
"identifier": "<string>",
"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,
"updated_count": 50,
"failed_count": 50
},
"status": "success"
}{
"results": [
{
"index": 1,
"identifier": "<string>",
"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,
"updated_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>"
}Apply the same partial update to between 1 and 100 links. Identify targets with
either their Biqli public IDs or your workspace-unique external IDs.
The full response link contains every field from
Retrieve a link. Valid-looking identifiers outside
the key’s workspace are reported as not found, preventing workspace discovery.
Always inspect each result and retry only failures.
Item-specific
Authentication and permission
This endpoint requires Links: Write (links.update). Fields that reference
domains, folders, pixels, or tags additionally require that resource’s read
permission, exactly as described by Update a link.
Authorization: Bearer biqli_your_workspace_api_key
Content-Type: application/json
Accept: application/json
Update by public link ID
Sendlink_ids and a non-empty data object. Only fields in data are changed.
curl --request PATCH \
--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 '{
"link_ids": [
"biq_lnk_01M17YFAR0FEN7R66T99JH820N",
"biq_lnk_01M17Y6XGP07PR11S3DRFCX6Y9"
],
"data": {
"active": false,
"tag_ids": ["biq_tag_01M14CC1TW7AQ6DWZG9TMRH0PQ"]
}
}'
Update by external ID
Useexternal_ids instead of link_ids when your integration owns the IDs:
{
"external_ids": ["catalog-blue", "catalog-red"],
"data": {
"utm": "source=catalog&medium=api&campaign=autumn"
}
}
link_ids and external_ids are mutually exclusive. Each list accepts 1 to
100 distinct strings. External IDs match exactly and are unique within the
workspace.
Fields you can update
data accepts the mutable fields documented by the single
Update a link endpoint: destination, name,
domain, active state, password, schedule, expiration rule, UTM data, dynamic
routing, resource attachments, conversion tracking, indexing, and custom
preview fields.
alias and external_id are intentionally excluded from a shared bulk patch
because they are per-link unique identities. Change either one surgically with
PATCH /v1/link/{link}. To clear a nullable value, send null; to clear a
collection such as tags or geo rules, send [].
Every target goes through the same plan, URL safety, reference, schedule, and
activity flow as an individual PATCH. Updates run in request order and are
independent.
Response and partial success
Complete success returns200 OK. Any missing or rejected target produces
207 Multi-Status; successful targets remain updated.
{
"results": [
{
"index": 0,
"identifier": "catalog-blue",
"status": "success",
"link": {
"id": "biq_lnk_01M17YFAR0FEN7R66T99JH820N",
"external_id": "catalog-blue",
"active": false,
"safety_status": "clear"
}
},
{
"index": 1,
"identifier": "catalog-red",
"status": "error",
"error": {
"code": "resource_not_found",
"message": "The link was not found in this workspace."
}
}
],
"summary": {
"requested_count": 2,
"updated_count": 1,
"failed_count": 1
},
"status": "partial_success"
}
Request-level errors
| HTTP status | Meaning |
|---|---|
401 | Invalid or revoked workspace API key. |
403 | Missing links.update, lost workspace access, or plan restriction. |
422 | Invalid envelope or shared data; no targets are updated. |
429 | Workspace API rate limit exceeded. |
500 | Unexpected server error. |
404, 409, and 422 outcomes appear inside a 207 response.
Every top-level API error contains a traceable request_id.
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
- Option 1
- Option 2
Required array length:
1 - 100 elementsPattern:
^biq_lnk_[0-9A-HJKMNP-TV-Z]{26}$A partial link update. Omitted properties keep their current values.
Show child attributes
Show child attributes
Required array length:
1 - 100 elementsRequired string length:
1 - 255
