---
title: "Update Pin"
method: PATCH
path: "/v1/pins/{pin_id}"
tags: ["Pins"]
---

# Update Pin

`PATCH /v1/pins/{pin_id}`

## Request

- Base URL: `https://api.pinbridge.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.pinbridge.io/v1/pins/{pin_id}`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Edit a pin's title, description, link, alt text, or board before it publishes.

Queued, deferred and failed pins are edited in place and publish with the new
values. A published pin cannot be edited: Pinterest's API does not let
PinBridge change a pin once it is live, so the call returns
`409 pin_already_published`; delete the pin and publish a corrected one
instead. Pins currently publishing return `409 pin_publishing`. Both refusals
are recorded in the activity log as `pin.update_rejected`. In a simulated
sandbox `board_id` cannot change.

## Path parameters

- `pin_id` string, uuid, required

## Headers

- `x-api-key` string, nullable
- `authorization` string, nullable

## Request body

- PinUpdate: Request schema for editing a pin. Queued, deferred, or failed pins are edited locally and publish with the new values. Published pins cannot be edited (``409 pin_already_published``): Pinterest's API does not let PinBridge edit a live pin. Fields left out are unchanged.
  - `title` string, nullable: Pin title
  - `description` string, nullable: Pin description
  - `link_url` string, uri, nullable: Destination URL for the pin
  - `alt_text` string, nullable: Alternative text used for accessibility
  - `board_id` string, nullable: Move the pin to another board

## Response `200`

Successful Response

- PinResponse: Response schema for a pin.
  - `id` string, uuid, required
  - `workspace_id` string, uuid, required
  - `pinterest_account_id` string, uuid, required
  - `status` 'queued' | 'deferred' | 'publishing' | 'published' | 'failed', required: Pin status enum.
  - `media_type` 'image' | 'video', required: Pin media type enum.
  - `title` string, required
  - `description` string, nullable
  - `related_terms` string[], nullable
  - `alt_text` string, nullable
  - `dominant_color` string, nullable
  - `cover_image_url` string, nullable
  - `link_url` string, nullable
  - `media_url` string, required
  - `image_url` string, required
  - `asset_id` string, uuid, nullable
  - `board_id` string, required
  - `pinterest_pin_id` string, nullable
  - `error_code` string, nullable
  - `error_message` string, nullable
  - `idempotency_key` string, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `published_at` string, date-time, nullable
  - `failed_at` string, date-time, nullable: When the pin failed; set only while status is failed and cleared by a retry, like error_code
  - `removed_from_pinterest_at` string, date-time, nullable: When PinBridge found that this published pin no longer exists on Pinterest (deleted there by hand or with its board). The pin keeps status published; null means it is live or has not been checked.

## Other responses

- `409`: The pin is already published (`pin_already_published`) or is being published right now (`pin_publishing`).
- `422`: Validation Error

---

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