Version
WRITE

update_link

Change a Smart Link's name, address, destination or expiry. Only the arguments present move; the code, the bot link and the attribution cookie survive every edit.

Rename a link, point it somewhere else or give it an end date. Omitted arguments keep their stored value; an empty expires_at clears the expiry so the link runs until archived. link.updated emits with the fields that moved.

Renaming the slug moves the web address and nothing else: the old address stops answering, and a printed QR or a shared bot link keeps attributing because they carry the code.

Requires ability

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Fires one event

Delivered to every endpoint subscribed to it once the change is made.

Annotations

Idempotent

Sending the same arguments twice changes nothing the second time.

project_id*string

UUID of the project the link belongs to.

link_id*string

UUID of the Smart Link to change.

namestringoptional

A new creator-facing label, 2 to 120 characters.

slugstringoptional

A new address segment, 2 to 32 letters, digits and hyphens; the old address stops answering.

destinationstringoptional

"portal", "plan" (send plan_id unless one is stored) or "bot".

plan_idstringoptional

UUID of the plan a "plan" destination opens.

expires_atstringoptional

ISO 8601 instant after which the link stops counting, or an empty string to run until archived.

{  "data": {    "id": "7c2e5a90-3f41-4b8d-9e62-1a0d4c8b7f35",    "name": "YouTube description",    "slug": "youtube",    "code": "K7PMQ2X",    "destination": { "type": "portal", "plan_id": null, "plan_name": null },    "urls": {      "web": "https://my.subscriby.net/jane/go/youtube",      "bot": "https://t.me/JaneBot?start=via_K7PMQ2X",      "embed": "https://my.subscriby.net/jane/embed/plans?via=K7PMQ2X"    },    "state": "live",    "expires_at": null,    "archived_at": null,    "clicks": { "total": 48, "last_at": "2026-11-21T09:58:12+00:00" },    "updated_at": "2026-11-21T10:02:40+00:00"  }}

The link as it now reads, in the same shape as get_link.

VALIDATION_FAILED

a reserved or taken slug, a bad slug or name, a plan destination with no plan sent or stored, a plan of another project, or an expires_at in the past.

RESOURCE_NOT_FOUND

unknown project_id or link_id, or a link of another project.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks project-link:update.

How is this guide?

Last updated on