---
title: "Validate Pin"
method: POST
path: "/v1/pins/validate"
tags: ["Pins"]
---

# Validate Pin

`POST /v1/pins/validate`

## 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/validate`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Dry-run a pin request.

Runs the full acceptance path — account, media, cover image, board access,
idempotency, billing, quota and Pinterest rate headroom — and reports each
step. Returns the exact payload that would be published. Nothing is queued.

## Headers

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

## Request body

- PinCreate: Request schema for creating a pin.
  - `account_id` string, uuid, required: Pinterest account ID to publish with
  - `board_id` string, required: Pinterest board ID
  - `title` string, required: Pin title
  - `description` string, nullable: Pin description
  - `related_terms` string[], nullable: Optional related terms for Pinterest
  - `alt_text` string, nullable: Alternative text used for accessibility
  - `dominant_color` string, nullable: Dominant hex color of the pin media (for example #6E7874)
  - `cover_image_url` string, uri, nullable: Optional public cover image URL for video pins
  - `cover_image_asset_id` string, uuid, nullable: Optional uploaded image asset ID used as a video cover image
  - `link_url` string, uri, nullable: Destination URL for the pin
  - `image_url` string, uri, nullable: Public URL of the image to pin
  - `asset_id` string, uuid, nullable: Uploaded PinBridge asset ID to use for the pin image or video
  - `idempotency_key` string, required: Idempotency key to prevent duplicate pins

## Response `200`

Validation outcome; nothing is written.

- PinValidationResponse: Result of ``POST /v1/pins/validate`` (also ``POST /v1/pins?dry_run=true``).
  - `valid` boolean, required: True when no check failed; nothing was written
  - `dry_run` true
  - `checks` PinValidationCheck[], required
    - `name` string, required: Check identifier, e.g. board_access
    - `status` 'passed' | 'failed' | 'warning' | 'skipped', required
    - `code` string, nullable: Stable error code when the check failed
    - `message` string, required
    - `remediation` string, nullable
    - `details` object, nullable
  - `resolved` object, nullable: The payload PinBridge would publish after resolving assets and boards
  - `existing_pin_id` string, uuid, nullable: Set when the idempotency key already matches a pin in this workspace
  - `headroom` object, nullable: Current PinBridge quota and Pinterest rate headroom

## Other responses

- `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)
