---
title: "Update a scheduling link"
method: PATCH
path: "/v1/links/{link_id}"
tags: ["Scheduling Links"]
---

# Update a scheduling link

`PATCH /v1/links/{link_id}`

## Request

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

## Path parameters

- `link_id` string, required

## Request body

- UpdateLinkRequest
  - `description` string, nullable: The short description visible on the scheduling link.
  - `name` string
  - `private_name` string, nullable: The private name of the link (not visible to schedulers).
  - `slug` string: The URL slug for the link. Letters, numbers, and dashes only, and unique within the scope.
  - `type` 'recurring' | 'single': Either `recurring` for Multi-Use links, or `single` for Single-Use links. Group links can't be `single`.

## Response `200`

Success

- SingleLinkResponse
  - `default_duration` integer, required: Default duration in minutes
  - `description` string: Link description, as HTML. Empty when the link has no description.
  - `durations` integer[], required: Durations in minutes
  - `fields` LinkField[], required
    - `id` string, required
    - `is_required` boolean, required
    - `label` string, required
    - `options` FieldOption[], required: The choices for a `checkboxes`, `radios`, or `select` field. Empty for other field types.
      - `id` string, required
      - `value` string, required
    - `type` 'short_text' | 'long_text' | 'checkboxes' | 'radios' | 'select' | 'url' | 'hidden', required
  - `id` string, required
  - `increment` integer, required: Minutes between slot start times
  - `name` string, required: Public link name
  - `private_name` string, nullable: Private link name. `null` when the current user can't edit the link or the link has no private name.
  - `scope` ScopePreview: Preview of a scope/team
    - `id` string, required
    - `name` string, required
    - `slug` string, required
  - `slug` string, required
  - `state` 'active' | 'pending' | 'disabled' | 'archived' | 'deleted', required

## Other responses

- `401`: Unauthorized
- `404`: Not Found
- `422`: Unprocessable Entity

---

[API](https://skmtc.dev/savvycal/apis/savvycal-meetings-api.md) - [All operations](https://skmtc.dev/savvycal/apis/savvycal-meetings-api/llms.txt) - [OpenAPI document](https://skmtc.dev/savvycal/apis/savvycal-meetings-api/revisions/398985d699a3?raw)
