curl --request PATCH \
--url https://api.uselora.com/v1/shortcuts/{handle} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"slug": "handbook",
"destination": "https://example.com/new-target",
"title": "<string>",
"description": "<string>",
"iconSettings": {
"background": {
"color": "<string>"
},
"glyph": {
"ref": "<string>"
}
},
"masked": true,
"password": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"dynamicRouting": [
{
"conditions": [
{
"attribute": "country",
"values": [
"DE",
"AT",
"CH"
]
}
],
"destination": "https://apps.apple.com/de/app/id123456789"
}
],
"folderId": "<string>",
"tagIds": [
"a1b2c3d4"
],
"aliases": [
"urlaub"
],
"comments": "<string>",
"proxy": true,
"qrSettings": {
"dotColor": "<string>",
"hideLogo": true,
"markerColor": "<string>"
},
"previewSettings": {
"assetId": "<string>",
"capturedAt": "2023-11-07T05:31:56Z",
"capturedFor": "<string>",
"hasDark": true,
"height": 123,
"width": 123
}
}
'import requests
url = "https://api.uselora.com/v1/shortcuts/{handle}"
payload = {
"slug": "handbook",
"destination": "https://example.com/new-target",
"title": "<string>",
"description": "<string>",
"iconSettings": {
"background": { "color": "<string>" },
"glyph": { "ref": "<string>" }
},
"masked": True,
"password": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"dynamicRouting": [
{
"conditions": [
{
"attribute": "country",
"values": ["DE", "AT", "CH"]
}
],
"destination": "https://apps.apple.com/de/app/id123456789"
}
],
"folderId": "<string>",
"tagIds": ["a1b2c3d4"],
"aliases": ["urlaub"],
"comments": "<string>",
"proxy": True,
"qrSettings": {
"dotColor": "<string>",
"hideLogo": True,
"markerColor": "<string>"
},
"previewSettings": {
"assetId": "<string>",
"capturedAt": "2023-11-07T05:31:56Z",
"capturedFor": "<string>",
"hasDark": True,
"height": 123,
"width": 123
}
}
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({
slug: 'handbook',
destination: 'https://example.com/new-target',
title: '<string>',
description: '<string>',
iconSettings: {background: {color: '<string>'}, glyph: {ref: '<string>'}},
masked: true,
password: '<string>',
expiresAt: '2023-11-07T05:31:56Z',
dynamicRouting: [
{
conditions: [{attribute: 'country', values: ['DE', 'AT', 'CH']}],
destination: 'https://apps.apple.com/de/app/id123456789'
}
],
folderId: '<string>',
tagIds: ['a1b2c3d4'],
aliases: ['urlaub'],
comments: '<string>',
proxy: true,
qrSettings: {dotColor: '<string>', hideLogo: true, markerColor: '<string>'},
previewSettings: {
assetId: '<string>',
capturedAt: '2023-11-07T05:31:56Z',
capturedFor: '<string>',
hasDark: true,
height: 123,
width: 123
}
})
};
fetch('https://api.uselora.com/v1/shortcuts/{handle}', 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://api.uselora.com/v1/shortcuts/{handle}",
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([
'slug' => 'handbook',
'destination' => 'https://example.com/new-target',
'title' => '<string>',
'description' => '<string>',
'iconSettings' => [
'background' => [
'color' => '<string>'
],
'glyph' => [
'ref' => '<string>'
]
],
'masked' => true,
'password' => '<string>',
'expiresAt' => '2023-11-07T05:31:56Z',
'dynamicRouting' => [
[
'conditions' => [
[
'attribute' => 'country',
'values' => [
'DE',
'AT',
'CH'
]
]
],
'destination' => 'https://apps.apple.com/de/app/id123456789'
]
],
'folderId' => '<string>',
'tagIds' => [
'a1b2c3d4'
],
'aliases' => [
'urlaub'
],
'comments' => '<string>',
'proxy' => true,
'qrSettings' => [
'dotColor' => '<string>',
'hideLogo' => true,
'markerColor' => '<string>'
],
'previewSettings' => [
'assetId' => '<string>',
'capturedAt' => '2023-11-07T05:31:56Z',
'capturedFor' => '<string>',
'hasDark' => true,
'height' => 123,
'width' => 123
]
]),
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://api.uselora.com/v1/shortcuts/{handle}"
payload := strings.NewReader("{\n \"slug\": \"handbook\",\n \"destination\": \"https://example.com/new-target\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"iconSettings\": {\n \"background\": {\n \"color\": \"<string>\"\n },\n \"glyph\": {\n \"ref\": \"<string>\"\n }\n },\n \"masked\": true,\n \"password\": \"<string>\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\",\n \"dynamicRouting\": [\n {\n \"conditions\": [\n {\n \"attribute\": \"country\",\n \"values\": [\n \"DE\",\n \"AT\",\n \"CH\"\n ]\n }\n ],\n \"destination\": \"https://apps.apple.com/de/app/id123456789\"\n }\n ],\n \"folderId\": \"<string>\",\n \"tagIds\": [\n \"a1b2c3d4\"\n ],\n \"aliases\": [\n \"urlaub\"\n ],\n \"comments\": \"<string>\",\n \"proxy\": true,\n \"qrSettings\": {\n \"dotColor\": \"<string>\",\n \"hideLogo\": true,\n \"markerColor\": \"<string>\"\n },\n \"previewSettings\": {\n \"assetId\": \"<string>\",\n \"capturedAt\": \"2023-11-07T05:31:56Z\",\n \"capturedFor\": \"<string>\",\n \"hasDark\": true,\n \"height\": 123,\n \"width\": 123\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://api.uselora.com/v1/shortcuts/{handle}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"slug\": \"handbook\",\n \"destination\": \"https://example.com/new-target\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"iconSettings\": {\n \"background\": {\n \"color\": \"<string>\"\n },\n \"glyph\": {\n \"ref\": \"<string>\"\n }\n },\n \"masked\": true,\n \"password\": \"<string>\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\",\n \"dynamicRouting\": [\n {\n \"conditions\": [\n {\n \"attribute\": \"country\",\n \"values\": [\n \"DE\",\n \"AT\",\n \"CH\"\n ]\n }\n ],\n \"destination\": \"https://apps.apple.com/de/app/id123456789\"\n }\n ],\n \"folderId\": \"<string>\",\n \"tagIds\": [\n \"a1b2c3d4\"\n ],\n \"aliases\": [\n \"urlaub\"\n ],\n \"comments\": \"<string>\",\n \"proxy\": true,\n \"qrSettings\": {\n \"dotColor\": \"<string>\",\n \"hideLogo\": true,\n \"markerColor\": \"<string>\"\n },\n \"previewSettings\": {\n \"assetId\": \"<string>\",\n \"capturedAt\": \"2023-11-07T05:31:56Z\",\n \"capturedFor\": \"<string>\",\n \"hasDark\": true,\n \"height\": 123,\n \"width\": 123\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uselora.com/v1/shortcuts/{handle}")
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 \"slug\": \"handbook\",\n \"destination\": \"https://example.com/new-target\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"iconSettings\": {\n \"background\": {\n \"color\": \"<string>\"\n },\n \"glyph\": {\n \"ref\": \"<string>\"\n }\n },\n \"masked\": true,\n \"password\": \"<string>\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\",\n \"dynamicRouting\": [\n {\n \"conditions\": [\n {\n \"attribute\": \"country\",\n \"values\": [\n \"DE\",\n \"AT\",\n \"CH\"\n ]\n }\n ],\n \"destination\": \"https://apps.apple.com/de/app/id123456789\"\n }\n ],\n \"folderId\": \"<string>\",\n \"tagIds\": [\n \"a1b2c3d4\"\n ],\n \"aliases\": [\n \"urlaub\"\n ],\n \"comments\": \"<string>\",\n \"proxy\": true,\n \"qrSettings\": {\n \"dotColor\": \"<string>\",\n \"hideLogo\": true,\n \"markerColor\": \"<string>\"\n },\n \"previewSettings\": {\n \"assetId\": \"<string>\",\n \"capturedAt\": \"2023-11-07T05:31:56Z\",\n \"capturedFor\": \"<string>\",\n \"hasDark\": true,\n \"height\": 123,\n \"width\": 123\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"url": "https://app.uselora.com/acme/short/handbook",
"destination": "<string>",
"title": "<string>",
"description": "<string>",
"icon": "<string>",
"image": "<string>",
"video": "<string>",
"visibility": "PRIVATE",
"archived": true,
"masked": true,
"passwordProtected": true,
"expiresAt": "<string>",
"dynamicRouting": [
{
"conditions": [
{
"attribute": "country",
"operator": "is",
"values": [
"DE",
"AT",
"CH"
]
}
],
"destination": "https://apps.apple.com/de/app/id123456789"
}
],
"placeholders": [
{
"name": "<string>",
"default": "<string>",
"label": null
}
],
"folderId": "a1b2c3d4",
"tagIds": [
"a1b2c3d4"
],
"aliases": [
"urlaub",
"ferien"
],
"externalId": "<string>",
"tenantId": "<string>",
"comments": "<string>",
"workspaceId": "<string>",
"userId": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"metadataSync": {
"description": "auto",
"title": "auto"
},
"previewUrl": "<string>",
"previewDarkUrl": "<string>",
"additionalFolderIds": [
"a1b2c3d4"
],
"iconSettings": {
"background": {
"color": "<string>",
"type": "color"
},
"glyph": {
"ref": "<string>",
"source": "favicon",
"variant": "color"
}
},
"previewSettings": {
"assetId": "<string>",
"blobHost": "<string>",
"capturedAt": "2023-11-07T05:31:56Z",
"capturedFor": "<string>",
"hasDark": true,
"height": 123,
"source": "screenshot",
"width": 123
},
"qrSettings": {
"dotColor": "<string>",
"dotStyle": "square",
"frame": "none",
"hideLogo": true,
"markerBorder": "square",
"markerCenter": "square",
"markerColor": "<string>"
}
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"fieldErrors": {},
"traceId": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"code": "plan_requires_upgrade",
"requestId": "<string>",
"traceId": "<string>",
"current_plan": "<string>",
"required_capability": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"traceId": "<string>",
"required_scope": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"code": "payload_too_large",
"requestId": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"code": "internal_error",
"requestId": "<string>",
"traceId": "<string>"
}Update shortcut
All fields are optional. Omitted fields stay as-is. Renaming the slug runs the same reserved-word and uniqueness checks as create. archived is not editable here and will get its own endpoint.
curl --request PATCH \
--url https://api.uselora.com/v1/shortcuts/{handle} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"slug": "handbook",
"destination": "https://example.com/new-target",
"title": "<string>",
"description": "<string>",
"iconSettings": {
"background": {
"color": "<string>"
},
"glyph": {
"ref": "<string>"
}
},
"masked": true,
"password": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"dynamicRouting": [
{
"conditions": [
{
"attribute": "country",
"values": [
"DE",
"AT",
"CH"
]
}
],
"destination": "https://apps.apple.com/de/app/id123456789"
}
],
"folderId": "<string>",
"tagIds": [
"a1b2c3d4"
],
"aliases": [
"urlaub"
],
"comments": "<string>",
"proxy": true,
"qrSettings": {
"dotColor": "<string>",
"hideLogo": true,
"markerColor": "<string>"
},
"previewSettings": {
"assetId": "<string>",
"capturedAt": "2023-11-07T05:31:56Z",
"capturedFor": "<string>",
"hasDark": true,
"height": 123,
"width": 123
}
}
'import requests
url = "https://api.uselora.com/v1/shortcuts/{handle}"
payload = {
"slug": "handbook",
"destination": "https://example.com/new-target",
"title": "<string>",
"description": "<string>",
"iconSettings": {
"background": { "color": "<string>" },
"glyph": { "ref": "<string>" }
},
"masked": True,
"password": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"dynamicRouting": [
{
"conditions": [
{
"attribute": "country",
"values": ["DE", "AT", "CH"]
}
],
"destination": "https://apps.apple.com/de/app/id123456789"
}
],
"folderId": "<string>",
"tagIds": ["a1b2c3d4"],
"aliases": ["urlaub"],
"comments": "<string>",
"proxy": True,
"qrSettings": {
"dotColor": "<string>",
"hideLogo": True,
"markerColor": "<string>"
},
"previewSettings": {
"assetId": "<string>",
"capturedAt": "2023-11-07T05:31:56Z",
"capturedFor": "<string>",
"hasDark": True,
"height": 123,
"width": 123
}
}
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({
slug: 'handbook',
destination: 'https://example.com/new-target',
title: '<string>',
description: '<string>',
iconSettings: {background: {color: '<string>'}, glyph: {ref: '<string>'}},
masked: true,
password: '<string>',
expiresAt: '2023-11-07T05:31:56Z',
dynamicRouting: [
{
conditions: [{attribute: 'country', values: ['DE', 'AT', 'CH']}],
destination: 'https://apps.apple.com/de/app/id123456789'
}
],
folderId: '<string>',
tagIds: ['a1b2c3d4'],
aliases: ['urlaub'],
comments: '<string>',
proxy: true,
qrSettings: {dotColor: '<string>', hideLogo: true, markerColor: '<string>'},
previewSettings: {
assetId: '<string>',
capturedAt: '2023-11-07T05:31:56Z',
capturedFor: '<string>',
hasDark: true,
height: 123,
width: 123
}
})
};
fetch('https://api.uselora.com/v1/shortcuts/{handle}', 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://api.uselora.com/v1/shortcuts/{handle}",
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([
'slug' => 'handbook',
'destination' => 'https://example.com/new-target',
'title' => '<string>',
'description' => '<string>',
'iconSettings' => [
'background' => [
'color' => '<string>'
],
'glyph' => [
'ref' => '<string>'
]
],
'masked' => true,
'password' => '<string>',
'expiresAt' => '2023-11-07T05:31:56Z',
'dynamicRouting' => [
[
'conditions' => [
[
'attribute' => 'country',
'values' => [
'DE',
'AT',
'CH'
]
]
],
'destination' => 'https://apps.apple.com/de/app/id123456789'
]
],
'folderId' => '<string>',
'tagIds' => [
'a1b2c3d4'
],
'aliases' => [
'urlaub'
],
'comments' => '<string>',
'proxy' => true,
'qrSettings' => [
'dotColor' => '<string>',
'hideLogo' => true,
'markerColor' => '<string>'
],
'previewSettings' => [
'assetId' => '<string>',
'capturedAt' => '2023-11-07T05:31:56Z',
'capturedFor' => '<string>',
'hasDark' => true,
'height' => 123,
'width' => 123
]
]),
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://api.uselora.com/v1/shortcuts/{handle}"
payload := strings.NewReader("{\n \"slug\": \"handbook\",\n \"destination\": \"https://example.com/new-target\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"iconSettings\": {\n \"background\": {\n \"color\": \"<string>\"\n },\n \"glyph\": {\n \"ref\": \"<string>\"\n }\n },\n \"masked\": true,\n \"password\": \"<string>\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\",\n \"dynamicRouting\": [\n {\n \"conditions\": [\n {\n \"attribute\": \"country\",\n \"values\": [\n \"DE\",\n \"AT\",\n \"CH\"\n ]\n }\n ],\n \"destination\": \"https://apps.apple.com/de/app/id123456789\"\n }\n ],\n \"folderId\": \"<string>\",\n \"tagIds\": [\n \"a1b2c3d4\"\n ],\n \"aliases\": [\n \"urlaub\"\n ],\n \"comments\": \"<string>\",\n \"proxy\": true,\n \"qrSettings\": {\n \"dotColor\": \"<string>\",\n \"hideLogo\": true,\n \"markerColor\": \"<string>\"\n },\n \"previewSettings\": {\n \"assetId\": \"<string>\",\n \"capturedAt\": \"2023-11-07T05:31:56Z\",\n \"capturedFor\": \"<string>\",\n \"hasDark\": true,\n \"height\": 123,\n \"width\": 123\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://api.uselora.com/v1/shortcuts/{handle}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"slug\": \"handbook\",\n \"destination\": \"https://example.com/new-target\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"iconSettings\": {\n \"background\": {\n \"color\": \"<string>\"\n },\n \"glyph\": {\n \"ref\": \"<string>\"\n }\n },\n \"masked\": true,\n \"password\": \"<string>\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\",\n \"dynamicRouting\": [\n {\n \"conditions\": [\n {\n \"attribute\": \"country\",\n \"values\": [\n \"DE\",\n \"AT\",\n \"CH\"\n ]\n }\n ],\n \"destination\": \"https://apps.apple.com/de/app/id123456789\"\n }\n ],\n \"folderId\": \"<string>\",\n \"tagIds\": [\n \"a1b2c3d4\"\n ],\n \"aliases\": [\n \"urlaub\"\n ],\n \"comments\": \"<string>\",\n \"proxy\": true,\n \"qrSettings\": {\n \"dotColor\": \"<string>\",\n \"hideLogo\": true,\n \"markerColor\": \"<string>\"\n },\n \"previewSettings\": {\n \"assetId\": \"<string>\",\n \"capturedAt\": \"2023-11-07T05:31:56Z\",\n \"capturedFor\": \"<string>\",\n \"hasDark\": true,\n \"height\": 123,\n \"width\": 123\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uselora.com/v1/shortcuts/{handle}")
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 \"slug\": \"handbook\",\n \"destination\": \"https://example.com/new-target\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"iconSettings\": {\n \"background\": {\n \"color\": \"<string>\"\n },\n \"glyph\": {\n \"ref\": \"<string>\"\n }\n },\n \"masked\": true,\n \"password\": \"<string>\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\",\n \"dynamicRouting\": [\n {\n \"conditions\": [\n {\n \"attribute\": \"country\",\n \"values\": [\n \"DE\",\n \"AT\",\n \"CH\"\n ]\n }\n ],\n \"destination\": \"https://apps.apple.com/de/app/id123456789\"\n }\n ],\n \"folderId\": \"<string>\",\n \"tagIds\": [\n \"a1b2c3d4\"\n ],\n \"aliases\": [\n \"urlaub\"\n ],\n \"comments\": \"<string>\",\n \"proxy\": true,\n \"qrSettings\": {\n \"dotColor\": \"<string>\",\n \"hideLogo\": true,\n \"markerColor\": \"<string>\"\n },\n \"previewSettings\": {\n \"assetId\": \"<string>\",\n \"capturedAt\": \"2023-11-07T05:31:56Z\",\n \"capturedFor\": \"<string>\",\n \"hasDark\": true,\n \"height\": 123,\n \"width\": 123\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"url": "https://app.uselora.com/acme/short/handbook",
"destination": "<string>",
"title": "<string>",
"description": "<string>",
"icon": "<string>",
"image": "<string>",
"video": "<string>",
"visibility": "PRIVATE",
"archived": true,
"masked": true,
"passwordProtected": true,
"expiresAt": "<string>",
"dynamicRouting": [
{
"conditions": [
{
"attribute": "country",
"operator": "is",
"values": [
"DE",
"AT",
"CH"
]
}
],
"destination": "https://apps.apple.com/de/app/id123456789"
}
],
"placeholders": [
{
"name": "<string>",
"default": "<string>",
"label": null
}
],
"folderId": "a1b2c3d4",
"tagIds": [
"a1b2c3d4"
],
"aliases": [
"urlaub",
"ferien"
],
"externalId": "<string>",
"tenantId": "<string>",
"comments": "<string>",
"workspaceId": "<string>",
"userId": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"metadataSync": {
"description": "auto",
"title": "auto"
},
"previewUrl": "<string>",
"previewDarkUrl": "<string>",
"additionalFolderIds": [
"a1b2c3d4"
],
"iconSettings": {
"background": {
"color": "<string>",
"type": "color"
},
"glyph": {
"ref": "<string>",
"source": "favicon",
"variant": "color"
}
},
"previewSettings": {
"assetId": "<string>",
"blobHost": "<string>",
"capturedAt": "2023-11-07T05:31:56Z",
"capturedFor": "<string>",
"hasDark": true,
"height": 123,
"source": "screenshot",
"width": 123
},
"qrSettings": {
"dotColor": "<string>",
"dotStyle": "square",
"frame": "none",
"hideLogo": true,
"markerBorder": "square",
"markerCenter": "square",
"markerColor": "<string>"
}
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"fieldErrors": {},
"traceId": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"code": "plan_requires_upgrade",
"requestId": "<string>",
"traceId": "<string>",
"current_plan": "<string>",
"required_capability": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"traceId": "<string>",
"required_scope": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"code": "payload_too_large",
"requestId": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"requestId": "<string>",
"code": "<string>",
"traceId": "<string>"
}{
"error": "<string>",
"code": "internal_error",
"requestId": "<string>",
"traceId": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The shortcut's slug or id (UUID).
Body
Partial shortcut update — all fields optional (PATCH semantics).
New unique short path. Omit to keep the existing slug.
1 - 50^[a-z0-9]([a-z0-9-_]*[a-z0-9])?$"handbook"
New destination URL. Same scheme rules as create (no javascript:/data:/file:).
1 - 32000"https://example.com/new-target"
New title. Pass null to clear.
New description. Pass null to clear.
Replace the icon recipe. Pass null to reset to the default. Omit to leave it untouched. The payload replaces the whole recipe — partial merges are not supported.
Show child attributes
Show child attributes
New visibility level. One of PRIVATE, WORKSPACE, or UNLISTED.
PRIVATE, WORKSPACE, UNLISTED The password required to access the destination URL of the shortcut.
1 - 256The date and time when the shortcut expires.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$Replace the routing rules. Pass [] or null to remove all rules. Omit to leave them untouched.
10Show child attributes
Show child attributes
Move the shortcut to a different folder, by its 8-character ID. The caller must have access to the target folder.
^[0-9abcdefghjkmnpqrstvwxyz]{8}$Replace the tag set. Pass the full set you want — existing tags not in this list are removed. Omit to leave tags untouched. Pass [] to clear all tags.
50^[0-9abcdefghjkmnpqrstvwxyz]{8}$["a1b2c3d4"]
Replace the alias set. Pass the full set you want — existing aliases not in this list are removed. Omit to leave aliases untouched. Pass [] to clear all aliases.
101 - 50^[a-z0-9]([a-z0-9-_]*[a-z0-9])?$["urlaub"]
Comments about the shortcut.
Saved QR code design. Pass null to reset to the default design.
Show child attributes
Show child attributes
Replace the stored screenshot. Pass an assetId already uploaded to this workspace, { "source": "none" } to decline a preview, or null to make it eligible for automatic capture again. Omit to leave it untouched. The payload replaces the whole record — partial merges are not supported.
Show child attributes
Show child attributes
Response
The updated shortcut.
A shortcut.
The shortcut's unique ID.
The shortcut slug.
Workspace-scoped shortcut URL. Open it to record a click and redirect to the destination.
"https://app.uselora.com/acme/short/handbook"
The shortcut's destination URL.
PRIVATE, WORKSPACE, UNLISTED Whether the shortcut is archived. Defaults to false if not provided.
Whether this shortcut requires a password before redirecting. The password hash is never returned.
The date and time when the shortcut expires.
Ordered routing rules, evaluated top to bottom — the first rule whose conditions all match wins. Conditions within a rule are ANDed; values within a condition are ORed. Visitors matching no rule get the shortcut's default destination.
10Show child attributes
Show child attributes
Dynamic placeholders parsed from the destination URL, in template order (e.g. {query}). Empty for static destinations.
Show child attributes
Show child attributes
The 8-character ID of the folder this shortcut belongs to.
^[0-9abcdefghjkmnpqrstvwxyz]{8}$"a1b2c3d4"
The unique IDs of the tags assigned to the shortcut.
^[0-9abcdefghjkmnpqrstvwxyz]{8}$["a1b2c3d4"]
Additional handles that resolve to this shortcut in the same namespace as the canonical slug.
1 - 50^[a-z0-9]([a-z0-9-_]*[a-z0-9])?$["urlaub", "ferien"]
The shortcut ID in your system. If set, it can identify the shortcut in future API requests. The ext_ prefix is recommended on query parameters for visual disambiguation, but the server accepts prefixed and bare values. This key is unique across your workspace.
The ID of the tenant that created the shortcut in your system. If set, it can be used to fetch all shortcuts for a tenant.
Comments about the shortcut.
ID of the workspace the shortcut belongs to.
ID of the user who created the shortcut.
ISO 8601 creation timestamp.
ISO 8601 timestamp of the last update.
Whether title and description are still kept in sync with the destination automatically, or have been overridden by hand. The screenshot's own sync state is previewSettings.source.
Show child attributes
Show child attributes
Resolved URL of the light screenshot, or null when there is none.
Resolved URL of the dark screenshot, or null when the preview has no dark variant.
Short IDs of ADDITIONAL folders this shortcut appears in, excluding its primary folder (folderId). Empty array when it only lives in its primary folder. Settable at create; curate afterwards via the folder items endpoints. Folders you cannot see are omitted.
^[0-9abcdefghjkmnpqrstvwxyz]{8}$["a1b2c3d4"]
Structured icon recipe (glyph + background). null when the default monogram-on-neutral design is used.
Show child attributes
Show child attributes
Stored destination screenshot for the hover preview. null when none has been resolved yet; source: "none" when the owner declined one. Use the resolved previewUrl / previewDarkUrl to render it — assetId and blobHost describe where it is stored and are not accepted on a write.
Show child attributes
Show child attributes
Saved QR code design for this shortcut. null when the default design is used. Customization requires a paid plan.
Show child attributes
Show child attributes
Was this page helpful?