Pinterest Ads API

The Ads API from Pinterest — 7 operation(s) for ads.

OpenAPI Specification

pinterest-ads-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  version: 5.13.0
  title: Pinterest Ads 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: Ads
paths:
  /ad_accounts/{ad_account_id}/ad_previews:
    post:
      summary: Create ad preview with pin or image
      description: 'Create an ad preview given an ad account ID and either an existing organic pin ID or the URL for an image to be used to create the Pin and the ad. <p/>

        If you are creating a preview from an existing Pin, that Pin must be promotable: that is, it must have a clickthrough link and meet other requirements. (See <a href="https://help.pinterest.com/en/business/article/promoted-pins-overview" target="_blank">Ads Overview</a>.) <p/>

        You can view the returned preview URL on a webpage or iframe for 7 days, after which the URL expires. Collection ads are not currently supported ad preview.'
      tags:
      - Ads
      operationId: ad_previews/create
      security:
      - pinterest_oauth2:
        - ads:write
      x-ratelimit-category: ads_write
      x-sandbox: enabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      requestBody:
        description: Create ad preview with pin or image.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdPreviewRequest'
      responses:
        '200':
          description: Successful ad preview creation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdPreviewURLResponse'
        '400':
          description: Invalid Pin parameters response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                InvalidPinUrl:
                  value:
                    code: 1
                    message: Whoops! It looks like you entered an invalid URL. Try creating a Pin again with a valid URL.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /ad_accounts/{ad_account_id}/ads:
    get:
      summary: List ads
      description: "List ads that meet the filters provided:\n  - Listed campaign ids or ad group ids or ad ids\n  - Listed entity statuses <p/>\nIf no filter is provided, all ads in the ad account are returned. <p/>\n<strong>Note:</strong><p/>\nProvide only campaign_id or ad_group_id or ad_id. Do not provide more than one type. <p/>\nReview status is provided for each ad; if review_status is REJECTED, the rejected_reasons field will contain additional information.\nFor more, see <a href=\"https://policy.pinterest.com/en/advertising-guidelines\">Pinterest advertising standards</a>."
      operationId: ads/list
      security:
      - pinterest_oauth2:
        - ads:read
      x-ratelimit-category: ads_read
      x-sandbox: enabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      - $ref: '#/components/parameters/query_campaign_ids'
      - $ref: '#/components/parameters/query_ad_group_ids'
      - $ref: '#/components/parameters/query_ad_ids'
      - $ref: '#/components/parameters/query_entity_statuses'
      - $ref: '#/components/parameters/query_page_size'
      - $ref: '#/components/parameters/query_order'
      - $ref: '#/components/parameters/query_bookmark'
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Paginated'
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        $ref: '#/components/schemas/AdResponse'
          description: Success
        '400':
          description: Invalid ad account ads parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 400
                message: Invalid ad account ads parameters.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Ads
    post:
      description: Create multiple new ads. Request must contain ad_group_id, creative_type, and the source Pin pin_id.
      operationId: ads/create
      security:
      - pinterest_oauth2:
        - ads:write
      x-ratelimit-category: ads_write
      x-sandbox: enabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: '#/components/schemas/AdCreateRequest'
              maxItems: 30
              minItems: 1
              type: array
        description: List of ads to create, size limit [1, 30].
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdArrayResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Create ads
      tags:
      - Ads
    patch:
      description: Update multiple existing ads
      operationId: ads/update
      security:
      - pinterest_oauth2:
        - ads:write
      x-ratelimit-category: ads_write
      x-sandbox: enabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: '#/components/schemas/AdUpdateRequest'
              maxItems: 30
              minItems: 1
              type: array
        description: List of ads to update, size limit [1, 30]
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdArrayResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      summary: Update ads
      tags:
      - Ads
  /ad_accounts/{ad_account_id}/ads/analytics:
    get:
      summary: Get ad analytics
      description: 'Get analytics for the specified ads in the specified <code>ad_account_id</code>, filtered by the specified options.

        - 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, Analyst, Campaign Manager.

        - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days.

        - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time and the max time range supported is 3 days.'
      operationId: ads/analytics
      security:
      - pinterest_oauth2:
        - ads:read
      x-ratelimit-category: ads_analytics
      x-sandbox: enabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      - $ref: '#/components/parameters/query_start_date'
      - $ref: '#/components/parameters/query_end_date'
      - $ref: '#/components/parameters/query_ad_ids_required'
      - $ref: '#/components/parameters/query_columns'
      - $ref: '#/components/parameters/query_granularity'
      - $ref: '#/components/parameters/query_conversion_attribution_click_window_days'
      - $ref: '#/components/parameters/query_conversion_attribution_engagement_window_days'
      - $ref: '#/components/parameters/query_conversion_attribution_view_window_days'
      - $ref: '#/components/parameters/query_conversion_attribution_conversion_report_time'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdsAnalyticsResponse'
          description: Success
        '400':
          description: Invalid ad account ads analytics parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 400
                message: Invalid ad account ads analytics parameters.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Ads
  /ad_accounts/{ad_account_id}/ads_credit/discounts:
    get:
      summary: Get ads credit discounts
      description: 'Returns the list of discounts applied to the account.


        <strong>This endpoint might not be available to all apps. <a href=''/docs/new/about-beta-access/''>Learn more</a>.</strong>'
      operationId: ads_credits_discounts/get
      security:
      - pinterest_oauth2:
        - ads:read
        - billing:read
      x-ratelimit-category: ads_read
      x-sandbox: disabled
      tags:
      - Ads
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      - $ref: '#/components/parameters/query_bookmark'
      - $ref: '#/components/parameters/query_page_size'
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Paginated'
                - type: object
                  properties:
                    items:
                      type: array
                      items:
                        $ref: '#/components/schemas/AdsCreditDiscountsResponse'
          description: Success
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /ad_accounts/{ad_account_id}/ads_credit/redeem:
    post:
      summary: Redeem ad credits
      description: 'Redeem ads credit on behalf of the ad account id and apply it towards billing.


        <strong>This endpoint might not be available to all apps. <a href=''/docs/new/about-beta-access/''>Learn more</a>.</strong>'
      tags:
      - Ads
      operationId: ads_credit/redeem
      security:
      - pinterest_oauth2:
        - ads:write
        - billing:write
      x-ratelimit-category: ads_write
      x-sandbox: disabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      requestBody:
        description: Redeem ad credits request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdsCreditRedeemRequest'
      responses:
        '200':
          description: Successfully redeemed ad credits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdsCreditRedeemResponse'
        '400':
          description: Error thrown when unable to redeem offer code.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                ValidationError:
                  value:
                    code: 15
                    message: Unable to redeem offer code. Try again later.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /ad_accounts/{ad_account_id}/ads/targeting_analytics:
    get:
      summary: Get targeting analytics for ads
      description: 'Get targeting analytics for one or more ads. For the requested ad(s) and metrics,

        the response will include the requested metric information (e.g. SPEND_IN_DOLLAR) for the requested target type

        (e.g. "age_bucket") for applicable values (e.g. "45-49"). <p/>

        - 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, Analyst, Campaign Manager.

        - If granularity is not HOUR, the furthest back you can are allowed to pull data is 90 days before the current date in UTC time and the max time range supported is 90 days.

        - If granularity is HOUR, the furthest back you can are allowed to pull data is 8 days before the current date in UTC time and the max time range supported is 3 days.'
      operationId: ad_targeting_analytics/get
      security:
      - pinterest_oauth2:
        - ads:read
      x-ratelimit-category: ads_analytics
      x-sandbox: enabled
      parameters:
      - $ref: '#/components/parameters/path_ad_account_id'
      - $ref: '#/components/parameters/query_ad_ids_required'
      - $ref: '#/components/parameters/query_start_date'
      - $ref: '#/components/parameters/query_end_date'
      - $ref: '#/components/parameters/query_targeting_types'
      - $ref: '#/components/parameters/query_columns'
      - $ref: '#/components/parameters/query_granularity'
      - $ref: '#/components/parameters/query_conversion_attribution_click_window_days'
      - $ref: '#/components/parameters/query_conversion_attribution_engagement_window_days'
      - $ref: '#/components/parameters/query_conversion_attribution_view_window_days'
      - $ref: '#/components/parameters/query_conversion_attribution_conversion_report_time'
      - $ref: '#/components/parameters/query_attribution_types'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      tags:
      - Ads
  /ad_accounts/{ad_account_id}/ads/{ad_id}:
    get:
      summary: Get ad
      description: 'Get a specific ad given the ad ID. If your pin is rejected, rejected_reasons will

        contain additional information from the Ad Review process.

        For more information about our policies and rejection reasons see the <a href="https://www.pinterest.com/_/_/policy/advertising-guidelines/"

        target="_blank">Pinterest advertising standards</a>.'
      operationId: ads/get
      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_ad_id'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdResponse'
          description: Success
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Unexpected error
      tags:
      - Ads
components:
  schemas:
    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
    AdsAnalyticsResponse:
      type: array
      items:
        type: object
        properties:
          AD_ID:
            description: The ID of the ad that this metrics belongs to.
            type: string
            pattern: ^\d+$
          DATE:
            description: Current metrics date. Only returned when granularity is a time-based value (`DAY`, `HOUR`, `WEEK`, `MONTH`)
            type: string
            format: date
        required:
        - AD_ID
        additionalProperties: true
        example:
          DATE: '2021-04-01'
          AD_ID: '547602124502'
          SPEND_IN_DOLLAR: 30
          TOTAL_CLICKTHROUGH: 216
    EntityStatus:
      type: string
      description: Entity status
      example: ACTIVE
      enum:
      - ACTIVE
      - PAUSED
      - ARCHIVED
      - DRAFT
      - DELETED_DRAFT
    AdPreviewRequest:
      oneOf:
      - example:
          image_url: https://somewebsite.com/someimage.jpg
          title: My Preview Image
        properties:
          image_url:
            description: Image URL.
            example: https://somewebsite.com/someimage.jpg
            title: image_url
            type: string
          title:
            description: Title displayed below ad.
            example: My Preview Image
            title: title
            type: string
        required:
        - image_url
        - title
        title: AdPreviewCreateFromImage
        type: object
      - example:
          pin_id: '7389479023'
        properties:
          pin_id:
            description: Pin ID.
            example: '7389479023'
            title: pin_id
            type: string
        required:
        - pin_id
        title: AdPreviewCreateFromPin
        type: object
    Error:
      title: Error
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
      required:
      - code
      - message
    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'
    Exception:
      title: Generic exception class to be used within schemas
      type: object
      properties:
        code:
          type: integer
          example: 2
          description: Exception error code.
        message:
          type: string
          example: Advertiser not found.
          description: Exception message.
    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
    AdsCreditDiscountsResponse:
      type: object
      properties:
        active:
          description: True if the offer code is currently active.
          type: boolean
          example: true
        advertiser_id:
          description: Advertiser ID the offer was applied to.
          type: string
          pattern: ^\d+$
          example: '12312451231'
        discountType:
          description: The type of discount of this credit
          type: string
          nullable: true
          enum:
          - COUPON
          - CREDIT
          - COUPON_APPLIED
          - CREDIT_APPLIED
          - MARKETING_OFFER_CREDIT
          - MARKETING_OFFER_CREDIT_APPLIED
          - GOODWILL_CREDIT
          - GOODWILL_CREDIT_APPLIED
          - INTERNAL_CREDIT
          - INTERNAL_CREDIT_APPLIED
          - PREPAID_CREDIT
          - PREPAID_CREDIT_APPLIED
          - SALES_INCENTIVE_CREDIT
          - SALES_INCENTIVE_CREDIT_APPLIED
          - CREDIT_EXPIRED
          - FUTURE_CREDIT
          - REFERRAL_CREDIT
          - INVOICE_SALES_INCENTIVE_CREDIT
          - INVOICE_SALES_INCENTIVE_CREDIT_APPLIED
          - PREPAID_CREDIT_REFUND
          - null
        discountInMicroCurrency:
          description: The discount applied in the offers currency value.
          type: number
          nullable: true
          example: 125000000
        discountCurrency:
          type: string
          nullable: true
          description: Currency value for the discount.
          example: USD
        title:
          description: Human readable title of the offer code.
          type: string
          nullable: true
          example: Ads Credits
        remainingDiscountInMicroCurrency:
          type: number
          nullable: true
          description: The credits left to spend.
          example: 125000000
    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
    MetricsResponse:
      properties:
        data:
          items:
            type: object
          type: array
          example:
          - targeting_type: KEYWORD
            targeting_value: christmas decor ideas
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: APPTYPE
            targeting_value: iphone
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: APPTYPE
            targeting_value: ipad
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: APPTYPE
            targeting_value: web
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: APPTYPE
            targeting_value: web_mobile
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: APPTYPE
            targeting_value: android_mobile
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: APPTYPE
            targeting_value: android_tablet
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: GENDER
            targeting_value: female
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: LOCATION
            targeting_value: 500
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: PLACEMENT
            targeting_value: SEARCH
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: COUNTRY
            targeting_value: US
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: TARGETED_INTEREST
            targeting_value: Food and Drinks
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: PINNER_INTEREST
            targeting_value: Chocolate Cookies
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: AUDIENCE_INCLUDE
            targeting_value: 254261234567
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: GEO
            targeting_value: US:94102
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: AGE_BUCKET
            targeting_value: 45-49
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
          - targeting_type: REGION
            targeting_value: US-CA
            metrics:
              AD_GROUP_ID: 2680067996745
              DATE: '2022-04-26'
              SPEND_IN_DOLLAR: 240
      type: object
    Paginated:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
        bookmark:
          type: string
          nullable: true
      required:
      - items
    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+$
    AdArrayResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/AdArrayResponseElement'
      title: AdArrayResponse
    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
    ConversionReportAttributionType:
      type: string
      description: Attribution type. Refers to the Pinterest Tag endpoints
      example: INDIVIDUAL
      enum:
      - INDIVIDUAL
      - HOUSEHOLD
    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
    PinPromotionSummaryStatus:
      type: string
      description: Summary status for pin promotions
      example: APPROVED
      enum:
      - APPROVED
      - PAUSED
      - PENDING
      - REJECTED
      - ADVERTISER_DISABLED
      - ARCHIVED
      - DRAFT
      - DELETED_DRAFT
    AdArrayResponseElement:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/AdResponse'
        exceptions:
          $ref: '#/components/schemas/Exception'
    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/
          result_id: 1
        - organicPinId: '1234'
          android_deep_link: https://www.pinterest.com/
          iOS_deep_link: https://www.pinterest.com/
          destination_url: https://www.pinterest.com/
          result_id: 2
        - organicPinId: '1234'
          android_deep_link: https://www.pinterest.com/
          iOS_deep_link: https://www.pinterest.com/
          destination_url: https://www.pinterest.com/
          result_id: 3
      type: object
      nullable: true
      properties:
        questions:
          type: array
          items:
            $ref: '#/components/schemas/QuizPinQuestion'
        results:
          type: array
          items:
            $ref: '#/components/schemas/QuizPinResult'
    AdsAnalyticsTargetingType:
      type: string
      description: Reporting targeting type
      example: APPTYPE
      enum:
      - KEYWORD
      - APPTYPE
      - GENDER
      - LOCATION
      - PLACEMENT
      - COUNTRY
      - TARGETED_INTEREST
      - PINNER_INTEREST
      - AUDIENCE_INCLUDE
      - GEO
      - AGE_BUCKET
      - REGION
      - AGE_BUCKET_AND_GENDER
    AdsCreditRedeemResponse:
      type: object
      properties:
        success:
          description: Returns true if the offer code was successfully applied(validateOnly=false) or can be applied(validateOnly=true).
          type: boolean
          example: false
        errorCode:
          description: Error code type if error occurs
          type: integer
          nullable: true
          example: 2708
        errorMessage:
          description: Reason for failure
          type: string
          nullable: true
          example: The offer has already been redeemed by this advertiser
    AdCommon:
      type: object
      description: Creation fields
      properties:
        ad_group_id:
          description: ID of the ad group that contains the ad.
          example: '2680059592705'
          type: string
          pattern: ^(AG)?\d+$
        android_deep_link:
          description: Deep link URL for Android devices. Not currently available. Using this field will generate an error.
          nullable: true
          type: string
        carousel_android_deep_links:
          description: Comma-separated deep links for the carousel pin on Android.
          type: array
          nullable: true
          items:
            type: string
        carousel_destination_urls:
          description: Comma-separated destination URLs for the carousel pin to promote.
          type: array
          nullable: true
          items:
            type: string
        carousel_ios_deep_links:
          description: Comma-separated deep links for the carousel pin on iOS.
          type: array
          nullable: true
          items:
            type: string
        click_tracking_url:
          description: Tracking url for the ad clicks.
        

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