---
title: "Create Pins Batch"
method: POST
path: "/v1/pins/batch"
tags: ["Pins"]
---

# Create Pins Batch

`POST /v1/pins/batch`

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

Create and publish several pins in one call.

Each entry is processed independently and reported with its own outcome
(`created`, `existing` for an idempotency-key hit, or `failed` with an error
envelope). Requires the bulk publishing plan feature and enough monthly quota
for every entry that would be created. Quota headers describe the workspace;
Pinterest rate headers are only included when every entry targets one account.

## Headers

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

## Request body

- PinBatchRequest: Request schema for ``POST /v1/pins/batch``.
  - `pins` PinCreate[], required: Pins to create, in order
    - `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`

Successful Response

- PinBatchResponse: Response schema for ``POST /v1/pins/batch``.
  - `created_count` integer, required
  - `existing_count` integer, required
  - `failed_count` integer, required
  - `results` PinBatchItemResult[], required
    - `index` integer, required
    - `idempotency_key` string, required
    - `status` 'created' | 'existing' | 'failed', required
    - `pin` 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.
    - `error` object, nullable: Error envelope (code, message, remediation) for failed items
  - `headroom` object, nullable

## Other responses

- `402`: Not enough monthly quota for the whole batch.
- `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)
