Edit Link
Updates an existing link identified by url_id. Only url_id is required — include at least one additional field to specify what to change. Omitted fields retain their current values. The API enforces the same plan limits and feature checks as creation.
url_id along with only the fields you want to change. Omitted fields retain their current values, so you can make targeted updates without resending the entire link configuration.
How it works
Onlyurl_id is strictly required. You must also include at least one additional field to specify what to change — otherwise the API returns a 400 error.
The edit endpoint shares the same internal logic as creation. When url_id is present in the request, the API locates the existing link and applies the supplied fields as an update. Any field you omit is preserved from the existing link, including settings like redirect type, password protection, cloaking, tracking, and social previews.
Both PUT and PATCH methods are accepted and behave identically.
Request body
Updating tags
Thetag_ids field follows the same “only what you send” rule as the rest of the edit endpoint, with one nuance worth calling out:
- Omit
tag_ids— the link’s existing tags are left untouched. - Send an array of IDs — the link’s tags are replaced with exactly that set (
[12, 18]keeps only tags 12 and 18). - Send an empty array
[]— every tag is removed from the link.
"[12,18]" is also accepted.
Response highlights
data.link— the fully qualified link after the update.data.short_url— same value aslink. Deprecated — will be removed in a future version; migrate todata.link.data.qr— base64-encoded QR PNG when a QR code exists; otherwisenull.data.created— alwaysfalsefor edit operations, confirming the link was updated rather than newly created.
Error handling
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Only url_id is required. At least one additional field must be provided to specify what to change. Omitted fields retain their current values.
ID of the existing link to update. Retrieve this from the List Links endpoint or the link creation response.
Destination URL the link redirects to.
"https://example.com/launch"
ID of the domain that hosts the link.
Workspace ID. Defaults to the first workspace associated with the organization when omitted.
Optional human-friendly title for the link.
Custom slug appended to the domain instead of an auto-generated code.
Folder to assign the link to.
Query parameters appended to the destination URL.
Whether to create a QR code for the link.
Set to true to associate the link with the specified pixel for event tracking.
Pixel ID used when tracking is enabled.
HTTP redirect status applied when visitors follow the link.
301, 302 If true, cloaks the destination URL.
If true, removes the referrer header for visitors.
Protects the link behind a password.
Password required when with_password is true.
Red channel used when generating QR codes.
0 <= x <= 25545
Green channel used when generating QR codes.
0 <= x <= 255151
Blue channel used when generating QR codes.
0 <= x <= 255123
Controls which logo is embedded inside generated QR codes.
none, custom, uploaded Base64-encoded file used when uploaded_logo_type is uploaded.
Overrides the title shown in social previews.
Overrides the description shown in social previews.
Base64-encoded image used for the social preview.
IDs of the tags to associate with the link. On creation the listed tags are attached. On edit, sending this field replaces the link's tags with the supplied set — an empty array clears every tag, while omitting the field entirely leaves existing tags untouched. Tags must belong to the same workspace and organization; unknown IDs are ignored. A JSON-encoded string of IDs (e.g. "[12,18]") is also accepted for backwards compatibility.
Overrides the private notes shown in ShortPen Links/QRs list.