---
title: "Create Pin"
method: POST
path: "/pins"
tags: ["pins"]
---

# Create Pin

`POST /pins`

Create a Pin on a board or board section owned by the "operation user_account".

Note: If the current "operation user_account" (defined by the access token) has access to another user's Ad Accounts via Pinterest Business Access, you can modify your request to make use of the current operation_user_account's permissions to those Ad Accounts by including the ad_account_id in the path parameters for the request (e.g. .../?ad_account_id=12345&...).

- This function is intended solely for publishing new content created by the user. If you are interested in saving content created by others to your Pinterest boards, sometimes called 'curated content', please use our <a href='/docs/add-ons/save-button'>Save button</a> instead. For more tips on creating fresh content for Pinterest, review our <a href='/docs/solutions/content-apps'>Content App Solutions Guide</a>.

<strong><a href='/docs/solutions/content-apps/#creatingvideopins'>Learn more</a></strong> about video Pin creation.

## Request body

- Pin — Pin
  - `id` string
  - `created_at` string, date-time
  - `link` string, nullable
  - `title` string, nullable
  - `description` string, nullable
  - `dominant_color` string, nullable — Dominant pin color. Hex number, e.g. \"#6E7874\".
  - `alt_text` string, nullable
  - `board_id` string — The board to which this Pin belongs.
  - `board_section_id` string, nullable — The board section to which this Pin belongs.
  - `board_owner` BoardOwner
    - `username` string
  - `media` PinMedia — Pin media objects.
    - `media_type` string
  - `media_source` union — Pin media source.
    - PinMediaSourceImageBase64 — Base64-encoded image media source
      - `source_type` 'image_base64', required
      - `content_type` 'image/jpeg' | 'image/png', required
      - `data` string, required
    - PinMediaSourceImageURL — Image URL-based media source
      - `source_type` 'image_url', required
      - `url` string, required
    - PinMediaSourceVideoID — Video ID-based media source
      - `source_type` 'video_id', required
      - `cover_image_url` string, required
      - `media_id` string, required

## Response `201`

Successful pin creation.

- Pin — Pin
  - `id` string
  - `created_at` string, date-time
  - `link` string, nullable
  - `title` string, nullable
  - `description` string, nullable
  - `dominant_color` string, nullable — Dominant pin color. Hex number, e.g. \"#6E7874\".
  - `alt_text` string, nullable
  - `board_id` string — The board to which this Pin belongs.
  - `board_section_id` string, nullable — The board section to which this Pin belongs.
  - `board_owner` BoardOwner
    - `username` string
  - `media` PinMedia — Pin media objects.
    - `media_type` string
  - `media_source` union — Pin media source.
    - PinMediaSourceImageBase64 — Base64-encoded image media source
      - `source_type` 'image_base64', required
      - `content_type` 'image/jpeg' | 'image/png', required
      - `data` string, required
    - PinMediaSourceImageURL — Image URL-based media source
      - `source_type` 'image_url', required
      - `url` string, required
    - PinMediaSourceVideoID — Video ID-based media source
      - `source_type` 'video_id', required
      - `cover_image_url` string, required
      - `media_id` string, required

## Other responses

- `400` — Invalid Pin parameters response
- `403` — The Pin's image is too small, too large or is broken
- `404` — Board or section not found
- `429` — This request exceeded a rate limit. This can happen if the client exceeds one of the published rate limits or if multiple write operations are applied to an object within a short time window.
- `default` — Unexpected error

## Changes

- **2022-07-11** (v5) `0d5998752011` — 4 info
  - added the new optional request property `dominant_color`
  - added `video` discriminator mapping keys to the `media/allOf[subschema #1: Pin media]/` request property
  - added the optional property `dominant_color` to the response with the `201` status
  - added `video` discriminator mapping keys to the `media/allOf[subschema #1: Pin media]/` response property for the response status `201`
- **2022-04-12** (v5) `723c51158044` — 2 breaking, 3 warning, 3 info
  - added `#/components/schemas/PinMediaSourceImageBase64, #/components/schemas/PinMediaSourceImageURL, #/components/schemas/PinMediaSourceVideoID` to the `media_source/allOf[subschema #1: Pin media source]/` response property `oneOf` list for the response status `201`
  - removed the required property `media_source/allOf[subschema #1: Pin media source]/source_type` from the response with the `201` status
  - changed the pattern of the request property `board_id` from `\d+` to `^\d+$`
  - changed the pattern of the request property `board_section_id` from `\d+` to `^\d+$`
  - …4 more
- …earlier changes not shown

[Full history](https://skmtc.dev/pinterest/apis/pinterest-rest-api/changes/pins/post.md)

---

[API](https://skmtc.dev/pinterest/apis/pinterest-rest-api.md) · [All operations](https://skmtc.dev/pinterest/apis/pinterest-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/pinterest/pinterest-rest-api/revisions/0d5998752011/schema)
