Pinterest Items API
The Items API from Pinterest — 3 operation(s) for items.
The Items API from Pinterest — 3 operation(s) for items.
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-items-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 Items 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: Items
paths:
/catalogs/items:
get:
summary: Get catalogs items
description: 'Get the items of the catalog 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/get
security:
- pinterest_oauth2:
- catalogs:read
x-ratelimit-category: catalogs_read
x-sandbox: enabled
parameters:
- $ref: '#/components/parameters/query_ad_account_id'
- $ref: '#/components/parameters/query_catalogs_items_country'
- $ref: '#/components/parameters/query_catalogs_items_language'
- $ref: '#/components/parameters/query_catalogs_items'
- $ref: '#/components/parameters/query_catalogs_items_filters'
responses:
'200':
description: Response containing the requested catalogs items
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogsItems'
'400':
description: Invalid request parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
InvalidRequest:
value:
code: 1
message: Parameter 'item_ids' is required.
'401':
description: Not authorized to access catalogs items
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
UnauthorizedAccess:
value:
code: 2
message: Authentication failed.
'403':
description: Not authorized to access catalogs items
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Items
post:
summary: Get catalogs items (POST)
description: 'Get the items of the catalog 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/post
security:
- pinterest_oauth2:
- catalogs:read
x-ratelimit-category: catalogs_read
x-sandbox: enabled
parameters:
- $ref: '#/components/parameters/query_ad_account_id'
requestBody:
description: Request object used to get catalogs items
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogsItemsRequest'
responses:
'200':
description: Response containing the requested catalogs items
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogsItems'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
InvalidRequest:
value:
code: 1
message: 'Invalid request: {''country'': ''US'', ''language'': ''EN'', ''filters'': {''catalog_type'': ''RETAIL'', ''item_ids'': ''test0''}} (''test0'' is not of type array)'
'401':
description: Not authorized to access catalogs items
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
UnauthorizedAccess:
value:
code: 2
message: Authentication failed.
'403':
description: Not authorized to access catalogs items
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Items
/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:
- Items
/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:
- Items
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
PinMedia:
title: Pin media
type: object
description: Pin media objects.
discriminator:
propertyName: media_type
mapping:
image: '#/components/schemas/PinMediaWithImage'
video: '#/components/schemas/PinMediaWithVideo'
multiple_images: '#/components/schemas/PinMediaWithImages'
multiple_videos: '#/components/schemas/PinMediaWithVideos'
multiple_mixed: '#/components/schemas/PinMediaWithImageAndVideo'
properties:
media_type:
type: string
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
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
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'
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
PinMediaSourceImageBase64:
title: Image Base64
description: Base64-encoded image media source
type: object
properties:
source_type:
type: string
enum:
- image_base64
content_type:
type: string
enum:
- image/jpeg
- image/png
data:
type: string
pattern: '[a-zA-Z0-9+\/=]+'
is_standard:
type: boolean
description: Set the parameter to false to create the new simplified Pin instead of the standard pin. Currently the field is only available to a list of beta users.
default: true
required:
- source_type
- content_type
- data
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'
CatalogsRetailItemsFilter:
type: object
properties:
catalog_type:
type: string
enum:
- RETAIL
item_ids:
type: array
minItems: 1
maxItems: 100
items:
type: string
catalog_id:
type: string
pattern: ^\d+$
description: Catalog id pertaining to the retail item. If not provided, default to oldest retail catalog
required:
- catalog_type
- item_ids
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 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
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
number_of_ratings:
description: The number of ratings for the item.
example: 10
type:
- integer
- 'null'
number_of_reviews:
description: The number of reviews available for the item.
example: 10
type:
- integer
- 'null'
pattern:
description: The description of the pattern used for the product.
example: plaid
type:
- string
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
size:
description: The size of the product.
example: M
type:
- string
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
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
- 'null'
items:
type: string
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:
# --- truncated at 32 KB (90 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/pinterest/refs/heads/main/openapi/pinterest-items-api-openapi.yml