---
title: "Update Short Link"
method: PATCH
path: "/url_redirects/{id}"
tags: ["UrlRedirect"]
---

# Update Short Link

`PATCH /url_redirects/{id}`

## Request

- Base URL: `https://myworkspace.myclickfunnels.com/api/v2`
- URL: `https://myworkspace.myclickfunnels.com/api/v2/url_redirects/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://accounts.myclickfunnels.com/oauth/authorize`
    - Token URL: `https://accounts.myclickfunnels.com/oauth/token`
- TypeScript: <https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/docs/url_redirects/:id/patch.ts> (a function with typed inputs; its response is checked against the schema)

Update only supplied fields. Explicit occupied paths return 422 without suffixing or changing other resources. Changing domains with an omitted path also checks the retained path on the target domain and returns 422 if it is occupied. Same-record paths remain valid. Historical paths remain redirects. Domain changes propagate asynchronously; full_url reports the persisted canonical address. Ownership is rechecked during propagation. A newly occupied destination leaves the old canonical URL intact; select a free current_path to resolve the collision.

## Path parameters

- `id` string, required

## Request body

- object
  - `url_redirect` UrlRedirectParameters, required
    - `name` string, nullable: Short link name.
    - `original_url` string: Required destination on create.
    - `second_url` string, nullable: Optional split destination.
    - `split_percentage` integer, nullable
    - `pixel_code` string, nullable: Pixel markup; omitted on create or explicit null becomes an empty string.
    - `utm_source` string, nullable: UTM source.
    - `utm_medium` string, nullable: UTM medium.
    - `utm_campaign` string, nullable: UTM campaign.
    - `utm_term` string, nullable: UTM term.
    - `utm_content` string, nullable: UTM content.
    - `current_path` string, nullable: Explicit nonblank paths are normalized and require exact ownership: another resource's current URL, historical alias or occupied custom-domain root cannot be taken. Omitted/blank on create and blank on update generate a path; omitted on update preserves it.
    - `domain_id` union: Ready-for-use domain in this workspace (numeric or public ID). Null or 0 selects the default-site domain.
      - integer
      - string
    - `redirect_type` 'temporary' | 'permanent'

## Response `200`

OK

- UrlRedirectAttributes
  - `id` integer: Short link ID.
  - `public_id` string: Public short link ID.
  - `workspace_id` integer
  - `domain_id` integer, nullable: Configured custom domain override; null uses the workspace default domain.
  - `name` string, nullable: Short link name.
  - `original_url` string: Destination address.
  - `second_url` string, nullable: Optional split destination.
  - `split_percentage` integer, nullable
  - `pixel_code` string, nullable: Pixel markup rendered before redirecting.
  - `utm_source` string, nullable: UTM source.
  - `utm_medium` string, nullable: UTM medium.
  - `utm_campaign` string, nullable: UTM campaign.
  - `utm_term` string, nullable: UTM term.
  - `utm_content` string, nullable: UTM content.
  - `current_path` string: Persisted normalized path.
  - `full_url` string, uri, nullable: Persisted canonical address. Domain changes propagate asynchronously.
  - `redirect_type` 'temporary' | 'permanent'
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden — this request's workspace is closed to it. Three cases return this: * The access token is limited to specific workspaces (see the workspace selection made when the key was provisioned, or the workspaces approved on the OAuth consent screen) and the request acts on a workspace outside that set. * The access token is limited to specific workspaces and the request's workspace could not be determined at all. The gate is fail-closed, so a workspace-limited token is denied rather than allowed through when the target workspace is ambiguous. * The workspace's team has no active ClickFunnels subscription: it was canceled, is paused, or is locked out after failed payments. Reads and writes are both refused until the subscription is reactivated, and the body carries `"code": "subscription_inactive"`. A token with no workspace restriction never receives the first two.
- `404`: Not Found
- `422`: Unprocessable Entity

## Changes

- **2026-11-03** `511d88b30aea`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/changes/url_redirects/:id/patch.md)

---

[API](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api.md) - [All operations](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/llms.txt) - [OpenAPI document](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/revisions/511d88b30aea?raw)
