Pinterest Batch API
The Batch API from Pinterest — 2 operation(s) for batch.
The Batch API from Pinterest — 2 operation(s) for batch.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/pinterest-batch-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
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:
CatalogsVerticalBatchRequest:
type: object
title: operate on item batch
description: A request object that can have multiple operations on a single batch
oneOf:
- $ref: '#/components/schemas/CatalogsRetailBatchRequest'
- $ref: '#/components/schemas/CatalogsHotelBatchRequest'
- $ref: '#/components/schemas/CatalogsCreativeAssetsBatchRequest'
discriminator:
propertyName: catalog_type
mapping:
RETAIL: '#/components/schemas/CatalogsRetailBatchRequest'
HOTEL: '#/components/schemas/CatalogsHotelBatchRequest'
CREATIVE_ASSETS: '#/components/schemas/CatalogsCreativeAssetsBatchRequest'
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
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
CatalogsUpdateCreativeAssetsItem:
type: object
description: A creative assets item to be updated.
properties:
creative_assets_id:
description: The catalog creative assets item id in the merchant namespace
example: DS0294-M
type: string
operation:
type: string
enum:
- UPDATE
attributes:
$ref: '#/components/schemas/CatalogsUpdatableCreativeAssetsAttributes'
required:
- creative_assets_id
- operation
- attributes
CatalogsHotelAttributes:
type: object
allOf:
- type: object
properties:
main_image:
type: object
description: The main hotel image
properties:
link:
type: string
description: '<p><= 2000 characters</p>
<p>The link to the main hotel image. Image should be at least
75x75 pixels to avoid errors. Use the additional_image_link field to add
more images of your hotel. The URL of your main_image.link must be accessible
by the Pinterest user-agent, and send the accurate image. Please make
sure there is no template or placeholder image at the link. Must start
with http:// or https://.</p>'
tag:
type:
- array
- 'null'
description: Tag appended to the image that identifies image category or details. There can be multiple tags associated with an image
items:
type: string
additional_image_link:
type:
- array
- 'null'
items:
type: string
description: '<p><= 2000 characters</p>
<p>The links to additional images for your hotel. Up to ten
additional images can be used to show a hotel from different angles.
Must begin with http:// or https://.</p>'
example:
- https://scene.example.com/image/image_v2.jpg
- https://scene.example.com/image/image_v3.jpg
- $ref: '#/components/schemas/CatalogsUpdatableHotelAttributes'
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
- 'null'
format: date-time
readOnly: 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
CatalogsDeleteRetailItem:
type: object
description: An item to be deleted
properties:
item_id:
description: The catalog item id in the merchant namespace
example: DS0294-M
type: string
operation:
type: string
enum:
- CREATE
- UPDATE
- UPSERT
- DELETE
required:
- item_id
- operation
CatalogsItemsUpsertBatchRequest:
description: Request object to upsert catalogs items
type: object
properties:
country:
$ref: '#/components/schemas/Country'
language:
$ref: '#/components/schemas/Language'
operation:
$ref: '#/components/schemas/BatchOperation'
items:
type: array
description: Array with catalogs items
items:
$ref: '#/components/schemas/ItemUpsertBatchRecord'
minItems: 1
maxItems: 1000
required:
- country
- language
- operation
- items
ItemAttributesRequest:
type: object
allOf:
- type: object
properties:
additional_image_link:
description: '<p><= 2000 characters</p>
<p>The links to additional images for your product. Up to ten
additional images can be used to show a product from different angles
or to show different stages. Must begin with http:// or https://.</p>'
example:
- https://scene.example.com/image/image_v2.jpg
- https://scene.example.com/image/image_v3.jpg
type:
- array
- 'null'
items:
type: string
image_link:
description: '<p><= 2000 characters</p>
<p>The links to the main product images. Images should be at least
75x75 pixels to avoid errors. Use the additional_image_link field to add
more images of your product. The URL of your image_link must be accessible
by the Pinterest user-agent, and send the accurate images. Please make
sure there are no template or placeholder images at the link. Must start
with http:// or https://.</p>'
example:
- https://scene.example.com/image/image.jpg
oneOf:
- description: The list of links to the main product images
type: array
minItems: 1
items:
type: string
- description: The main product image link.
type: string
- $ref: '#/components/schemas/UpdatableItemAttributes'
CatalogsCreateRetailItem:
type: object
description: An item to be created
properties:
item_id:
description: The catalog item id in the merchant namespace
example: DS0294-M
type: string
operation:
type: string
enum:
- CREATE
- UPDATE
- UPSERT
- DELETE
attributes:
$ref: '#/components/schemas/ItemAttributesRequest'
required:
- item_id
- operation
- attributes
ItemDeleteDiscontinuedBatchRecord:
type: object
description: Object describing an item batch record to discontinue items
properties:
item_id:
description: The catalog item id in the merchant namespace
example: DS0294-M
type: string
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
- 'null'
items:
$ref: '#/components/schemas/UpdateMaskFieldType'
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
CatalogsItemsDeleteBatchRequest:
description: Request object to delete catalogs items
type: object
additionalProperties: false
properties:
country:
$ref: '#/components/schemas/Country'
language:
$ref: '#/components/schemas/Language'
operation:
$ref: '#/components/schemas/BatchOperation'
items:
type: array
description: Array with catalogs items
items:
$ref: '#/components/schemas/ItemDeleteBatchRecord'
required:
- country
- language
- operation
- items
CatalogsItemsUpdateBatchRequest:
description: Request object to update catalogs items
type: object
additionalProperties: false
properties:
country:
$ref: '#/components/schemas/Country'
language:
$ref: '#/components/schemas/Language'
operation:
$ref: '#/components/schemas/BatchOperation'
items:
type: array
description: Array with catalogs items
items:
$ref: '#/components/schemas/ItemUpdateBatchRecord'
minItems: 1
maxItems: 1000
required:
- country
- language
- operation
- items
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
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'
CatalogsItemsDeleteDiscontinuedBatchRequest:
description: Request object to discontinue catalogs items
type: object
additionalProperties: false
properties:
country:
$ref: '#/components/schemas/Country'
language:
$ref: '#/components/schemas/Language'
operation:
$ref: '#/components/schemas/BatchOperation'
items:
type: array
description: Array with catalogs items
items:
$ref: '#/components/schemas/ItemDeleteDiscontinuedBatchRecord'
required:
- country
- language
- operation
- items
CatalogsCreativeAssetsBatchRequest:
description: Request object to update catalogs creative assets items
type: object
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 creative assets item operations
items:
$ref: '#/components/schemas/CatalogsCreativeAssetsBatchItem'
catalog_id:
description: Catalog id pertaining to the creative assets item. If not provided, default to oldest creative assets catalog
example: '2680059592705'
type: string
pattern: ^\d+$
required:
- catalog_type
- country
- language
- items
CatalogsUpsertRetailItem:
type: object
description: An item to be upserted
properties:
item_id:
description: The catalog item id in the merchant namespace
example: DS0294-M
type: string
operation:
type: string
enum:
- CREATE
- UPDATE
- UPSERT
- DELETE
attributes:
$ref: '#/components/schemas/ItemAttributesRequest'
required:
- item_id
- operation
- attributes
CatalogsUpsertHotelItem:
type: object
description: A hotel item to be upserted.
properties:
hotel_id:
description: The catalog hotel id in the merchant namespace
example: DS0294-M
type: string
operation:
type: string
enum:
- UPSERT
attributes:
$ref: '#/components/schemas/CatalogsHotelAttributes'
required:
- hotel_id
- operation
- attributes
ItemDeleteBatchRecord:
type: object
description: Object describing an item batch record to delete items
properties:
item_id:
description: The catalog item id in the merchant namespace
example: DS0294-M
type: string
CatalogsUpdatableHotelAttributes:
type: object
properties:
name:
description: The hotel's name.
type:
- string
- 'null'
link:
description: Link to the product page
type:
- string
- 'null'
description:
description: Brief description of the hotel.
type:
- string
- 'null'
brand:
description: The brand to which this hotel belongs to.
type:
- string
- 'null'
latitude:
description: Latitude of the hotel.
type: number
longitude:
description: Longitude of the hotel.
type:
- number
- 'null'
neighborhood:
description: A list of neighborhoods where the hotel is located
type:
- array
- 'null'
items:
type: string
address:
description: Hotel address
$ref: '#/components/schemas/CatalogsHotelAddress'
custom_label_0:
description: Custom grouping of hotels
type:
- string
- 'null'
custom_label_1:
description: Custom grouping of hotels
type:
- string
- 'null'
custom_label_2:
description: Custom grouping of hotels
type:
- string
- 'null'
custom_label_3:
description: Custom grouping of hotels
type:
- string
- 'null'
custom_label_4:
description: Custom grouping of hotels
type:
- string
- 'null'
category:
description: The type of property. The category can be any type of internal description desired.
type:
- string
- 'null'
base_price:
description: Base price of the hotel room per night followed by the ISO currency code
type:
- string
- 'null'
example: 100 USD
sale_price:
description: Sale price of a hotel room per night. Used to advertise discounts off the regular price of the hotel.
type:
- string
- 'null'
example: 90 USD
guest_ratings:
description: If specified, you must provide all properties
$ref: '#/components/schemas/CatalogsHotelGuestRatings'
CatalogsHotelBatchRequest:
description: Request object to update catalogs hotel items
type: object
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:
$ref: '#/components/schemas/CatalogsHotelBatchItem'
catalog_id:
description: Catalog id pertaining to the hotel item. If not provided, default to oldest hotel catalog
example: '2680059592705'
type: string
pattern: ^\d+$
required:
- catalog_type
- country
- language
- items
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'
ItemProcessingStatus:
description: The status of the item processing record
example: SUCCESS
type: string
enum:
- SUCCESS
- FAILURE
- PROCESSING
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
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
brand:
description: The brand of the product.
example: Josies Denim
type:
- string
- 'null'
checkout_enabled:
description: This attribute is not supported anymore.
example: false
type:
- boolean
- 'null'
deprecated: true
color:
description: The primary color of the product.
example: blue
type:
- string
- 'null'
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
- 'null'
custom_label_0:
description: '<p><= 1000 characters</p>
<p>Custom grouping of products.</p>'
example: Best sellers
type:
- string
- 'null'
custom_label_1:
description: '<p><= 1000 characters</p>
<p>Custom grouping of products.</p>'
example: Summer promotion
type:
- string
- 'null'
custom_label_2:
description: '<p><= 1000 characters</p>
<p>Custom grouping of products.</p>'
example: Winter sales
type:
- string
- 'null'
custom_label_3:
description: '<p><= 1000 characters</p>
<p>Custom grouping of products.</p>'
example: Woman dress
type:
- string
- 'null'
custom_label_4:
description: '<p><= 1000 characters</p>
<p>Custom grouping of products.</p>'
example: Man hat
type:
- string
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
gtin:
description: The unique universal product identifier.
example: 3234567890126
type:
- integer
- 'null'
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
- 'null'
last_updated_time:
description: The millisecond timestamp when the item was lastly modified by the merchant.
example: 1641483432072
type:
- integer
- 'null'
format: int64
link:
description: '<p><= 511 character
# --- truncated at 32 KB (62 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pinterest/refs/heads/main/openapi/pinterest-batch-api-openapi.yml