Retrieve a link
curl --request GET \
--url https://biq.li/api/v1/link/{link} \
--header 'Authorization: Bearer <token>'import requests
url = "https://biq.li/api/v1/link/{link}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://biq.li/api/v1/link/{link}', 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/{link}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://biq.li/api/v1/link/{link}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://biq.li/api/v1/link/{link}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://biq.li/api/v1/link/{link}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"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"
},
"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
Retrieve a link
Retrieve a link’s complete safe configuration and aggregate performance data.
GET
/
v1
/
link
/
{link}
Retrieve a link
curl --request GET \
--url https://biq.li/api/v1/link/{link} \
--header 'Authorization: Bearer <token>'import requests
url = "https://biq.li/api/v1/link/{link}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://biq.li/api/v1/link/{link}', 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/{link}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://biq.li/api/v1/link/{link}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://biq.li/api/v1/link/{link}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://biq.li/api/v1/link/{link}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"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"
},
"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>"
}Retrieve one short link from the workspace bound to your API key. Pass the
public
You do not send a workspace ID. The API key determines the workspace, and the
endpoint never falls back to an internal numeric link ID.
All date-time values use ISO 8601. Nullable settings are returned as
Errors include an
biq_lnk_... ID returned when you created or listed the link.
Authentication and permission
Send a workspace API key with Links: Read (links.view). That permission is
enough to read the link configuration and its aggregate click, lead, sales, and
revenue values. You do not need a separate analytics permission.
Authorization: Bearer biqli_your_workspace_api_key
Accept: application/json
Request
curl --request GET \
--url https://biq.li/api/v1/link/biq_lnk_01M14D2M8VFKYQCE7Z3A6HRXWP \
--header 'Authorization: Bearer biqli_your_workspace_api_key' \
--header 'Accept: application/json'
| Path parameter | Type | Description |
|---|---|---|
link | string, required | Public link ID with the biq_lnk_ prefix. |
Response
The endpoint returns the same complete link resource used by create and update, plus current aggregate performance values.{
"link": {
"id": "biq_lnk_01M14D2M8VFKYQCE7Z3A6HRXWP",
"external_id": "campaign-link-1842",
"short_url": "https://go.example.com/summer-product",
"long_url": "https://example.com/product",
"name": "Summer campaign",
"domain_id": "biq_dom_01M14C6KQ6SG2GKMCV7HQ9A1QT",
"alias": "summer-product",
"active": true,
"has_password": true,
"activates_at": null,
"expires_at": null,
"exp_clicks_rule": null,
"utm": "source=newsletter&medium=email&campaign=summer",
"geo_rules": [
{"key": "us", "value": "https://example.com/us/product"}
],
"device_rules": [],
"platform_rules": [],
"folder_ids": ["biq_fld_01M14C93RJD7W46PFJX9B1TVYH"],
"pixel_ids": ["biq_pxl_01M14CBJNRXPW4Y22ZTA7F9W3J"],
"tag_ids": ["biq_tag_01M14CC1TW7AQ6DWZG9TMRH0PQ"],
"conversion_tracking_enabled": true,
"allow_search_engine_indexing": false,
"proxy": true,
"title": "Summer sale",
"description": "Explore the summer collection.",
"image": "https://cdn.example.com/previews/summer.jpg",
"qr_code": {
"url": "https://biq.li/storage/workspaces/biq_ws_example/qr-codes/link.svg",
"format": "svg",
"logo": "app"
},
"clicks_count": 2841,
"leads_count": 93,
"sales_count": 27,
"revenue": 4148.5,
"revenue_currency": "USD",
"clicked_at": "2026-08-29T10:42:11+00:00",
"safety_status": "clear",
"created_at": "2026-08-28T16:42:19+00:00",
"updated_at": "2026-08-29T09:20:03+00:00"
},
"status": "success"
}
Configuration fields
| Field | Meaning |
|---|---|
id, external_id | Biqli’s public link ID and your optional workspace-unique ID. |
short_url, long_url | Redirect URL and primary destination. |
domain_id, alias | Public custom-domain ID and short alias. |
active, safety_status | Requested active state and current safety state. Pending or quarantined links do not redirect. |
has_password | Whether password protection is enabled. The password is never returned. |
activates_at, expires_at, exp_clicks_rule | Time- and click-based availability controls. |
utm | Stored UTM query string. |
geo_rules, device_rules, platform_rules | Dynamic destination overrides. |
folder_ids, pixel_ids, tag_ids | Public IDs of attached workspace resources. |
conversion_tracking_enabled | Whether Biqli appends a click ID for conversion attribution. |
allow_search_engine_indexing | Whether search engines may index the short-link page. |
proxy, title, description, image | Custom social-preview configuration. |
qr_code | Attached QR URL, format, and logo mode, or null. |
Performance fields
| Field | Meaning |
|---|---|
clicks_count | Total recorded link clicks. |
leads_count | Total lead conversion events attributed to the link. |
sales_count | Total sale conversion events attributed to the link. |
revenue | Sum of attributed sales normalized to USD. |
revenue_currency | Always USD for the normalized revenue value. |
clicked_at | Most recent recorded click time, or null before the first click. |
null,
and unattached resource lists are returned as empty arrays.
Errors
| HTTP status | Error code | Meaning |
|---|---|---|
401 | invalid_token | The API key is missing, invalid, malformed, or revoked. |
403 | insufficient_scope | The key lacks links.view or its user lost workspace access. |
404 | resource_not_found | The public link ID is invalid, deleted, or unavailable in this workspace. |
429 | rate_limit_exceeded | The workspace exceeded its API request limit. |
500 | internal_server_error | An unexpected server error occurred. |
error object and a traceable request_id. The same request
ID is returned in the X-Biq-Request-Id response header.
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_.
Path Parameters
Public link ID.
Pattern:
^biq_lnk_[0-9A-HJKMNP-TV-Z]{26}$
