Pinterest Reports API
The Reports API from Pinterest — 5 operation(s) for reports.
The Reports API from Pinterest — 5 operation(s) for reports.
openapi: 3.0.3
info:
version: 5.13.0
title: Pinterest Reports 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: Reports
paths:
/ad_accounts/{ad_account_id}/mmm_reports:
get:
summary: Get advertiser Marketing Mix Modeling (MMM) report.
description: 'Get an mmm report for an ad account. This returns a URL to an mmm metrics report given a token returned from the
create mmm report endpoint.'
operationId: analytics/get_mmm_report
security:
- pinterest_oauth2:
- ads:read
x-ratelimit-category: ads_read
x-sandbox: disabled
parameters:
- $ref: '#/components/parameters/path_ad_account_id'
- $ref: '#/components/parameters/query_token_required'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GetMMMReportResponse'
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:
- Reports
post:
summary: Create a request for a Marketing Mix Modeling (MMM) report
description: 'This creates an asynchronous mmm report based on the given request. It returns a token that you can use to download
the report when it is ready. NOTE: An additional limit of 5 queries per minute per advertiser applies to this endpoint while it''s in beta release.'
operationId: analytics/create_mmm_report
security:
- pinterest_oauth2:
- ads:read
x-ratelimit-category: ads_analytics
x-sandbox: disabled
parameters:
- $ref: '#/components/parameters/path_ad_account_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMMMReportRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMMMReportResponse'
description: Success
'400':
description: Invalid ad account ads analytics mmm parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 400
message: Invalid ad account ads analytics mmm parameters
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Reports
/ad_accounts/{ad_account_id}/reports:
get:
summary: Get the account analytics report created by the async call
description: 'This returns a URL to an analytics report given a token returned from the post request report creation call. You can use the URL to download the report. The link is valid for five minutes and the report is valid for one hour.
- 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.'
operationId: analytics/get_report
security:
- pinterest_oauth2:
- ads:read
x-ratelimit-category: ads_analytics
x-sandbox: disabled
parameters:
- $ref: '#/components/parameters/path_ad_account_id'
- $ref: '#/components/parameters/query_token_required'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AdsAnalyticsGetAsyncResponse'
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:
- Reports
post:
summary: Create async request for an account analytics report
description: 'This returns a token that you can use to download the report when it is ready. Note that this endpoint requires the parameters to be passed as JSON-formatted in the request body. This endpoint does not support URL query parameters.
- 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 914 days before the current date in UTC time and the max time range supported is 186 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.
- If level is PRODUCT_ITEM, the furthest back you can are allowed to pull data is 92 days before the current date in UTC time and the max time range supported is 31 days.
- If level is PRODUCT_ITEM, ad_ids and ad_statuses parameters are not allowed. Any columns related to pin promotion and ad is not allowed either.'
operationId: analytics/create_report
security:
- pinterest_oauth2:
- ads:read
x-ratelimit-category: ads_analytics
x-sandbox: disabled
parameters:
- $ref: '#/components/parameters/path_ad_account_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AdsAnalyticsCreateAsyncRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AdsAnalyticsCreateAsyncResponse'
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:
- Reports
/ad_accounts/{ad_account_id}/templates/{template_id}/reports:
post:
summary: Create async request for an analytics report using a template
description: 'This takes a template ID and an optional custom timeframe and constructs an asynchronous report based on the
template. It returns a token that you can use to download the report when it is ready.'
operationId: analytics/create_template_report
security:
- pinterest_oauth2:
- ads:read
x-ratelimit-category: ads_analytics
x-sandbox: disabled
parameters:
- $ref: '#/components/parameters/path_ad_account_id'
- $ref: '#/components/parameters/path_template_id'
- $ref: '#/components/parameters/query_start_date_async'
- $ref: '#/components/parameters/query_end_date_async'
- $ref: '#/components/parameters/query_granularity_async'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AdsAnalyticsCreateAsyncResponse'
description: Success
'400':
description: Invalid ad account ads analytics template parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 400
message: Invalid ad account analytics template parameters.
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Reports
/catalogs/reports:
post:
summary: Build catalogs report
description: 'Async request to create a report of the catalog owned by the "operation user_account". This endpoint generates a report upon receiving the first approved request of the day. Any following requests with identical parameters will yield the same report even if data has changed.
- 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: Owner, Admin, Catalogs Manager.'
operationId: reports/create
security:
- pinterest_oauth2:
- catalogs:read
x-ratelimit-category: catalogs_read
x-sandbox: disabled
parameters:
- $ref: '#/components/parameters/query_ad_account_id'
requestBody:
description: Request object to asynchronously create a report.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogsReportParameters'
responses:
'200':
description: Response containing the report token
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogsCreateReportResponse'
'404':
description: Entity (e.g., catalog, feed or processing_result) not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
CatalogNotFound:
value:
code: 678
message: Sorry! We couldn't find that catalog. Please ensure you have access to a valid catalog id.
FeedNotFound:
value:
code: 4161
message: Sorry! We could not find your catalogs feed.
CatalogsProcessingResultNotFound:
value:
code: 4184
message: Sorry! We could not find your processing result
'409':
description: Can't access this feature without an existing catalog.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
CatalogsMerchantNotCreated:
value:
code: 4182
message: Can't access this feature without an existing catalog.
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Reports
get:
summary: Get catalogs report
description: 'This returns a URL to a report given a token returned from <a href=''/docs/api/v5/#operation/reports/create''>Build catalogs report</a>. You can use the URL to download the report.
- 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: Owner, Admin, Catalogs Manager.'
operationId: reports/get
security:
- pinterest_oauth2:
- catalogs:read
x-ratelimit-category: catalogs_read
x-sandbox: disabled
parameters:
- $ref: '#/components/parameters/query_ad_account_id'
- $ref: '#/components/parameters/query_catalogs_report_token'
responses:
'200':
description: Response that contains a link to download the report
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogsReport'
'400':
description: The token you provided is not valid or has expired.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
InvalidReportingToken:
value:
code: 1104
message: The token you provided is not valid or has expired.
'409':
description: Can't access this feature without an existing catalog.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
CatalogsMerchantNotCreated:
value:
code: 4182
message: Can't access this feature without an existing catalog.
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Reports
/catalogs/reports/stats:
get:
summary: List report stats
description: 'List aggregated numbers of issues for a catalog 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: Owner, Admin, Catalogs Manager.'
operationId: reports/stats
security:
- pinterest_oauth2:
- catalogs:read
x-ratelimit-category: catalogs_read
x-sandbox: disabled
parameters:
- $ref: '#/components/parameters/query_ad_account_id'
- $ref: '#/components/parameters/query_page_size'
- $ref: '#/components/parameters/query_bookmark'
- $ref: '#/components/parameters/query_catalogs_report_stats_parameters'
responses:
'200':
description: Response containing the diagnostics aggregated counters
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Paginated'
- type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/CatalogsReportStats'
'401':
description: Not authorized to access catalogs
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
UnauthorizedAccess:
value:
code: 2
message: Authentication failed.
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Reports
components:
parameters:
path_template_id:
name: template_id
description: Unique identifier of a template.
in: path
required: true
schema:
type: string
pattern: ^\d+$
maxLength: 18
path_ad_account_id:
name: ad_account_id
description: Unique identifier of an ad account.
in: path
required: true
schema:
type: string
pattern: ^\d+$
maxLength: 18
query_granularity_async:
description: TOTAL - metrics are aggregated over the specified date range.<br> DAY - metrics are broken down daily.<br> HOUR - metrics are broken down hourly.<br>WEEKLY - metrics are broken down weekly.<br>MONTHLY - metrics are broken down monthly
example: DAY
in: query
name: granularity
required: false
schema:
$ref: '#/components/schemas/Granularity'
query_ad_account_id:
name: ad_account_id
description: Unique identifier of an ad account.
in: query
schema:
type: string
pattern: ^\d+$
maxLength: 18
query_page_size:
name: page_size
description: Maximum number of items to include in a single page of the response. See documentation on <a href='/docs/getting-started/pagination/'>Pagination</a> for more information.
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 250
default: 25
query_start_date_async:
description: 'Metric report start date (UTC). Format: YYYY-MM-DD. Cannot be more than 2.5 years back from today.'
in: query
name: start_date
required: false
schema:
type: string
format: date
query_bookmark:
name: bookmark
description: Cursor used to fetch the next page of items
in: query
required: false
schema:
type: string
query_catalogs_report_token:
name: token
description: Token returned from async build report call
in: query
required: true
schema:
type: string
query_token_required:
name: token
description: Token returned from the post request creation call
in: query
required: true
schema:
type: string
query_end_date_async:
description: 'Metric report end date (UTC). Format: YYYY-MM-DD. Cannot be more than 2.5 years past start date.'
in: query
name: end_date
required: false
schema:
type: string
format: date
query_catalogs_report_stats_parameters:
name: parameters
in: query
description: Contains the parameters for report identification.
required: true
style: deepObject
schema:
$ref: '#/components/schemas/CatalogsReportParameters'
schemas:
CatalogsReportStats:
type: object
description: Diagnostics aggregated numbers
oneOf:
- $ref: '#/components/schemas/CatalogsReportFeedIngestionStats'
- $ref: '#/components/schemas/CatalogsReportDistributionStats'
discriminator:
propertyName: report_type
mapping:
FEED_INGESTION_ISSUES: '#/components/schemas/CatalogsReportFeedIngestionStats'
DISTRIBUTION_ISSUES: '#/components/schemas/CatalogsReportDistributionStats'
properties:
report_type:
type: string
enum:
- FEED_INGESTION_ISSUES
- DISTRIBUTION_ISSUES
required:
- report_type
CatalogsReport:
type: object
properties:
report_status:
type: string
enum:
- FINISHED
- IN_PROGRESS
url:
type: string
nullable: true
description: URL to download the report
size:
type: number
nullable: true
description: Size of the report in bytes
CatalogsHotelReportParameters:
type: object
description: Parameters for hotel report
properties:
catalog_type:
type: string
enum:
- HOTEL
report:
type: object
oneOf:
- $ref: '#/components/schemas/CatalogsReportFeedIngestionFilter'
- $ref: '#/components/schemas/CatalogsReportDistributionIssueFilter'
discriminator:
propertyName: report_type
mapping:
FEED_INGESTION_ISSUES: '#/components/schemas/CatalogsReportFeedIngestionFilter'
DISTRIBUTION_ISSUES: '#/components/schemas/CatalogsReportDistributionIssueFilter'
properties:
report_type:
type: string
enum:
- FEED_INGESTION_ISSUES
- DISTRIBUTION_ISSUES
required:
- catalog_type
- report
Error:
title: Error
type: object
properties:
code:
type: integer
message:
type: string
required:
- code
- message
MetricsReportingLevel:
type: string
description: Level of the reporting request
example: CAMPAIGN
enum:
- ADVERTISER
- ADVERTISER_TARGETING
- CAMPAIGN
- CAMPAIGN_TARGETING
- AD_GROUP
- AD_GROUP_TARGETING
- PIN_PROMOTION
- PIN_PROMOTION_TARGETING
- KEYWORD
- PRODUCT_GROUP
- PRODUCT_GROUP_TARGETING
- PRODUCT_ITEM
AdsAnalyticsCreateAsyncRequest:
type: object
allOf:
- type: object
properties:
start_date:
description: 'Metric report start date (UTC). Format: YYYY-MM-DD'
type: string
pattern: ^(\d{4})-(\d{2})-(\d{2})$
example: '2020-12-20'
end_date:
description: 'Metric report end date (UTC). Format: YYYY-MM-DD'
type: string
pattern: ^(\d{4})-(\d{2})-(\d{2})$
example: '2020-12-20'
granularity:
description: TOTAL - metrics are aggregated over the specified date range.<br> DAY - metrics are broken down daily.<br> HOUR - metrics are broken down hourly.<br>WEEKLY - metrics are broken down weekly.<br>MONTHLY - metrics are broken down monthly
type: string
allOf:
- $ref: '#/components/schemas/Granularity'
click_window_days:
description: Number of days to use as the conversion attribution window for a pin click action. Applies to Pinterest Tag conversion metrics. Prior conversion tags use their defined attribution windows. If not specified, defaults to `30` days.
type: integer
allOf:
- $ref: '#/components/schemas/ConversionAttributionWindowDays'
default: 30
engagement_window_days:
description: Number of days to use as the conversion attribution window for an engagement action. Engagements include saves, closeups, link clicks, and carousel card swipes. Applies to Pinterest Tag conversion metrics. Prior conversion tags use their defined attribution windows. If not specified, defaults to `30` days.
type: integer
allOf:
- $ref: '#/components/schemas/ConversionAttributionWindowDays'
default: 30
view_window_days:
description: Number of days to use as the conversion attribution window for a view action. Applies to Pinterest Tag conversion metrics. Prior conversion tags use their defined attribution windows. If not specified, defaults to `1` day.
type: integer
allOf:
- $ref: '#/components/schemas/ConversionAttributionWindowDays'
default: 1
conversion_report_time:
description: 'The date by which the conversion metrics returned from this endpoint will be reported. There are two dates associated with a conversion event: the date that the user interacted with the ad, and the date that the user completed a conversion event.'
type: string
allOf:
- $ref: '#/components/schemas/ConversionReportTimeType'
default: TIME_OF_AD_ACTION
attribution_types:
description: List of types of attribution for the conversion report
type: array
items:
$ref: '#/components/schemas/ConversionReportAttributionType'
required:
- start_date
- end_date
- granularity
- type: object
allOf:
- type: object
properties:
campaign_ids:
type: array
description: List of campaign ids
example:
- '12345678'
items:
type: string
pattern: ^\d+$
maxItems: 500
minItems: 1
- type: object
properties:
campaign_statuses:
type: array
description: List of status values for filtering
example:
- RUNNING
- PAUSED
items:
$ref: '#/components/schemas/CampaignSummaryStatus'
maxItems: 6
minItems: 1
- type: object
properties:
campaign_objective_types:
type: array
description: List of values for filtering. ["WEB_SESSIONS"] in BETA.
example:
- AWARENESS
- VIDEO_VIEW
items:
$ref: '#/components/schemas/ObjectiveType'
maxItems: 6
minItems: 1
- type: object
properties:
ad_group_ids:
type: array
description: List of ad group ids
example:
- '12345678'
items:
type: string
pattern: ^\d+$
maxItems: 500
minItems: 1
- type: object
properties:
ad_group_statuses:
type: array
description: List of values for filtering
example:
- RUNNING
- PAUSED
items:
$ref: '#/components/schemas/AdGroupSummaryStatus'
maxItems: 6
minItems: 1
- type: object
properties:
ad_ids:
type: array
description: List of ad ids [This parameter is no supported for Product Item Level Reports]
example:
- '12345678'
items:
type: string
pattern: ^\d+$
maxItems: 500
minItems: 1
- type: object
properties:
ad_statuses:
type: array
description: List of values for filtering [This parameter is not supported for Product Item Level Reports]
example:
- APPROVED
- PAUSED
items:
$ref: '#/components/schemas/PinPromotionSummaryStatus'
maxItems: 6
minItems: 1
- type: object
properties:
product_group_ids:
type: array
description: List of product group ids
example:
- '12345678'
items:
type: string
pattern: ^\d+$
maxItems: 500
minItems: 1
- type: object
properties:
product_group_statuses:
type: array
description: List of values for filtering
example:
- RUNNING
- PAUSED
items:
$ref: '#/components/schemas/ProductGroupSummaryStatus'
maxItems: 6
minItems: 1
- type: object
properties:
product_item_ids:
type: array
description: List of product item ids
example:
- '12345678'
items:
type: string
pattern: ^\d+$
maxItems: 500
minItems: 1
- $ref: '#/components/schemas/TargetingTypeFilter'
- type: object
properties:
metrics_filters:
type: array
description: List of metrics filters
minItems: 1
items:
$ref: '#/components/schemas/AdsAnalyticsMetricsFilter'
- type: object
required:
- level
- columns
properties:
columns:
description: Metric and entity columns. Pin promotion and ad related columns are not supported for the Product Item level reports.
type: array
items:
$ref: '#/components/schemas/ReportingColumnAsync'
level:
type: string
description: Level of the report
allOf:
- $ref: '#/components/schemas/MetricsReportingLevel'
example: CAMPAIGN
report_format:
description: Specification for formatting the report data. Reports in JSON will not zero-fill metrics, whereas reports in CSV will. Both report formats will omit rows where all the columns are equal to 0.
type: string
allOf:
- $ref: '#/components/schemas/DataOutputFormat'
default: JSON
primary_sort:
type: string
allOf:
- type: string
description: Whether to first sort the report by date or by ID. BY_DATE is recommended for large requests. BY_DATE for JSON format is currently not supported.
example: BY_ID
enum:
- BY_ID
- BY_DATE
default: BY_ID
CreateMMMReportResponse:
type: object
properties:
code:
example: 0
type: number
data:
title: CreateMMMReportResponseData
type: object
properties:
report_status:
type: string
allOf:
- $ref: '#/components/schemas/BulkReportingJobStatus'
token:
type: string
message:
type: string
nullable: true
status:
example: success
type: string
ReportingColumnAsync:
type: string
description: Reporting columns
example: SPEND_IN_MICRO_DOLLAR
enum:
- SPEND_IN_MICRO_DOLLAR
- PAID_IMPRESSION
- SPEND_IN_DOLLAR
- CPC_IN_MICRO_DOLLAR
- ECPC_IN_MICRO_DOLLAR
- ECPC_IN_DOLLAR
- CTR
- ECTR
- OUTBOUND_CTR
- COST_PER_OUTBOUND_CLICK
- CAMPAIGN_NAME
- CAMPAIGN_STATUS
- PIN_PROMOTION_STATUS
- AD_STATUS
- PIN_ID
- TOTAL_ENGAGEMENT
- ENGAGEMENT_1
- ENGAGEMENT_2
- ECPE_IN_DOLLAR
- ENGAGEMENT_RATE
- EENGAGEMENT_RATE
- ECPM_IN_MICRO_DOLLAR
- REPIN_RATE
- CTR_2
- CAMPAIGN_ID
- ADVERTISER_ID
- AD_ACCOUNT_ID
- PIN_PROMOTION_ID
- AD_ID
- AD_GROUP_ID
- CAMPAIGN_ENTITY_STATUS
- CAMPAIGN_MANAGED_STATUS
- CAMPAIGN_OBJECTIVE_TYPE
- CPM_IN_MICRO_DOLLAR
- CPM_IN_DOLLAR
- AD_GROUP_NAME
- AD_GROUP_STATUS
- AD_GROUP_ENTITY_STATUS
- PRODUCT_GROUP_ID
- PRODUCT_GROUP_STATUS
- ORDER_LINE_ID
- ORDER_LINE_NAME
- CLICKTHROUGH_1
- REPIN_1
- IMPRESSION_1
- IMPRESSION_1_GROSS
- CLICKTHROUGH_1_GROSS
- OUTBOUND_CLICK_1
- CLICKTHROUGH_2
- REPIN_2
- IMPRESSION_2
- OUTBOUND_CLICK_2
- TOTAL_CLICKTHROUGH
- TOTAL_IMPRESSION
- TOTAL_IMPRESSION_USER
- TOTAL_IMPRESSION_FREQUENCY
- COST_PER_OUTBOUND_CLICK_IN_DOLLAR
- TOTAL_ENGAGEMENT_PAGE_VISIT
- TOTAL_ENGAGEMENT_SIGNUP
- TOTAL_ENGA
# --- truncated at 32 KB (69 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pinterest/refs/heads/main/openapi/pinterest-reports-api-openapi.yml