---
title: "Update Signup Link"
method: PATCH
path: "/api/v1/distributor/signup-links/{link_id}"
tags: ["User APIs", "distributor-view"]
---

# Update Signup Link

`PATCH /api/v1/distributor/signup-links/{link_id}`

Edit a link's expiration, allowed domains, and seat cap. Raising the cap
on a capped link or setting a future expiration on an expired one puts it
back in circulation. Editing never consumes slots — only redemptions do
(WR-4).

## Path parameters

- `link_id` string, uuid, required

## Request body

- DistributorViewSignupLinkUpdate — Editable fields on an existing link. Contract, tier, and recipient stay fixed at creation; only the label and expiration can move. PATCH semantics: omitted fields are left untouched (the service applies only ``model_fields_set``). ``None`` for expiry (when sent) = never expires, so "provided" is tracked, not inferred from the value.
  - `label` string, nullable
  - `expires_at` string, date, nullable

## Response `200`

Successful Response

- DistributorViewSignupLink
  - `id` string, uuid, required
  - `label` string, required
  - `token` string, required
  - `recipient_email` string, nullable
  - `status` string, required
  - `expires_at` string, date, nullable
  - `created_at` string, date-time, required
  - `created_by` string, nullable
  - `contract_id` string, uuid, required
  - `tier_id` string, uuid, nullable
  - `tier_name` string, nullable
  - `redemption` DistributorViewSignupLinkRedemption
    - `name` string, nullable
    - `email` string, nullable
    - `redeemed_at` string, date-time, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api.md) · [All operations](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/carbonarc/carbon-arc-client-admin-api/revisions/a8ca30023371/schema)
