openapi: 3.0.3 info: version: 5.13.0 title: Pinterest Save 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: Save paths: /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 ad_account_id (obtained via List ad accounts) 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 Business Access 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: - Save 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="" # 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="" 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//save' \\\n--header 'Authorization: Bearer ' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"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//save' \\\n--header 'Authorization: Bearer ' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"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: CreativeType: type: string description: Ad creative type enum. For update, only draft ads may update creative type.

Note: 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 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 Error: title: Error type: object properties: code: type: integer message: type: string required: - code - message 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. Learn more. type: string pattern: ^\d+$ nullable: true is_standard: description: Whether the Pin is standard or not. See documentation on Changes to Pin creation 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. Learn more. 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 PinMedia: title: Pin media type: object description: Pin media objects. discriminator: propertyName: media_type mapping: image: '#/components/schemas/PinMediaWithImage' video: '#/components/schemas/PinMediaWithVideo' multiple_images: '#/components/schemas/PinMediaWithImages' multiple_videos: '#/components/schemas/PinMediaWithVideos' multiple_mixed: '#/components/schemas/PinMediaWithImageAndVideo' properties: media_type: type: string 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 PinMediaSourceImagesURL: title: Images urls description: Multiple images urls-based media source additionalProperties: false properties: source_type: type: string enum: - multiple_image_urls items: items: additionalProperties: false properties: title: type: string description: type: string link: type: string description: Destination link for the image. url: description: URL of image to upload. type: string required: - url type: object minItems: 2 maxItems: 5 description: Array with image objects. type: array index: type: integer minimum: 0 required: - items type: object 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 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 PinMediaSource: title: Pin media source description: Pin media source. oneOf: - $ref: '#/components/schemas/PinMediaSourceImageBase64' - $ref: '#/components/schemas/PinMediaSourceImageURL' - $ref: '#/components/schemas/PinMediaSourceVideoID' - $ref: '#/components/schemas/PinMediaSourceImagesBase64' - $ref: '#/components/schemas/PinMediaSourceImagesURL' - $ref: '#/components/schemas/PinMediaSourcePinURL' discriminator: propertyName: source_type mapping: multiple_image_base64: '#/components/schemas/PinMediaSourceImagesBase64' image_base64: '#/components/schemas/PinMediaSourceImageBase64' multiple_image_urls: '#/components/schemas/PinMediaSourceImagesURL' image_url: '#/components/schemas/PinMediaSourceImageURL' video_id: '#/components/schemas/PinMediaSourceVideoID' pin_url: '#/components/schemas/PinMediaSourcePinURL' parameters: path_pin_id: name: pin_id description: Unique identifier of a Pin. in: path required: true schema: type: string query_ad_account_id: name: ad_account_id description: Unique identifier of an ad account. in: query schema: type: string pattern: ^\d+$ maxLength: 18 securitySchemes: pinterest_oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://www.pinterest.com/oauth/ tokenUrl: https://api.pinterest.com/v5/oauth/token scopes: ads:read: See all of your advertising data, including ads, ad groups, campaigns etc. ads:write: Create, update, or delete ads, ad groups, campaigns etc. billing:read: See all of your billing data, billing profile, etc. billing:write: Create, update, or delete billing data, billing profiles, etc. biz_access:read: See business access data biz_access:write: Create, update, or delete business access data boards:read: See your public boards, including group boards you join boards:read_secret: See your secret boards boards:write: Create, update, or delete your public boards boards:write_secret: Create, update, or delete your secret boards catalogs:read: See all of your catalogs data catalogs:write: Create, update, or delete your catalogs data pins:read: See your public Pins pins:read_secret: See your secret Pins pins:write: Create, update, or delete your public Pins pins:write_secret: Create, update, or delete your secret Pins user_accounts:read: See your user accounts and followers user_accounts:write: Update your user accounts and followers conversion_token: type: http scheme: bearer description: This security scheme only applies to the conversion events endpoint (POST /ad_accounts/{ad_account_id}/events). This endpoint requires a bearer token generated via Ads Manager (ads.pinterest.com). basic: type: http scheme: basic x-tagGroups: - name: Pin and Boards tags: - pins - boards - media - aggregated_comments - aggregated_pin_data - user_account - name: Campaign Management tags: - ad_accounts - campaigns - ad_groups - ads - product_group_promotions - bulk - name: Targeting tags: - audiences - customer_lists - keywords - targeting_template - audience_insights - audience_sharing - name: Ad Formats tags: - lead_forms - lead_ads - leads_export - name: Billing tags: - billing - order_lines - terms_of_service - name: Business Access tags: - business_access_assets - business_access_invite - business_access_relationships - name: Conversions tags: - conversion_events - conversion_tags - name: Others tags: - integrations - oauth - resources - search - terms - name: Shopping tags: - catalogs - name: Deprecated tags: - product_groups