Pinterest Pin API

The Pin API from Pinterest — 4 operation(s) for pin.

OpenAPI Specification

pinterest-pin-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  version: 5.13.0
  title: Pinterest Pin API
  description: This is the description of your API.
  contact:
    name: Pinterest, Inc.
    url: https://developers.pinterest.com/
  license:
    name: MIT
    url: https://spdx.org/licenses/MIT
  termsOfService: https://developers.pinterest.com/terms/
servers:
- url: https://api.pinterest.com/v5
tags:
- name: Pin
paths:
  /ad_accounts/{ad_account_id}/ssio/insertion_orders/{pin_order_id}/status:
    get:
      summary: Get insertion order status by pin order id.
      description: 'Get insertion order status for pin order id <code>pin_order_id</code>.

        - The token''s user_account must either be the Owner of the specified ad account, or have one of the necessary roles granted to them via <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a>: Admin, Finance, Campaign.'
      operationId: ssio_insertion_orders_status/get_by_pin_order_id
      security:
      - pinterest_oauth2:
        - ads:read
      x-ratelimit-category: ads_read
      x-sandbox: enabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      - $ref: '#/components/parameters/path_pin_order_id'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSIOInsertionOrderStatusResponse'
          description: Success
        '400':
          description: Invalid request parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 400
                message: Invalid request parameter.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Pin
  /pins/{pin_id}:
    get:
      summary: Get Pin
      description: 'Get a Pin owned by the "operation user_account" - or on a group board that has been shared with this account.

        - By default, the "operation user_account" is the token user_account.


        Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href=''/docs/api/v5/#operation/ad_accounts/list''>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account:


        - For Pins on public or protected boards: Owner, Admin, Analyst, Campaign Manager.

        - For Pins on secret boards: Owner, Admin.'
      tags:
      - Pin
      operationId: pins/get
      security:
      - pinterest_oauth2:
        - boards:read
        - pins:read
      x-ratelimit-category: org_read
      x-sandbox: enabled
      x-codeSamples:
      - lang: python
        label: Python SDK
        source: '# Follow this link for initial setup: https://github.com/pinterest/pinterest-python-sdk#getting-started


          from pinterest.organic.pins import Pin

          # Pin information can be fetched from profile page or from list pin method here:

          # https://developers.pinterest.com/docs/api/v5/#operation/pins/list

          PIN_ID="<Add your pin id here>"


          pin_get = Pin(pin_id=PIN_ID)

          print("Pin Id: %s, Pin Title:%s" %(pin_get.id, pin_get.title))

          '
      - lang: cURL
        label: curl
        source: '# Pin information can be fetched from profile page or from list pin method here:

          # https://developers.pinterest.com/docs/api/v5/#operation/pins/list


          curl --location --request GET ''https://api.pinterest.com/v5/pins/<insert_pin_id>'' \

          --header ''Authorization: Bearer <Add your token here>'' \

          --header ''Content-Type: application/json''

          '
      - lang: cURL
        label: curl (Sandbox)
        source: '# Pin information can be fetched from profile page or from list pin method here:

          # https://developers.pinterest.com/docs/api/v5/#operation/pins/list


          curl --location --request GET ''https://api-sandbox.pinterest.com/v5/pins/<insert_sandbox_pin_id>'' \

          --header ''Authorization: Bearer <Add your token here>'' \

          --header ''Content-Type: application/json''

          '
      parameters:
      - $ref: '#/components/parameters/path_pin_id'
      - $ref: '#/components/parameters/query_pin_metrics'
      - $ref: '#/components/parameters/query_ad_account_id'
      responses:
        '200':
          description: response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pin'
        '403':
          description: Not authorized to access board or Pin.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 29
                message: You are not permitted to access that resource.
        '404':
          description: Pin not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 50
                message: Pin not found.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      summary: Delete Pin
      description: 'Delete a Pins owned by the "operation user_account" - or on a group board that has been shared with this account.

        - By default, the "operation user_account" is the token user_account.


        Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href=''/docs/api/v5/#operation/ad_accounts/list''>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account:


        - For Pins on public or protected boards: Owner, Admin, Analyst, Campaign Manager.

        - For Pins on secret boards: Owner, Admin.'
      tags:
      - Pin
      operationId: pins/delete
      security:
      - pinterest_oauth2:
        - boards:read
        - boards:write
        - pins:read
        - pins:write
      x-ratelimit-category: org_write
      x-sandbox: enabled
      x-codeSamples:
      - lang: python
        label: Python SDK
        source: '# Follow this link for initial setup: https://github.com/pinterest/pinterest-python-sdk#getting-started


          from pinterest.organic.pins import Pin

          # Pin information can be fetched from profile page or from create/list pin method here:

          # https://developers.pinterest.com/docs/api/v5/#operation/pins/list

          PIN_ID="<Add your pin id here>"


          pin_delete=Pin.delete(pin_id=PIN_ID)


          print("Pin was deleted? %s" % (pin_delete))

          '
      - lang: cURL
        label: curl
        source: '# Pin information can be fetched from profile page or from create/list pin method here:

          # https://developers.pinterest.com/docs/api/v5/#operation/pins/list


          curl --request DELETE ''https://api.pinterest.com/v5/pins/<insert_pin_id>'' \

          --header ''Authorization: Bearer <Add your token here>'' \

          --header ''Content-Type: application/json''

          '
      - lang: cURL
        label: curl (Sandbox)
        source: '# Pin information can be fetched from profile page or from create/list pin method here:

          # https://developers.pinterest.com/docs/api/v5/#operation/pins/list


          curl --request DELETE ''https://api-sandbox.pinterest.com/v5/pins/<insert_sandbox_pin_id>'' \

          --header ''Authorization: Bearer <Add your token here>'' \

          --header ''Content-Type: application/json''

          '
      parameters:
      - $ref: '#/components/parameters/path_pin_id'
      - $ref: '#/components/parameters/query_ad_account_id'
      responses:
        '204':
          description: Successfully deleted Pin
        '403':
          description: Not authorized to access board or Pin.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 403
                message: Not authorized to access board or Pin.
        '404':
          description: Pin not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 404
                message: Pin not found.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      summary: Update Pin
      description: 'Update a pin owned by the "operating user_account".

        - By default, the "operation user_account" is the token user_account.


        Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href=''/docs/api/v5/#operation/ad_accounts/list''>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account:


        - For Pins on public or protected boards: Owner, Admin, Analyst, Campaign Manager.

        - For Pins on secret boards: Owner, Admin.


        <strong>This endpoint is currently in beta and not available to all apps. <a href=''/docs/new/about-beta-access/''>Learn more</a>.</strong>'
      tags:
      - Pin
      operationId: pins/update
      security:
      - pinterest_oauth2:
        - boards:read
        - boards:write
        - pins:read
        - pins:write
      x-ratelimit-category: org_write
      x-sandbox: enabled
      x-codeSamples:
      - lang: cURL
        label: curl
        source: "# Pin information can be fetched from profile page or from create/list pin method here:\n# https://developers.pinterest.com/docs/api/v5/#operation/pins/list\n\ncurl --location --request PATCH 'https://api.pinterest.com/v5/pins/<insert_pin_id>' \\\n--header 'Authorization: Bearer <Add your token here>' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"title\": \"My updated Pin title\"\n}'\n"
      - lang: cURL
        label: curl (Sandbox)
        source: "# Pin information can be fetched from profile page or from create/list pin method here:\n# https://developers.pinterest.com/docs/api/v5/#operation/pins/list\n\ncurl --location --request GET 'https://api-sandbox.pinterest.com/v5/pins/<insert_sandbox_pin_id>' \\\n--header 'Authorization: Bearer <Add your token here>' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n  \"title\": \"My updated Pin title\"\n}'\n"
      parameters:
      - $ref: '#/components/parameters/path_pin_id'
      - $ref: '#/components/parameters/query_ad_account_id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PinUpdate'
      responses:
        '200':
          description: response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pin'
        '403':
          description: Not authorized to update Pin.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 29
                message: Not authorized to update Pin.
        '404':
          description: Pin not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 50
                message: Pin not found.
        '429':
          description: '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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 8
                message: '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:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /pins/{pin_id}/analytics:
    get:
      summary: Get Pin analytics
      description: 'Get analytics for a Pin owned by the "operation user_account" - or on a group board that has been shared with this account.

        - By default, the "operation user_account" is the token user_account.


        Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href="https://developers.pinterest.com/docs/api/v5/#operation/ad_accounts/list">List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account:


        - For Pins on public or protected boards: Admin, Analyst.

        - For Pins on secret boards: Admin.


        If Pin was created before <code>2023-03-20</code> lifetime metrics will only be available for Video and Idea Pin formats. Lifetime metrics are available for all Pin formats since then.'
      tags:
      - Pin
      operationId: pins/analytics
      security:
      - pinterest_oauth2:
        - boards:read
        - pins:read
      x-ratelimit-category: org_analytics
      x-sandbox: disabled
      parameters:
      - $ref: '#/components/parameters/path_pin_id'
      - $ref: '#/components/parameters/query_start_date'
      - $ref: '#/components/parameters/query_end_date'
      - $ref: '#/components/parameters/query_app_types'
      - $ref: '#/components/parameters/query_pin_analytics_metric_types'
      - $ref: '#/components/parameters/query_split_field_pins'
      - $ref: '#/components/parameters/query_ad_account_id'
      responses:
        '200':
          description: response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PinAnalyticsResponse'
        '400':
          description: Invalid pins analytics parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 400
                message: Invalid pins analytics parameters.
        '403':
          description: Not authorized to access board or Pin.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 403
                message: Not authorized to access board or Pin.
        '404':
          description: Pin not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 404
                message: Pin not found.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /pins/{pin_id}/save:
    post:
      summary: Save Pin
      description: 'Save a Pin on a board or board section owned by the "operation user_account".

        - By default, the "operation user_account" is the token user_account.

        Optional: Business Access: Specify an <code>ad_account_id</code> (obtained via <a href=''/docs/api/v5/#operation/ad_accounts/list''>List ad accounts</a>) to use the owner of that ad_account as the "operation user_account". In order to do this, the token user_account must have one of the following <a href="https://help.pinterest.com/en/business/article/share-and-manage-access-to-your-ad-accounts">Business Access</a> roles on the ad_account:


        - For Pins on public or protected boards: Owner, Admin, Analyst, Campaign Manager.

        - For Pins on secret boards: Owner, Admin.


        - Any Pin type can be saved: image Pin, video Pin, Idea Pin, product Pin, etc.

        - Any public Pin can be saved given a pin ID.'
      tags:
      - Pin
      operationId: pins/save
      security:
      - pinterest_oauth2:
        - boards:read
        - boards:write
        - pins:read
        - pins:write
      x-ratelimit-category: org_write
      x-sandbox: enabled
      x-codeSamples:
      - lang: python
        label: Python SDK
        source: '# Follow this link for initial setup: https://github.com/pinterest/pinterest-python-sdk#getting-started


          from pinterest.organic.pins import Pin

          # Pin information can be fetched from profile page or from create/list pin method here:

          # https://developers.pinterest.com/docs/api/v5/#operation/pins/list

          PIN_ID="<Add your pin id here>"


          # Board information can be fetched from profile page or from list board method here:

          # https://developers.pinterest.com/docs/api/v5/#operation/boards/list

          NEW_BOARD_ID="<Add your board id here>"


          pin_save = Pin(pin_id=PIN_ID)

          pin_save.save(board_id=NEW_BOARD_ID)

          print("Pin Id: %s, Board Id:%s" %(pin_save.id, pin_save.board_id))

          '
      - lang: cURL
        label: curl
        source: "# Pin and Board information can be fetched from profile page or from create/list pin method here:\n# https://developers.pinterest.com/docs/api/v5/#operation/pins/list\n# https://developers.pinterest.com/docs/api/v5/#operation/boards/list\n\ncurl --request DELETE 'https://api.pinterest.com/v5/pins/<insert_pin_id>/save' \\\n--header 'Authorization: Bearer <Add your token here>' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"board_id\": <insert_new_board_id>\n}'\n"
      - lang: cURL
        label: curl (Sandbox)
        source: "# Pin and Board information can be fetched from profile page or from create/list pin method here:\n# https://developers.pinterest.com/docs/api/v5/#operation/pins/list\n# https://developers.pinterest.com/docs/api/v5/#operation/boards/list\n\ncurl --request DELETE 'https://api-sandbox.pinterest.com/v5/pins/<insert_sandbox_pin_id>/save' \\\n--header 'Authorization: Bearer <Add your token here>' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"board_id\": <insert_new_sandbox_board_id>\n}'\n"
      parameters:
      - $ref: '#/components/parameters/path_pin_id'
      - $ref: '#/components/parameters/query_ad_account_id'
      requestBody:
        description: Request object used to save an existing pin
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                board_id:
                  description: Unique identifier of the board to which the pin will be saved.
                  type: string
                  pattern: ^\d+$
                  nullable: true
                board_section_id:
                  description: Unique identifier of the board section to which the pin will be saved.
                  type: string
                  pattern: ^\d+$
                  nullable: true
      responses:
        '201':
          description: Successfully saved pin.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pin'
        '403':
          description: Not authorized to access Board or Pin.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 29
                message: You are not permitted to access that resource.
        '404':
          description: Board or Pin not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                BoardNotFound:
                  value:
                    code: 40
                    message: Board not found.
                PinNotFound:
                  value:
                    code: 50
                    message: Pin not found.
                BoardSectionNotFound:
                  value:
                    code: 2031
                    message: Sorry! We couldn't find this board section.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    PinAnalyticsMetricsResponse:
      type: object
      properties:
        lifetime_metrics:
          description: The lifetime metric name and value.
          type: object
          additionalProperties:
            type: integer
          example:
            TOTAL_COMMENTS: 10
            TOTAL_REACTIONS: 12
        daily_metrics:
          description: Array with the requested daily metric records
          items:
            type: object
            properties:
              data_status:
                $ref: '#/components/schemas/DataStatus'
              date:
                description: 'Metrics date (UTC): YYYY-MM-DD.'
                example: '2019-12-01'
                type: string
              metrics:
                description: The metric name and daily value for each requested metric
                type: object
                additionalProperties:
                  type: number
                example:
                  IMPRESSION: 240
                  OUTBOUND_CLICK: 20
                  PIN_CLICK: 37
                  QUARTILE_95_PERCENT_VIEW: 8
                  SAVE: 20
                  SAVE_RATE: 0.18
                  VIDEO_10S_VIEW: 2
                  VIDEO_AVG_WATCH_TIME: 2507.75
                  VIDEO_MRC_VIEW: 20
                  VIDEO_START: 29
                  VIDEO_V50_WATCH_TIME: 10031
          type: array
        summary_metrics:
          description: The metric name and value over the requested period for each requested metric
          type: object
          additionalProperties:
            type: number
          example:
            IMPRESSION: 240
            OUTBOUND_CLICK: 20
            PIN_CLICK: 37
            QUARTILE_95_PERCENT_VIEW: 8
            SAVE: 20
            SAVE_RATE: 0.18
            VIDEO_10S_VIEW: 2
            VIDEO_AVG_WATCH_TIME: 2507.75
            VIDEO_MRC_VIEW: 20
            VIDEO_START: 29
            VIDEO_V50_WATCH_TIME: 10031
    Error:
      title: Error
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
      required:
      - code
      - message
    SSIOInsertionOrderStatus:
      type: object
      properties:
        pin_order_id:
          description: Salesforce order id
          example: 0Q01N0000015hekSAB
          type: string
        status:
          description: Salesforce insertion order status
          example: Approved
          type: string
        creation_time:
          description: Salesforce insertion order creation time
          example: '2017-06-21T23:11:11.000Z'
          type: string
          nullable: true
    PinMediaSourceImageURL:
      title: Image URL
      description: Image URL-based media source
      type: object
      properties:
        source_type:
          type: string
          enum:
          - image_url
        url:
          type: string
        is_standard:
          type: boolean
          description: Set the parameter to false to create the new simplified Pin instead of the standard pin. Currently the field is only available to a list of beta users.
          default: true
      required:
      - source_type
      - url
    PinMediaSourceImageBase64:
      title: Image Base64
      description: Base64-encoded image media source
      type: object
      properties:
        source_type:
          type: string
          enum:
          - image_base64
        content_type:
          type: string
          enum:
          - image/jpeg
          - image/png
        data:
          type: string
          pattern: '[a-zA-Z0-9+\/=]+'
        is_standard:
          type: boolean
          description: Set the parameter to false to create the new simplified Pin instead of the standard pin. Currently the field is only available to a list of beta users.
          default: true
      required:
      - source_type
      - content_type
      - data
    PinMediaSourcePinURL:
      title: Pin URL
      description: Pin URL-based media source for product pin creation. Currently the field is only available to a list of beta users.
      type: object
      properties:
        source_type:
          type: string
          enum:
          - pin_url
        is_affiliate_link:
          type: boolean
          description: This is an affiliate link or sponsored product. The FTC requires disclosure for paid partnerships and affiliate products.
          default: false
      required:
      - source_type
    CreativeType:
      type: string
      description: Ad creative type enum. For update, only draft ads may update creative type. </p><strong>Note:</strong> SHOP_THE_PIN has been deprecated. Please use COLLECTION instead.
      enum:
      - REGULAR
      - VIDEO
      - SHOPPING
      - CAROUSEL
      - MAX_VIDEO
      - SHOP_THE_PIN
      - COLLECTION
      - IDEA
      - SHOWCASE
      - QUIZ
      example: REGULAR
      title: CreativeType
    BoardOwner:
      title: Board owner
      type: object
      properties:
        username:
          type: string
          readOnly: true
    PinMediaSourceVideoID:
      title: Video ID
      description: Video ID-based media source
      type: object
      properties:
        source_type:
          type: string
          enum:
          - video_id
        cover_image_url:
          type: string
          description: Cover image url.
        cover_image_content_type:
          type: string
          description: Content type for cover image Base64.
          enum:
          - image/jpeg
          - image/png
        cover_image_data:
          type: string
          description: Cover image Base64.
        media_id:
          type: string
          pattern: ^\d+$
        is_standard:
          type: boolean
          description: Set the parameter to false to create the new simplified Pin instead of the standard pin. Currently the field is only available to a list of beta users.
          default: true
      required:
      - source_type
      - media_id
    SSIOInsertionOrderStatusResponse:
      allOf:
      - $ref: '#/components/schemas/SSIOInsertionOrderStatus'
      - type: object
    PinAnalyticsResponse:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/PinAnalyticsMetricsResponse'
    PinMediaSourceImagesBase64:
      title: Images Base64
      description: Multiple Base64-encoded images media source
      additionalProperties: false
      properties:
        source_type:
          type: string
          enum:
          - multiple_image_base64
        items:
          items:
            additionalProperties: false
            properties:
              title:
                type: string
              description:
                type: string
              link:
                type: string
                description: Destination link for the image.
              content_type:
                type: string
                enum:
                - image/jpeg
                - image/png
              data:
                type: string
                description: Image to upload as base64 string.
                pattern: '[a-zA-Z0-9+\/=]+'
            required:
            - data
            - content_type
            type: object
          minItems: 2
          maxItems: 5
          description: Array with image objects.
          type: array
        index:
          type: integer
          minimum: 0
      required:
      - items
      type: object
    Pin:
      title: Pin
      description: Pin
      type: object
      nullable: true
      properties:
        id:
          type: string
          readOnly: true
          example: '813744226420795884'
          pattern: ^\d+$
        created_at:
          type: string
          format: date-time
          readOnly: true
          example: '2020-01-01T20:10:40-00:00'
        link:
          type: string
          nullable: true
          example: https://www.pinterest.com/
          maxLength: 2048
        title:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        dominant_color:
          type: string
          nullable: true
          description: Dominant pin color. Hex number, e.g. \"#6E7874\".
          example: '#6E7874'
        alt_text:
          type: string
          nullable: true
          maxLength: 500
        creative_type:
          readOnly: true
          nullable: true
          type: string
          allOf:
          - $ref: '#/components/schemas/CreativeType'
        board_id:
          description: The board to which this Pin belongs.
          type: string
          pattern: ^\d+$
        board_section_id:
          description: The board section to which this Pin belongs.
          type: string
          pattern: ^\d+$
          nullable: true
        board_owner:
          allOf:
          - $ref: '#/components/schemas/BoardOwner'
          type: object
          readOnly: true
        is_owner:
          description: Whether the "operation user_account" is the Pin owner.
          type: boolean
          readOnly: true
        media:
          allOf:
          - $ref: '#/components/schemas/PinMedia'
          type: object
          readOnly: true
        media_source:
          allOf:
          - $ref: '#/components/schemas/PinMediaSource'
          type: object
          writeOnly: true
        parent_pin_id:
          description: The source pin id if this pin was saved from another pin. <a href="https://help.pinterest.com/article/save-pins-on-pinterest">Learn more</a>.
          type: string
          pattern: ^\d+$
          nullable: true
        is_standard:
          description: Whether the Pin is standard or not. See documentation on <a href="https://developers.pinterest.com/docs/content/update/">Changes to Pin creation</a> for more information.
          type: boolean
        has_been_promoted:
          description: Whether the Pin has been promoted or not.
          type: boolean
          readOnly: true
        note:
          description: Private note for this Pin. <a href="https://help.pinterest.com/en/article/add-notes-to-your-pins">Learn more</a>.
          type: string
          nullable: true
        pin_metrics:
          description: Pin metrics with associated time intervals if any.
          type: object
          nullable: true
          example:
            pin_metrics:
            - 90d:
                pin_click: 7
                impression: 2
                clickthrough: 3
              all_time:
                pin_click: 7
                impression: 2
                clickthrough: 3
                reaction: 10
                comment: 2
            - null
    PinUpdate:
      title: PinUpdate
      description: Pin fields for updates
      type: object
      nullable: true
      properties:
        alt_text:
          type: string
          nullable: true
          description: Pin's alternative text.
          maxLength: 500
        board_id:
          type: string
          nullable: true
          description: The id of the board to move the Pin onto.
          p

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pinterest/refs/heads/main/openapi/pinterest-pin-api-openapi.yml