Pinterest Batch API
The Batch API from Pinterest — 2 operation(s) for batch.
The Batch API from Pinterest — 2 operation(s) for batch.
openapi: 3.0.3
info:
version: 5.13.0
title: Pinterest Batch 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: Batch
paths:
/catalogs/items/batch:
post:
summary: Operate on item batch
description: 'This endpoint supports multiple operations on a set of one or more catalog items owned by the "operation user_account". <a href="/docs/shopping/catalog/#Update%20items%20in%20batch" target="_blank">See detailed documentation here.</a>
- 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.
Note: The catalog type of Creative Assets is only allowed in the <a href=''https://api-sandbox.pinterest.com/v5''>Pinterest API Sandbox</a>.
If access is required, please contact your partner manager.'
operationId: items_batch/post
x-ratelimit-category: catalogs_write
x-sandbox: enabled
security:
- pinterest_oauth2:
- catalogs:read
- catalogs:write
parameters:
- $ref: '#/components/parameters/query_ad_account_id'
requestBody:
description: Request object used to create catalogs items in a batch
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/CatalogsVerticalBatchRequest'
- $ref: '#/components/schemas/CatalogsItemsBatchRequest'
responses:
'200':
description: Response containing the requested catalogs items batch
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogsItemsBatch'
'400':
description: Invalid request parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
InvalidRequest:
value:
code: 1
message: 'Invalid request: {''country'': ''US'', ''language'': ''EN'', ''operation'': ''CREATE'', ''items'': [{''item_id'': ''RAY_01_'', ''attributes'': {''image_link'': ''https://www.example.com/'', ''title'': ''My Product''}}]} (''https://www.example.com/'' is not of type array)'
'401':
description: Not authenticated to post catalogs items
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
UnauthenticatedAccess:
value:
code: 2
message: Authentication failed.
'403':
description: Not authorized to post catalogs items
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Batch
/catalogs/items/batch/{batch_id}:
get:
summary: Get catalogs item batch status
description: 'Get a single catalogs items batch owned by the "operating user_account". <a href="/docs/shopping/catalog/#Update%20items%20in%20batch" target="_blank">See detailed documentation here.</a>
- 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: items_batch/get
security:
- pinterest_oauth2:
- catalogs:read
x-ratelimit-category: catalogs_read
x-sandbox: enabled
parameters:
- $ref: '#/components/parameters/path_catalogs_items_batch_id'
- $ref: '#/components/parameters/query_ad_account_id'
responses:
'200':
description: Response containing the requested catalogs items batch
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogsItemsBatch'
'401':
description: Not authenticated to access catalogs items batch
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
UnauthenticatedAccess:
value:
code: 2
message: Authentication failed.
'403':
description: Not authorized to access catalogs items batch
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Catalogs items batch not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
CannotFindBatch:
value:
code: 4331
message: Sorry! We could not find your batch ID.
'405':
description: Method Not Allowed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
MethodNotAllowed:
value:
status: failure
code: 5
data: '405 Method Not Allowed: The method is not allowed for the requested URL.'
message: Method not allowed
endpoint_name: null
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Batch
components:
schemas:
CatalogsCreateCreativeAssetsItem:
type: object
description: A creative assets item to be created.
properties:
creative_assets_id:
description: The catalog creative assets id in the merchant namespace
example: DS0294-M
type: string
operation:
type: string
enum:
- CREATE
attributes:
$ref: '#/components/schemas/CatalogsCreativeAssetsAttributes'
required:
- creative_assets_id
- operation
- attributes
CatalogsHotelAddress:
type: object
properties:
addr1:
description: Primary street address of hotel.
type: string
city:
description: City where the hotel is located.
type: string
region:
description: State, county, province, where the hotel is located.
type: string
country:
description: Country where the hotel is located.
type: string
postal_code:
description: Required for countries with a postal code system. Postal or zip code of the hotel.
type: string
CatalogsHotelGuestRatings:
type: object
description: If specified, you must provide all properties
properties:
score:
description: Your hotel's rating.
type: number
number_of_reviewers:
description: Total number of people who have rated this hotel.
type: integer
max_score:
description: Max value for the hotel rating score.
type: number
rating_system:
description: System you use for guest reviews.
type: string
CatalogsItemsBatchRequest:
type: object
title: legacy_retail_only
description: Request object of catalogs items batch
oneOf:
- $ref: '#/components/schemas/CatalogsItemsUpdateBatchRequest'
- $ref: '#/components/schemas/CatalogsItemsUpsertBatchRequest'
- $ref: '#/components/schemas/CatalogsItemsCreateBatchRequest'
- $ref: '#/components/schemas/CatalogsItemsDeleteDiscontinuedBatchRequest'
- $ref: '#/components/schemas/CatalogsItemsDeleteBatchRequest'
discriminator:
propertyName: operation
mapping:
UPDATE: '#/components/schemas/CatalogsItemsUpdateBatchRequest'
UPSERT: '#/components/schemas/CatalogsItemsUpsertBatchRequest'
CREATE: '#/components/schemas/CatalogsItemsCreateBatchRequest'
DELETE_DISCONTINUED: '#/components/schemas/CatalogsItemsDeleteDiscontinuedBatchRequest'
DELETE: '#/components/schemas/CatalogsItemsDeleteBatchRequest'
CatalogsCreativeAssetsAttributes:
type: object
allOf:
- type: object
properties:
image_link:
type: string
description: The creative assets image.
example: https://scene.example.com/image/image_v2.jpg
video_link:
type: string
description: The creative assets video.
example: https://scene.example.com/image/image_v2.mp4
- $ref: '#/components/schemas/CatalogsUpdatableCreativeAssetsAttributes'
CatalogsHotelBatchItem:
description: Hotel batch item
type: object
anyOf:
- $ref: '#/components/schemas/CatalogsCreateHotelItem'
- $ref: '#/components/schemas/CatalogsUpsertHotelItem'
- $ref: '#/components/schemas/CatalogsUpdateHotelItem'
- $ref: '#/components/schemas/CatalogsDeleteHotelItem'
discriminator:
propertyName: operation
mapping:
CREATE: '#/components/schemas/CatalogsCreateHotelItem'
UPSERT: '#/components/schemas/CatalogsUpsertHotelItem'
UPDATE: '#/components/schemas/CatalogsUpdateHotelItem'
DELETE: '#/components/schemas/CatalogsDeleteHotelItem'
CatalogsCreateHotelItem:
type: object
description: A hotel item to be created.
properties:
hotel_id:
description: The catalog hotel id in the merchant namespace
example: DS0294-M
type: string
operation:
type: string
enum:
- CREATE
attributes:
$ref: '#/components/schemas/CatalogsHotelAttributes'
required:
- hotel_id
- operation
- attributes
Error:
title: Error
type: object
properties:
code:
type: integer
message:
type: string
required:
- code
- message
CatalogsRetailBatchRequest:
type: object
description: A request object that can have multiple operations on a single retail batch
additionalProperties: false
properties:
catalog_type:
$ref: '#/components/schemas/CatalogsType'
country:
$ref: '#/components/schemas/Country'
language:
$ref: '#/components/schemas/Language'
items:
minItems: 1
maxItems: 1000
type: array
description: Array with catalogs item operations
items:
anyOf:
- $ref: '#/components/schemas/CatalogsCreateRetailItem'
- $ref: '#/components/schemas/CatalogsUpdateRetailItem'
- $ref: '#/components/schemas/CatalogsUpsertRetailItem'
- $ref: '#/components/schemas/CatalogsDeleteRetailItem'
discriminator:
propertyName: operation
mapping:
CREATE: '#/components/schemas/CatalogsCreateRetailItem'
UPDATE: '#/components/schemas/CatalogsUpdateRetailItem'
UPSERT: '#/components/schemas/CatalogsUpsertRetailItem'
DELETE: '#/components/schemas/CatalogsDeleteRetailItem'
required:
- catalog_type
- country
- language
- items
UpdatableItemAttributes:
type: object
properties:
ad_link:
description: Allows advertisers to specify a separate URL that can be used to track traffic coming from Pinterest shopping ads. Must send full URL including trackingdo not send tracking parameters only. At this time we do not support impression tracking. Must begin with http:// or https://.
example: https://www.example.com/cat/denim-shirt/item012?utm_source=Pinterest
type: string
nullable: true
adult:
description: Set this attribute to TRUE if you're submitting items that are considered adult. These will not be shown on Pinterest.
example: true
type: boolean
nullable: true
age_group:
description: 'The age group to apply a demographic range to the product. Must be one of the following values (upper or lowercased): newborn , infant, toddler, kids, or adult.'
example: newborn
type: string
nullable: true
availability:
description: 'The availability of the product. Must be one of the following values (upper or lowercased): in stock, out of stock , preorder.'
example: in stock
type: string
average_review_rating:
description: Average reviews for the item. Can be a number from 1-5.
example: 5
type: number
nullable: true
brand:
description: The brand of the product.
example: Josies Denim
type: string
nullable: true
checkout_enabled:
description: This attribute is not supported anymore.
example: false
type: boolean
nullable: true
deprecated: true
color:
description: The primary color of the product.
example: blue
type: string
nullable: true
condition:
description: 'The condition of the product. Must be one of the following values (upper or lowercased): new, used, or refurbished.'
example: new
type: string
nullable: true
custom_label_0:
description: '<p><= 1000 characters</p>
<p>Custom grouping of products.</p>'
example: Best sellers
type: string
nullable: true
custom_label_1:
description: '<p><= 1000 characters</p>
<p>Custom grouping of products.</p>'
example: Summer promotion
type: string
nullable: true
custom_label_2:
description: '<p><= 1000 characters</p>
<p>Custom grouping of products.</p>'
example: Winter sales
type: string
nullable: true
custom_label_3:
description: '<p><= 1000 characters</p>
<p>Custom grouping of products.</p>'
example: Woman dress
type: string
nullable: true
custom_label_4:
description: '<p><= 1000 characters</p>
<p>Custom grouping of products.</p>'
example: Man hat
type: string
nullable: true
description:
description: '<p><= 10000 characters</p>
<p>The description of the product.</p>'
example: Casual fit denim shirt made with the finest quality Japanese denim.
type: string
free_shipping_label:
description: The item is free to ship.
example: true
type: boolean
nullable: true
free_shipping_limit:
description: The minimum order purchase necessary for the customer to get free shipping. Only relevant if free shipping is offered.
example: 35 USD
type: string
nullable: true
gender:
description: 'The gender associated with the product. Must be one of the following values (upper or lowercased): male, female , or unisex.'
example: unisex
type: string
nullable: true
google_product_category:
description: The categorization of the product based on the standardized Google Product Taxonomy. This is a set taxonomy. Both the text values and numeric codes are accepted.
example: Apparel & Accessories > Clothing > Shirts & Tops
type: string
nullable: true
gtin:
description: The unique universal product identifier.
example: 3234567890126
type: integer
nullable: true
id:
description: '<p><= 127 characters</p>
<p>The user-created unique ID that represents the product. Only
Unicode characters are accepted.</p>'
example: DS0294-L
type: string
deprecated: true
item_group_id:
description: '<p><= 127 characters</p>
<p>The parent ID of the product.</p>'
example: DS0294
type: string
nullable: true
last_updated_time:
description: The millisecond timestamp when the item was lastly modified by the merchant.
example: 1641483432072
type: integer
format: int64
nullable: true
link:
description: '<p><= 511 characters</p>
<p>The landing page for the product.</p>'
example: https://www.example.com/cat/womens-clothing/denim-shirt-0294
type: string
material:
description: The material used to make the product.
example: cotton
type: string
nullable: true
min_ad_price:
description: The minimum advertised price of the product. It supports the following formats, "19.99 USD", "19.99USD" and "19.99". If the currency is not included, we default to US dollars.
example: 19.99 USD
type: string
nullable: true
mobile_link:
description: The mobile-optimized version of your landing page. Must begin with http:// or https://.
example: https://m.example.com/cat/womens-clothing/denim-shirt-0294
type: string
nullable: true
mpn:
description: Manufacturer Part Number are alpha-numeric codes created by the manufacturer of a product to uniquely identify it among all products from the same manufacturer.
example: PI12345NTEREST
type: string
nullable: true
number_of_ratings:
description: The number of ratings for the item.
example: 10
type: integer
nullable: true
number_of_reviews:
description: The number of reviews available for the item.
example: 10
type: integer
nullable: true
pattern:
description: The description of the pattern used for the product.
example: plaid
type: string
nullable: true
price:
description: The price of the product. It supports the following formats, "24.99 USD", "24.99USD" and "24.99". If the currency is not included, we default to US dollars.
example: 24.99 USD
type: string
product_type:
description: '<p><= 1000 characters</p>
<p>The categorization of your product based on your custom product
taxonomy. Subcategories must be sent separated by > . The > must be
wrapped by spaces. We do not recognize any other delimiters such as comma
or pipe.</p>'
example: Clothing > Womens > Shirts > Denim
type: string
nullable: true
sale_price:
description: The discounted price of the product. The sale_price must be lower than the price. It supports the following formats, "14.99 USD", "14.99USD" and "14.99". If the currency is not included, we default to US dollars.
example: 14.99 USD
type: string
nullable: true
shipping:
description: Shipping consists of one group of up to four elements, country, region, service (all optional) and price (required). All colons, even for blank values, are required.
example: US:CA:Ground:0 USD
type: string
nullable: true
shipping_height:
description: The height of the package needed to ship the product. Ensure there is a space between the numeric string and the metric.
example: 12 in
type: string
nullable: true
shipping_weight:
description: The weight of the product. Ensure there is a space between the numeric string and the metric.
example: 3 kg
type: string
nullable: true
shipping_width:
description: The width of the package needed to ship the product. Ensure there is a space between the numeric string and the metric.
example: 16 in
type: string
nullable: true
size:
description: The size of the product.
example: M
type: string
nullable: true
size_system:
description: 'Indicates the countrys sizing system in which you are submitting your product. Must be one of the following values (upper or lowercased): US, UK, EU, DE , FR, JP, CN, IT, BR, MEX, or AU.'
example: US
type: string
nullable: true
size_type:
description: 'Additional description for the size. Must be one of the following values (upper or lowercased): regular, petite , plus, big_and_tall, or maternity.'
example: regular
type: string
nullable: true
tax:
description: Tax consists of one group of up to four elements, country, region, rate (all required) and tax_ship (optional). All colons, even for blank values, are required.
example: US:1025433:6.00:y
type: string
nullable: true
title:
description: '<p><= 500 characters</p>
<p>The name of the product.</p>'
example: Womens denim shirt, large
type: string
variant_names:
description: Options for this variant. People will see these options next to your Pin and can select the one they want. List them in the order you want them displayed.
example:
- Color
- Size
type: array
nullable: true
items:
type: string
variant_values:
description: Option values for this variant. People will see these options next to your Pin and can select the one they want. List them in the order you want them displayed. The order of the variant values must be consistent with the order of the variant names.
example:
- Red
- Small
type: array
nullable: true
items:
type: string
CatalogsRetailItemsBatch:
type: object
description: Object describing the catalogs retail items batch
properties:
batch_id:
description: Id of the catalogs items batch
example: 595953100599279259-66753b9bb65c46c49bd8503b27fecf9e
type: string
created_time:
description: 'Time of the batch creation: YYYY-MM-DD''T''hh:mm:ssTZD'
example: '2020-01-01T20:10:40-00:00'
type: string
format: date-time
readOnly: true
completed_time:
description: 'Time of the batch completion: YYYY-MM-DD''T''hh:mm:ssTZD'
example: '2022-03-10T15:37:10-00:00'
type: string
format: date-time
readOnly: true
nullable: true
status:
$ref: '#/components/schemas/BatchOperationStatus'
catalog_type:
$ref: '#/components/schemas/CatalogsType'
items:
description: Array with the catalogs items processing records part of the catalogs items batch
items:
$ref: '#/components/schemas/ItemProcessingRecord'
type: array
required:
- catalog_type
ItemUpdateBatchRecord:
type: object
description: Object describing an item batch record to update items
properties:
item_id:
description: The catalog item id in the merchant namespace
example: DS0294-M
type: string
attributes:
$ref: '#/components/schemas/UpdatableItemAttributes'
update_mask:
description: The list of product attributes to be updated. Attributes specified in the update mask without a value specified in the body will be deleted from the product item.
example:
- ad_link
- adult
- age_group
- availability
- average_review_rating
- brand
- checkout_enabled
- color
- condition
- custom_label_0
- custom_label_1
- custom_label_2
- custom_label_3
- custom_label_4
- description
- free_shipping_label
- free_shipping_limit
- gender
- google_product_category
- gtin
- item_group_id
- last_updated_time
- link
- material
- min_ad_price
- mpn
- number_of_ratings
- number_of_reviews
- pattern
- price
- product_type
- sale_price
- shipping
- shipping_height
- shipping_weight
- shipping_width
- size
- size_system
- size_type
- tax
- title
- variant_names
- variant_values
type: array
nullable: true
items:
$ref: '#/components/schemas/UpdateMaskFieldType'
BatchOperation:
description: The operation performed by the batch. The DELETE_DISCONTINUED operation only updates availablity to "Out of Stock".
example: UPDATE
type: string
enum:
- UPDATE
- UPSERT
- CREATE
- DELETE_DISCONTINUED
- DELETE
CatalogsUpsertCreativeAssetsItem:
type: object
description: A creative assets item to be upserted.
properties:
creative_assets_id:
description: The catalog creative assets id in the merchant namespace
example: DS0294-M
type: string
operation:
type: string
enum:
- UPSERT
attributes:
$ref: '#/components/schemas/CatalogsCreativeAssetsAttributes'
required:
- creative_assets_id
- operation
- attributes
ItemValidationEvent:
type: object
description: Object describing an item validation event
properties:
attribute:
description: The attribute that the item validation event references
example: title
type: string
code:
description: The event code that the item validation event references
example: 106
type: integer
message:
description: Title message describing the item validation event
example: Title is missing from product metadata.
type: string
HotelProcessingRecord:
type: object
description: Object describing an item processing record
properties:
hotel_id:
description: The catalog hotel id in the merchant namespace
example: DS0294-M
type: string
errors:
description: 'Array with the validation errors for the item processing record.
A non empty errors list causes the item processing to fail.'
items:
$ref: '#/components/schemas/ItemValidationEvent'
type: array
warnings:
description: Array with the validation warnings for the item processing record
items:
$ref: '#/components/schemas/ItemValidationEvent'
type: array
status:
$ref: '#/components/schemas/ItemProcessingStatus'
BatchOperationStatus:
description: The status of the operation performed by the batch
example: PROCESSING
type: string
enum:
- PROCESSING
- COMPLETED
- FAILED
CreativeAssetsProcessingRecord:
type: object
description: Object describing an item processing record
properties:
creative_assets_id:
description: The catalog creative assets id in the merchant namespace
example: DS0294-M
type: string
errors:
description: 'Array with the validation errors for the item processing record.
A non empty errors list causes the item processing to fail.'
items:
$ref: '#/components/schemas/ItemValidationEvent'
type: array
warnings:
description: Array with the validation warnings for the item processing record
items:
$ref: '#/components/schemas/ItemValidationEvent'
type: array
status:
$ref: '#/components/schemas/ItemProcessingStatus'
CatalogsHotelItemsBatch:
type: object
description: Object describing the catalogs hotel items batch
properties:
batch_id:
description: Id of the catalogs items batch
example: 595953100599279259-66753b9bb65c46c49bd8503b27fecf9e
type: string
created_time:
description: 'Time of the batch creation: YYYY-MM-DD''T''hh:mm:ssTZD'
example: '2020-01-01T20:10:40-00:00'
type: string
format: date-time
readOnly: true
completed_time:
description: 'Time of the batch completion: YYYY-MM-DD''T''hh:mm:ssTZD'
example: '2022-03-10T15:37:10-00:00'
type: string
format: date-time
readOnly: true
nullable: true
status:
$ref: '#/components/schemas/BatchOperationStatus'
catalog_type:
$ref: '#/components/schemas/CatalogsType'
items:
description: Array with the catalogs items processing records part of the catalogs items batch
items:
$ref: '#/components/schemas/HotelProcessingRecord'
type: array
required:
- catalog_type
ItemCreateBatchRecord:
type: object
description: Object describing an item batch record to create items
properties:
item_id:
description: The catalog item id in the merchant namespace
example: DS0294-M
type: string
attributes:
$ref: '#/components/schemas/ItemAttributesRequest'
ItemUpsertBatchRecord:
type: object
description: Object describing an item batch record to upsert items
properties:
item_id:
description: The catalog item id in the merchant namespace
example: DS0294-M
type: string
attributes:
$ref: '#/components/schemas/ItemAttributesRequest'
CatalogsCreativeAssetsBatchItem:
description: Creative assets batch item
type: object
anyOf:
- $ref: '#/components/schemas/CatalogsCreateCreativeAssetsItem'
- $ref: '#/components/schemas/CatalogsUpsertCreativeAssetsItem'
- $ref: '#/components/schemas/CatalogsUpdateCreativeAssetsItem'
- $ref: '#/components/schemas/CatalogsDeleteCreativeAssetsItem'
discriminator:
propertyName: operation
mapping:
CREATE: '#/components/schemas/CatalogsCreateCreativeAssetsItem'
UPSERT: '#/components/schemas/CatalogsUpsertCreativeAssetsItem'
UPDATE: '#/components/schemas/CatalogsUpdateCreativeAssetsItem'
DELETE: '#/components/schemas/CatalogsDeleteCreativeAssetsItem'
CatalogsItemsUpsertBatchRequest:
description: Request object to upsert catalogs items
type: object
properties:
country:
$ref: '#/components/schemas/Country'
language:
$ref: '#/components/schemas/Lan
# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pinterest/refs/heads/main/openapi/pinterest-batch-api-openapi.yml