---
title: "Update Link"
method: PATCH
path: "/api/my/links/{slug}"
---

# Update Link

`PATCH /api/my/links/{slug}`

## Request

- Base URL: `https://api.drillflow.de` (the document declares no server; this is the origin it was published from)
- URL: `https://api.drillflow.de/api/my/links/{slug}`
- Auth: none declared

Managed-link knobs (paid B3 + C1/C1b, split for free accounts in C1d).

Two rules stack here.

WHICH KNOB (C1d): expiry and "viewers may copy" are free for any signed-in
owner. An expiry is hygiene — anonymous links carry one anyway — and the
copy switch is documented as a request rather than a barrier, so charging
for it would be selling something we ourselves call unenforceable. A
password IS enforced, a readable name claims a public namespace, and the
view count grows with use: those three stay paid.

SETTING vs REMOVING (C1c): taking a paid knob off never needs the plan.
Otherwise an account whose subscription lapses could not remove the password
it set itself — one support case per cancellation.

## Path parameters

- `slug` string, required

## Request body

- LinkUpdate: Partial update; omitted fields stay untouched. expires_at=null clears the expiry, password=null removes the password.
  - `expires_at` integer, nullable
  - `allow_copy` boolean, nullable
  - `name` string, nullable
  - `password` string, nullable

## Response `200`

Successful Response

- LinkInfo
  - `slug` string, required
  - `url` string, required
  - `created_at` integer, required
  - `expires_at` integer, nullable
  - `allow_copy` boolean
  - `view_count` integer
  - `protected` boolean
  - `name` string, nullable
  - `named_url` string, nullable
  - `title` string
  - `has_preview` boolean

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/drillflow/apis/drillflow-api.md) · [All operations](https://skmtc.dev/drillflow/apis/drillflow-api/llms.txt) · [OpenAPI document](https://skmtc.dev/drillflow/apis/drillflow-api/revisions/c892102e97b0?raw)
