---
title: "Validate Schedule"
method: POST
path: "/v1/schedules/validate"
tags: ["Schedules"]
---

# Validate Schedule

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

Dry-run a schedule request.

Same checks as `POST /v1/pins/validate` plus `run_at`. Nothing is stored.

## Headers

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

## Request body

- ScheduleCreate: Request schema for creating a scheduled pin.
  - `account_id` string, uuid, required: Pinterest account ID to publish with
  - `run_at` string, date-time, required: When to publish this pin (ISO 8601 timestamp)
  - `board_id` string, required: Pinterest board ID
  - `title` string, required: Pin title
  - `description` string, nullable: Pin description
  - `cover_image_url` string, uri, nullable: Optional public cover image URL for scheduled 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 scheduled image or video

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