Pinterest Bulk API

The Bulk API from Pinterest — 3 operation(s) for bulk.

OpenAPI Specification

pinterest-bulk-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  version: 5.13.0
  title: Pinterest Bulk 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: Bulk
paths:
  /ad_accounts/{ad_account_id}/bulk/download:
    post:
      summary: Get advertiser entities in bulk
      description: 'Create an asynchronous report that may include information on campaigns, ad groups, product groups, ads,

        and/or keywords; can filter by campaigns. Though the entities may be active, archived, or paused,

        only active entities will return data.'
      operationId: bulk_download/create
      security:
      - pinterest_oauth2:
        - ads:read
      x-ratelimit-category: ads_read
      x-sandbox: disabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkDownloadRequest'
        description: Parameters to get ad entities in bulk
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDownloadResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      tags:
      - Bulk
  /ad_accounts/{ad_account_id}/bulk/upsert:
    post:
      description: 'Either create or update any combination of campaigns, ad groups, product groups, ads, or keywords.

        Note that this request will be processed asynchronously; the response will include a <code>request_id</code>

        that can be used to obtain the status of the request.'
      operationId: bulk_upsert/create
      security:
      - pinterest_oauth2:
        - ads:write
      x-ratelimit-category: ads_write
      x-sandbox: disabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkUpsertRequest'
        description: Parameters to get create/update ad entities in bulk
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUpsertResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Create/update ad entities in bulk
      tags:
      - Bulk
  /ad_accounts/{ad_account_id}/bulk/{bulk_request_id}:
    get:
      description: 'Get the status of a bulk request by <code>request_id</code>, along with a download URL that will allow you to download the

        new or updated entity data (campaigns, ad groups, product groups, ads, or keywords).'
      operationId: bulk_request/get
      security:
      - pinterest_oauth2:
        - ads:read
      x-ratelimit-category: ads_read
      x-sandbox: disabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      - $ref: '#/components/parameters/path_bulk_request_id'
      - $ref: '#/components/parameters/include_details'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUpsertStatusResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Download advertiser entities in bulk
      tags:
      - Bulk
components:
  schemas:
    AdGroupUpdateRequest:
      type: object
      allOf:
      - $ref: '#/components/schemas/AdGroupCommon'
      - type: object
        properties:
          id:
            description: Ad group ID.
            type: string
            pattern: ^\d+$
            example: '2680060704746'
        required:
        - id
    QuizPinResult:
      description: The result, and link out, based on the users choice.
      example:
        organic_pin_id: pinId
        android_deep_link: https://www.pinterest.com/
        ios_deep_link: https://www.pinterest.com/
        destination_url: https://www.pinterest.com/
      type: object
      nullable: true
      properties:
        organic_pin_id:
          type: string
        android_deep_link:
          type: string
        ios_deep_link:
          type: string
        destination_url:
          type: string
        result_id:
          type: number
    BulkUpsertStatus:
      type: string
      enum:
      - RUNNING
      - SUCCEEDED
      - FAILED
      example: SUCCEEDED
    EntityStatus:
      type: string
      description: Entity status
      example: ACTIVE
      enum:
      - ACTIVE
      - PAUSED
      - ARCHIVED
      - DRAFT
      - DELETED_DRAFT
    CampaignCreateCommon:
      type: object
      allOf:
      - $ref: '#/components/schemas/CampaignCommon'
      - type: object
        properties:
          status:
            type: string
            default: ACTIVE
            allOf:
            - $ref: '#/components/schemas/EntityStatus'
          is_flexible_daily_budgets:
            type: boolean
            default: false
            allOf:
            - $ref: '#/components/schemas/CampaignIsFlexibleDailyBudgets'
          default_ad_group_budget_in_micro_currency:
            type: integer
            description: When transitioning from campaign budget optimization to non-campaign budget optimization, the default_ad_group_budget_in_micro_currency will propagate to each child ad groups daily budget. Unit is micro currency of the associated advertiser account.
            example: 0
            nullable: true
          is_automated_campaign:
            type: boolean
            default: false
            allOf:
            - $ref: '#/components/schemas/CampaignIsAutomatedCampaign'
    ProductGroupPromotionUpdateRequest:
      example:
        product_group_promotion:
        - catalog_product_group_id: '1234123'
          slideshow_collections_description: Description
          collections_hero_pin_id: '123123'
          catalog_product_group_name: ProductGroupName
          collections_hero_destination_url: http://www.pinterest.com
          tracking_url: https://www.pinterest.com
          slideshow_collections_title: Title
          status: ACTIVE
          id: '2680059592705'
        - catalog_product_group_id: '1231231'
          slideshow_collections_description: Other description
          collections_hero_pin_id: '123124'
          catalog_product_group_name: ProductGroupName
          collections_hero_destination_url: http://www.pinterest.com
          tracking_url: https://www.pinterest.com
          slideshow_collections_title: Title
          status: ACTIVE
          id: '2680059592706'
        ad_group_id: '26823439592705'
      properties:
        ad_group_id:
          description: ID of the ad group the product group belongs to.
          example: '2680059592705'
          pattern: ^(AG)?\d+$
          title: ad_group_id
          type: string
        product_group_promotion:
          items:
            $ref: '#/components/schemas/ProductGroupPromotion'
          title: product_group_promotion
          type: array
      required:
      - ad_group_id
      - product_group_promotion
      title: ProductGroupPromotionUpdateRequest
      type: object
    KeywordUpdate:
      title: KeywordUpdate
      type: object
      properties:
        id:
          type: string
          description: Keyword ID.
          example: '2886364308355'
          pattern: ^\d+$
          title: id
        archived:
          type: boolean
          description: Is keyword archived?
          example: false
          title: archived
        bid:
          type: integer
          minimum: 1
          description: Keyword custom bid in microcurrency - null if inherited from parent ad group.
          example: 200000
          nullable: true
          title: bid
      required:
      - id
    KeywordsRequest:
      type: object
      properties:
        keywords:
          type: array
          description: Keyword JSON array. Each array element has 3 fields
          items:
            $ref: '#/components/schemas/KeywordsCommon'
        parent_id:
          description: Keyword parent entity ID (advertiser, campaign, ad group).
          example: '383791336903426391'
          pattern: ^((AG)|C)?\d+$
          title: parent_id
          type: string
      required:
      - keywords
      - parent_id
    KeywordsCommon:
      type: object
      properties:
        bid:
          type: integer
          description: Keyword custom bid in microcurrency - null if inherited from parent ad group.
          example: 200000
          nullable: true
        match_type:
          $ref: '#/components/schemas/MatchTypeResponse'
        value:
          type: string
          description: Keyword value (120 chars max).
      required:
      - match_type
      - value
    Error:
      title: Error
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
      required:
      - code
      - message
    ProductGroupPromotionCreateRequestElement:
      type: object
      title: ProductGroupPromotionCreateRequestElement
      allOf:
      - $ref: '#/components/schemas/ProductGroupPromotion'
      - type: object
        properties:
          creative_type:
            $ref: '#/components/schemas/CreativeType'
    QuizPinQuestion:
      description: A specific quiz inquiry.
      example:
        question_id: 1
        question_text: Where do you thrive?
        options:
        - text: Hangout vibes
        - text: Time to party!
        - text: Keeping it lowkey
      type: object
      nullable: true
      properties:
        question_id:
          type: number
        question_text:
          type: string
        options:
          type: array
          items:
            $ref: '#/components/schemas/QuizPinOption'
    AdCreateRequest:
      type: object
      allOf:
      - $ref: '#/components/schemas/AdCommon'
      - $ref: '#/components/schemas/AdPinId'
      - type: object
        title: Request schema for creating ads
        required:
        - ad_group_id
        - pin_id
        - creative_type
    ObjectiveType:
      type: string
      description: Campaign objective type. If set as one of ["AWARENESS", "CONSIDERATION", "WEB_CONVERSION", "CATALOG_SALES"] the campaign is considered as a Campaign Budget Optimization (CBO) campaign, meaning budget needs to be set at the campaign level rather than at the ad group level. ["WEB_SESSIONS"] is DEPRECATED. For update, only draft campaigns may update objective type.
      enum:
      - AWARENESS
      - CONSIDERATION
      - VIDEO_VIEW
      - WEB_CONVERSION
      - CATALOG_SALES
      - WEB_SESSIONS
    AdGroupCreateRequest:
      type: object
      allOf:
      - $ref: '#/components/schemas/AdGroupCommon'
      - type: object
        properties:
          pacing_delivery_type:
            type: string
            allOf:
            - $ref: '#/components/schemas/PacingDeliveryType'
            default: STANDARD
          auto_targeting_enabled:
            type: boolean
            allOf:
            - type: boolean
              description: Enable auto-targeting for ad group.Default value is True. Also known as <a href="https://help.pinterest.com/en/business/article/expanded-targeting" target="_blank">"expanded targeting"</a>.
              example: true
          budget_type:
            type: string
            allOf:
            - $ref: '#/components/schemas/BudgetType'
            default: DAILY
        required:
        - billable_event
        - campaign_id
        - name
    CampaignIsFlexibleDailyBudgets:
      type: boolean
      description: Determine if a campaign has flexible daily budgets setup.
      example: true
      default: false
    BulkDownloadResponse:
      type: object
      example:
        request_id: '2680059592705'
      properties:
        request_id:
          description: ID of the bulk request.
          example: '2680059592705'
          type: string
    AdUpdateRequest:
      type: object
      allOf:
      - $ref: '#/components/schemas/AdCommon'
      - type: object
        title: AdUpdateRequest
        properties:
          id:
            type: string
            example: '687195134316'
            pattern: ^\d+$
            description: The ID of this ad.
            title: id
          pin_id:
            type: string
            description: Pin ID. This field may only be updated for draft ads.
            example: '394205773611545468'
            pattern: ^\d+$
            nullable: true
        required:
        - id
    TargetingSpec:
      description: Ad group targeting specification defining the ad group target audience. For example, `{"APPTYPE":["iphone"], "GENDER":["male"], "LOCALE":["en-US"], "LOCATION":["501"], "AGE_BUCKET":["25-34"]}`
      type: object
      properties:
        AGE_BUCKET:
          type: array
          nullable: true
          description: Age ranges. If the AGE_BUCKET field is missing, the default behavior in terms of ad delivery is that **All age buckets** will be targeted.
          example:
          - 35-44
          - 50-54
          items:
            type: string
            enum:
            - 18-24
            - 21+
            - 25-34
            - 35-44
            - 45-49
            - 50-54
            - 55-64
            - 65+
        APPTYPE:
          type: array
          nullable: true
          description: Allowed devices. If the APPTYPE field is missing, the default behavior in terms of ad delivery is that **All devices/apptypes** will be targeted.
          example:
          - ipad
          - iphone
          items:
            type: string
            enum:
            - android_mobile
            - android_tablet
            - ipad
            - iphone
            - web
            - web_mobile
        AUDIENCE_EXCLUDE:
          type: array
          nullable: true
          description: 'Excluded customer list IDs. Used to drive new customer acquisition goals. For example: ["2542620905475"]. Audience lists need to have at least 100 people with Pinterest accounts in them. If the AUDIENCE_EXCLUDE field is missing, the default behavior in terms of ad delivery is that **No users will be excluded**.'
          items:
            type: string
            pattern: ^\d+$
            minItems: 100
        AUDIENCE_INCLUDE:
          type: array
          nullable: true
          description: 'Targeted customer list IDs. For example: ["2542620905473"]. Audience lists need to have at least 100 people with Pinterest accounts in them Audience lists need to have at least 100 people with Pinterest accounts in them. If the AUDIENCE_INCLUDE field is missing, the default behavior in terms of ad delivery is that **All users will be included**.'
          items:
            type: string
            pattern: ^\d+$
            minItems: 100
        GENDER:
          type: array
          nullable: true
          description: 'Targeted genders. Values: ["unknown","male","female"]. If the GENDER field is missing, the default behavior in terms of ad delivery is that **All genders will be targeted**.'
          items:
            type: string
            enum:
            - unknown
            - male
            - female
        GEO:
          type: array
          nullable: true
          description: Location region codes, e.g., "BE-VOV" (East Flanders, Belgium) For complete list, <a href="https://help.pinterest.com/sub/helpcenter/partner/pinterest_location_targeting_codes.xlsx" target="_blank">click here</a> or postal codes, e.g., "US-94107". Use either region codes or postal codes but not both. At least one of LOCATION or GEO must be specified. If the GEO field is missing, then only LOCATION values will be targeted (see LOCATION field below).
          items:
            type: string
        INTEREST:
          type: array
          description: Array of interest object IDs. If the INTEREST field is missing, the default behavior in terms of ad delivery is that **All interests will be targeted**.
          items:
            type: string
        LOCALE:
          type: array
          nullable: true
          description: 24 ISO 639-1 two letter language codes. If the LOCALE field is missing, the default behavior in terms of ad delivery is that **All languages will be targeted, only english non-sublanguage will be targeted**.
          items:
            type: string
        LOCATION:
          type: array
          nullable: true
          description: 22 ISO Alpha 2 two letter country codes or US Nielsen DMA (Designated Market Area) codes (location region codes) (e.g., ["US", "807"]). For complete list, click here. Location-Country and Location-Metro codes apply. At least one of LOCATION or GEO must be specified. If the LOCATION field is missing, then only GEO values will be targeted (see GEO field above).
          items:
            type: string
        SHOPPING_RETARGETING:
          type: array
          nullable: true
          description: "Array of object: lookback_window\t[Integer]: Number of days ago to start lookback timeframe for dynamic retargeting tag_types [Array of integer]: Event types to target for dynamic retargeting exclusion_window [Integer]: Number of days ago to stop lookback timeframe for dynamic retargeting"
          items:
            type: object
            example:
              lookback_window: 30
              exclusion_window: 14
              tag_types:
              - 0
              - 6
            properties:
              lookback_window:
                description: Number of days ago to start lookback timeframe for dynamic retargeting
                example: 30
                title: lookback_window
                type: integer
              tag_types:
                description: Event types to target for dynamic retargeting
                example:
                - 0
                - 6
                items:
                  type: integer
                title: tag_types
                type: array
              exclusion_window:
                description: Number of days ago to stop lookback timeframe for dynamic retargeting
                example: 14
                title: exclusion_window
                type: integer
            title: TargetingSpec_SHOPPING_RETARGETING
        TARGETING_STRATEGY:
          type: array
          nullable: true
          description: ''
          items:
            enum:
            - CHOOSE_YOUR_OWN
            - FIND_NEW_CUSTOMERS
            - RECONNECT_WITH_USERS
    ActionType:
      type: string
      description: Ad group billable event type. For update, only draft ad groups may update billable event.
      example: CLICKTHROUGH
      enum:
      - CLICKTHROUGH
      - IMPRESSION
      - VIDEO_V_50_MRC
    BulkUpsertRequest:
      type: object
      description: Two set of objects to be managed asyncronusly by bulk. One for creations, one for modifications.
      properties:
        create:
          $ref: '#/components/schemas/BulkUpsertRequestCreate'
        update:
          $ref: '#/components/schemas/BulkUpsertRequestUpdate'
    BulkOutputFormat:
      type: string
      description: Bulk file output format
      enum:
      - CSV
      - JSON
    BulkUpsertResponse:
      description: ID of the bulk request.
      type: object
      properties:
        request_id:
          type: string
          example: 549763856477-1660864560-1407e16a-c586-4add-94df-d0b160bec0ff, 549763856477-1660864560-d0b160bec0ff
    CampaignIsAutomatedCampaign:
      type: boolean
      description: Specifies whether the campaign was created in the automated campaign flow
      example: true
      default: false
    CampaignUpdateRequest:
      type: object
      allOf:
      - $ref: '#/components/schemas/CampaignId'
      - $ref: '#/components/schemas/CampaignCommon'
      - $ref: '#/components/schemas/CampaignCreateCommon'
      - type: object
        properties:
          is_campaign_budget_optimization:
            type: boolean
            nullable: true
            allOf:
            - $ref: '#/components/schemas/CampaignIsCampaignBudgetOptimization'
          is_flexible_daily_budgets:
            type: boolean
            nullable: true
            allOf:
            - $ref: '#/components/schemas/CampaignIsFlexibleDailyBudgets'
          is_automated_campaign:
            type: boolean
            nullable: true
            allOf:
            - $ref: '#/components/schemas/CampaignIsAutomatedCampaign'
          status:
            type: string
            nullable: true
            allOf:
            - $ref: '#/components/schemas/EntityStatus'
          objective_type:
            type: string
            nullable: true
            allOf:
            - $ref: '#/components/schemas/ObjectiveType'
        required:
        - id
        - ad_account_id
    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
    AdPinId:
      type: object
      properties:
        pin_id:
          description: Pin ID.
          example: '394205773611545468'
          type: string
          pattern: ^\d+$
    MatchTypeResponse:
      type: string
      description: Keyword match type
      nullable: true
      example: BROAD
      enum:
      - BROAD
      - PHRASE
      - EXACT
      - EXACT_NEGATIVE
      - PHRASE_NEGATIVE
      - null
    CampaignCommon:
      type: object
      description: Campaign Data
      properties:
        ad_account_id:
          description: Campaign's Advertiser ID. If you want to create a campaign in a Business Account shared account you need to specify the Business Access advertiser ID in both the query path param as well as the request body schema.
          example: '549755885175'
          type: string
          pattern: ^\d+$
        name:
          type: string
          description: Campaign name.
          example: ACME Tools
        status:
          type: string
          allOf:
          - $ref: '#/components/schemas/EntityStatus'
        lifetime_spend_cap:
          description: Campaign total spending cap. Required for Campaign Budget Optimization (CBO) campaigns. This and "daily_spend_cap" cannot be set at the same time.
          example: 1432744744
          type: integer
          nullable: true
        daily_spend_cap:
          description: Campaign daily spending cap. Required for Campaign Budget Optimization (CBO) campaigns. This and "lifetime_spend_cap" cannot be set at the same time.
          example: 1432744744
          type: integer
          nullable: true
        order_line_id:
          description: Order line ID that appears on the invoice.
          example: '549755885175'
          type: string
          pattern: ^\d+$
          nullable: true
        tracking_urls:
          type: object
          nullable: true
          allOf:
          - $ref: '#/components/schemas/TrackingUrls'
        start_time:
          type: integer
          description: Campaign start time. Unix timestamp in seconds. Only used for Campaign Budget Optimization (CBO) campaigns.
          example: 1580865126
          nullable: true
        end_time:
          type: integer
          description: Campaign end time. Unix timestamp in seconds. Only used for Campaign Budget Optimization (CBO) campaigns.
          example: 1644023526
          nullable: true
        summary_status:
          type: string
          allOf:
          - $ref: '#/components/schemas/CampaignSummaryStatus'
    BulkUpsertRequestCreate:
      type: object
      description: Request for creation of entities in bulk.
      properties:
        campaigns:
          type: array
          items:
            $ref: '#/components/schemas/CampaignCreateRequest'
        ad_groups:
          type: array
          items:
            $ref: '#/components/schemas/AdGroupCreateRequest'
        ads:
          type: array
          items:
            $ref: '#/components/schemas/AdCreateRequest'
        product_groups:
          type: array
          items:
            $ref: '#/components/schemas/ProductGroupPromotionCreateRequest'
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/KeywordsRequest'
    CampaignIsCampaignBudgetOptimization:
      type: boolean
      description: Determines if a campaign automatically generate ad-group level budgets given a campaign budget to maximize campaign outcome. When transitioning from non-cbo to cbo, all previous child ad group budget will be cleared.
      example: true
      default: false
    CampaignCreateRequest:
      type: object
      allOf:
      - $ref: '#/components/schemas/CampaignCreateCommon'
      - type: object
        properties:
          objective_type:
            $ref: '#/components/schemas/ObjectiveType'
        required:
        - name
        - objective_type
        - ad_account_id
    TrackingUrls:
      description: Third-party tracking URLs. Up to three tracking URLs - with a max length of 2,000 - are supported for each event type. Tracking URLs set at the ad group or ad level can override those set at the campaign level. For more information, see <a href="https://help.pinterest.com/en/business/article/third-party-and-dynamic-tracking" target="_blank">Third-party and dynamic tracking</a>.
      example:
        impression:
        - URL1
        - URL2
        click:
        - URL1
        - URL2
        engagement:
        - URL1
        - URL2
        buyable_button:
        - URL1
        - URL2
        audience_verification:
        - URL1
        - URL2
      type: object
      nullable: true
      properties:
        impression:
          type: array
          items:
            type: string
        click:
          type: array
          items:
            type: string
        engagement:
          type: array
          items:
            type: string
        buyable_button:
          type: array
          items:
            type: string
        audience_verification:
          type: array
          items:
            type: string
    BulkUpsertStatusResponse:
      description: ID of the bulk request.
      type: object
      properties:
        status:
          $ref: '#/components/schemas/BulkUpsertStatus'
        result_url:
          type: string
          example: https://pinterest-waterloo.s3.us-east-1.amazonaws.com/bulk_framework/AD_ENTITY_UPSERT/549763856637-1659122537-0b4d77d3-f620-48ce-bec9-616106afb8d4/(...)
    QuizPinOption:
      description: ' This field contains multiple options to a quiz question.'
      example:
        id: 1
        text: Where do you thrive?
      type: object
      nullable: true
      properties:
        id:
          type: number
        text:
          type: string
    CampaignId:
      properties:
        id:
          description: Campaign ID.
          example: '549755885175'
          type: string
          pattern: ^\d+$
      type: object
    PacingDeliveryType:
      type: string
      description: Ad group pacing delivery type. With ACCELERATED, an ad group budget is spent as fast as possible. With STANDARD, an ad group budget is spent smoothly over a day. When using CBO, only the STANDARD pacing delivery type is allowed.
      example: STANDARD
      enum:
      - STANDARD
      - ACCELERATED
    BulkDownloadRequest:
      type: object
      description: Ad entities to get in bulk request.
      properties:
        entity_types:
          type: array
          items:
            type: string
            allOf:
            - $ref: '#/components/schemas/BulkEntityType'
          minItems: 1
          maxItems: 5
          description: All entity types specified will be downloaded. Fewer types result in faster downloads.
          example:
          - CAMPAIGN
          - AD_GROUP
        entity_ids:
          type: array
          items:
            type: string
            pattern: ^\d+$
          description: All entities specified by these IDs as well as their children and grandchildren will be downloaded if the entity type is one of the types requested to be downloaded.
        updated_since:
          type: string
          pattern: ^\d+$
          example: '1622848072'
          description: Unix UTC timestamp to retrieve all entities that have changed since this time.
        campaign_filter:
          type: object
          properties:
            start_time:
              type: string
              pattern: ^\d+$
              example: '1622848072'
              description: Unix UTC timestamp.
            end_time:
              type: string
              pattern: ^\d+$
              example: '1622848072'
              description: Unix UTC timestamp.
            name:
              type: string
              example: campaign name
              description: Campaign name
            campaign_status:
              type: array
              items:
                $ref: '#/components/schemas/CampaignSummaryStatus'
            objective_type:
              type: array
              items:
                $ref: '#/components/schemas/ObjectiveType'
        output_format:
          type: string
          allOf:
          - $ref: '#/components/schemas/BulkOutputFormat'
          default: JSON
    ProductGroupPromotionCreateRequest:
      example:
        product_group_promotion:
        - slideshow_collections_description: Description
          collections_hero_pin_id: '123123'
          catalog_product_group_name: catalogProductGroupName
          collections_hero_destination_url: http://www.pinterest.com
          tracking_url: https://www.pinterest.com
          slideshow_collections_title: Title
          is_mdl: true
          status: ACTIVE
          creative_type: REGULAR
        - slideshow_collections_description: Description
          collections_hero_pin_id: '123123'
          catalog_product_group_name: catalogProductGroupName
          collections_hero_destination_url: http://www.pinterest.com
          tracking_url: https://www.pinterest.com
          slideshow_collections_title: Title
          is_mdl: true
          status: ACTIVE
          creative_type: REGULAR
        ad_group_id: '2680059592705'
      properties:
        ad_group_id:
          description: ID of the Ad Group the Product Group Promotion belongs to.
          example: '2680059592705'
          pattern: ^(AG)?\d+$
          title: ad_group_id
          type: string
        product_group_promotion:
          items:
            $ref: '#/components/schemas/ProductGroupPromotionCreateRequestElement'
          title: product_group_promotion
          type: array
      required:
      - ad_group_id
      - product_group_promotion
      title: ProductGroupPromotionCreateRequest
      type: object
    QuizPinData:
      description: This field includes all quiz data including questions, options, and results.
      example:
        questions:
        - question_id: 1
          question_text: Where do you thrive?
          options:
          - text: Hangout vibes
          - text: Time to party!
          - text: Keeping it lowkey
        - question_id: 2
          question_text: Where would you nap?
          options:
          - text: Hammock in the mountains
          - text: Beach towel in the sand
          - text: Tent under the stars
        - question_id: 2
          question_text: Who are you taking?
          options:
          - text: No onesolo trip!
          - text: My best friend
          - text: The family
        results:
        - organicPinId: '1234'
          android_deep_link: https://www.pinterest.com/
          iOS_deep_link: https://www.pinterest.com/
          destination_url: https://www.pinterest.com/
       

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