# Update Custom Link

PUT /api/v2/projects/{projectId}/crm/custom-contact-links/{customContactLinkId}

Updates a custom contact link's label or URL template. Only the fields present in the body are written. The template is stored in two forms. Send `urlHTML` and `urlJSON` together when changing the URL, since the server does not derive one from the other.

## Request

- projectId: string, path, required — ID of the project that owns the link.
- customContactLinkId: string, path, required — ID of the custom link to update.
- label: string — Text shown for the link on the contact page.
- urlHTML: string — The URL template rendered as HTML. Update alongside `urlJSON`. The two are the same template in different forms and are not derived from each other.
- urlJSON: object — The URL template as editor document JSON, holding the contact-property placeholders that get substituted per contact.
  - type: string, required
  - content: object[]
    - type: string, required
    - attrs: object
    - content: object[]
    - marks: object[]
    - text: string

## Response

- 200: Successful response
  - createdAt: string, required
  - id: string, required
  - label: string, required
  - projectId: string, required
  - updatedAt: string, required
  - urlHTML: string, required
  - urlJSON: object, required
    - type: string, required
    - content: object[]
- 400: Invalid input data
- 401: Authorization not provided
- 403: Insufficient access
- 404: Not found
- 500: Internal server error
