---
title: "Delete a link"
method: DELETE
path: "/links/{id}"
tags: ["Links"]
---

# Delete a link

`DELETE /links/{id}`

## Request

- Base URL: `https://api.warplink.app/v1`
- URL: `https://api.warplink.app/v1/links/{id}`
- Auth: HTTP bearer

Permanently deletes the link. This is not reversible: it also removes the link's click history and frees the slug for reuse. To pause a link instead while keeping its data, send a PATCH with `is_active` set to `false`.

## Path parameters

- `id` string, uuid, required

## Response `200`

Deleted link

- Link
  - `id` string, uuid
  - `short_url` string
  - `slug` string
  - `name` string, nullable: The link's own name in the dashboard. Null shows the slug.
  - `domain` string
  - `destination_url` string, uri
  - `ios_url` string, uri, nullable
  - `ios_fallback_url` string, uri, nullable
  - `android_url` string, uri, nullable
  - `android_fallback_url` string, uri, nullable
  - `og_title` string, nullable
  - `og_description` string, nullable
  - `og_image_url` string, uri, nullable
  - `app_id` string, uuid, nullable
  - `utm_source` string, nullable: Added to the redirect URL as utm_source when no higher source supplies one. Order for utm_source: an injected utm_source in "always" mode wins; otherwise the visitor's own utm_source when parameters.forwarding passes it, then a utm_source already in the destination URL, then an injected utm_source in "default" mode (this field is then not used), then this field. Applies to http and https URLs only; not to apps.apple.com, itunes.apple.com, play.google.com, apps.microsoft.com or custom-scheme URLs.
  - `utm_medium` string, nullable: Added to the redirect URL as utm_medium when no higher source supplies one. Order for utm_medium: an injected utm_medium in "always" mode wins; otherwise the visitor's own utm_medium when parameters.forwarding passes it, then a utm_medium already in the destination URL, then an injected utm_medium in "default" mode (this field is then not used), then this field. Applies to http and https URLs only; not to apps.apple.com, itunes.apple.com, play.google.com, apps.microsoft.com or custom-scheme URLs.
  - `utm_campaign` string, nullable: Added to the redirect URL as utm_campaign when no higher source supplies one. Order for utm_campaign: an injected utm_campaign in "always" mode wins; otherwise the visitor's own utm_campaign when parameters.forwarding passes it, then a utm_campaign already in the destination URL, then an injected utm_campaign in "default" mode (this field is then not used), then this field. Applies to http and https URLs only; not to apps.apple.com, itunes.apple.com, play.google.com, apps.microsoft.com or custom-scheme URLs.
  - `match_window_hours` integer, nullable
  - `expires_at` string, date-time, nullable
  - `is_active` boolean
  - `tags` string[]
  - `parameters` LinkParamConfig, nullable: Per-link query-parameter rules. `injected` params are appended to the destination URL; `forwarding` controls which incoming params pass through. Org-level defaults are inherited and merged with link-level config (link wins on key conflict). Precedence: link > org. Send `null` (or omit) to clear/inherit the org defaults.
    - `injected` object[], required: Params appended to the destination URL.
      - `key` string, required
      - `value` string, required
      - `mode` 'always' | 'default' | 'null', nullable, required: `always` overrides an incoming param; `default` only fills when absent; `null` inherits `defaultMode`.
    - `forwarding` object, nullable: Incoming-param forwarding. `null` inherits the org default.
      - `enabled` boolean, required
      - `allowlist` string[], nullable, required: When enabled, only these incoming params forward. `null` forwards all.
    - `defaultMode` 'always' | 'default' | 'null', nullable: Fallback mode for injected params whose `mode` is null. `null` inherits the org default.
    - `inheritOrgInjected` boolean, required: Whether to inherit org-level injected params.
    - `suppressedOrgKeys` string[], required: Org injected-param keys to suppress on this link.
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `redirected_from` object[]: Old URLs of this link that redirect to it with a permanent 301, oldest first. Present only on GET /v1/links/{id} (and the get_link MCP tool), not on list, update, activate or deactivate responses.
    - `url` string, uri: The old URL.
    - `since` string, date-time: When the link moved and the old URL began to redirect.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found

---

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