curl --request PATCH \
--url https://api.uselora.com/v1/tags/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"color": "BLUE",
"description": "Campaign links for the 2026 employer brand",
"name": "Marketing"
}
'import requests
url = "https://api.uselora.com/v1/tags/{id}"
payload = {
"color": "BLUE",
"description": "Campaign links for the 2026 employer brand",
"name": "Marketing"
}
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({
color: 'BLUE',
description: 'Campaign links for the 2026 employer brand',
name: 'Marketing'
})
};
fetch('https://api.uselora.com/v1/tags/{id}', 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/tags/{id}",
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([
'color' => 'BLUE',
'description' => 'Campaign links for the 2026 employer brand',
'name' => 'Marketing'
]),
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/tags/{id}"
payload := strings.NewReader("{\n \"color\": \"BLUE\",\n \"description\": \"Campaign links for the 2026 employer brand\",\n \"name\": \"Marketing\"\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/tags/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"color\": \"BLUE\",\n \"description\": \"Campaign links for the 2026 employer brand\",\n \"name\": \"Marketing\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uselora.com/v1/tags/{id}")
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 \"color\": \"BLUE\",\n \"description\": \"Campaign links for the 2026 employer brand\",\n \"name\": \"Marketing\"\n}"
response = http.request(request)
puts response.read_body{
"id": "a1b2c3d4",
"name": "<string>",
"slug": "<string>",
"color": "DEFAULT",
"workspaceId": "<string>",
"creatorId": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"description": "Campaign links for the 2026 employer brand"
}{
"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 tag
All fields are optional. Renaming a tag updates its slug and runs the same uniqueness check as create.
curl --request PATCH \
--url https://api.uselora.com/v1/tags/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"color": "BLUE",
"description": "Campaign links for the 2026 employer brand",
"name": "Marketing"
}
'import requests
url = "https://api.uselora.com/v1/tags/{id}"
payload = {
"color": "BLUE",
"description": "Campaign links for the 2026 employer brand",
"name": "Marketing"
}
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({
color: 'BLUE',
description: 'Campaign links for the 2026 employer brand',
name: 'Marketing'
})
};
fetch('https://api.uselora.com/v1/tags/{id}', 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/tags/{id}",
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([
'color' => 'BLUE',
'description' => 'Campaign links for the 2026 employer brand',
'name' => 'Marketing'
]),
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/tags/{id}"
payload := strings.NewReader("{\n \"color\": \"BLUE\",\n \"description\": \"Campaign links for the 2026 employer brand\",\n \"name\": \"Marketing\"\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/tags/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"color\": \"BLUE\",\n \"description\": \"Campaign links for the 2026 employer brand\",\n \"name\": \"Marketing\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uselora.com/v1/tags/{id}")
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 \"color\": \"BLUE\",\n \"description\": \"Campaign links for the 2026 employer brand\",\n \"name\": \"Marketing\"\n}"
response = http.request(request)
puts response.read_body{
"id": "a1b2c3d4",
"name": "<string>",
"slug": "<string>",
"color": "DEFAULT",
"workspaceId": "<string>",
"creatorId": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"description": "Campaign links for the 2026 employer brand"
}{
"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
Workspace API key (lora_sk_…) sent as Authorization: Bearer <api_key>. Each scoped operation names the scope it requires in its security requirement, for example shortcuts.write; a key without it receives 403 with code: insufficient_scope. GET /v1/qr also accepts anonymous requests and requires no scope.
Path Parameters
The tag's unique ID.
^[0-9abcdefghjkmnpqrstvwxyz]{8}$"a1b2c3d4"
Body
Payload to update a tag
Tag color
DEFAULT, GRAY, BROWN, ORANGE, YELLOW, GREEN, BLUE, PURPLE, PINK, RED "BLUE"
Optional one-line description of what the tag is for (up to 200 chars). Line breaks and repeated whitespace are collapsed to single spaces and the ends trimmed; an empty string or null clears it.
"Campaign links for the 2026 employer brand"
The tag name (3..50 chars). The slug is derived from this server-side and updates whenever name changes.
3 - 50"Marketing"
Response
The updated tag.
A tag.
The tag's unique ID.
^[0-9abcdefghjkmnpqrstvwxyz]{8}$"a1b2c3d4"
DEFAULT, GRAY, BROWN, ORANGE, YELLOW, GREEN, BLUE, PURPLE, PINK, RED ID of the workspace the tag belongs to.
ID of the user who created the tag.
ISO 8601 creation timestamp.
ISO 8601 timestamp of the last update.
What the tag is for, or null when it has none.
"Campaign links for the 2026 employer brand"
Was this page helpful?