openapi: 3.0.3 info: version: 5.13.0 title: Pinterest Partners 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: Partners paths: /businesses/{business_id}/assets/{asset_id}/partners: get: summary: Get partners with access to asset description: 'Get all the partners the requesting business has granted access to on the given asset. Note: If the asset has been shared with you, an empty array will be returned. This is because an asset shared with you cannot be shared with a different partner.' operationId: business_asset_partners/get security: - pinterest_oauth2: - biz_access:read x-ratelimit-category: ads_read x-sandbox: disabled parameters: - $ref: '#/components/parameters/path_business_user' - $ref: '#/components/parameters/path_asset_id' - $ref: '#/components/parameters/query_business_access_start_index' - $ref: '#/components/parameters/query_bookmark' - $ref: '#/components/parameters/query_page_size' responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/Paginated' - type: object properties: items: type: array description: List of partners with permissions to the asset. items: $ref: '#/components/schemas/UserSingleAssetBinding' description: Sucess default: content: application/json: schema: $ref: '#/components/schemas/Error' description: Unexpected error tags: - Partners /businesses/{business_id}/partners/assets: patch: summary: Assign/Update partner asset permissions description: 'Grant multiple partners access to assets and/or update multiple partner''s exisiting permissions to an asset. If your partner already had permissions on the asset, they will be overriden with the new permissions you assign to them. To learn more about permission levels, visit https://help.pinterest.com/en/business/article/business-manager-overview Note: Not all listed permissions are applicable to each asset type. For example, PROFILE_PUBLISHER would not be applicable to an asset of type AD_ACCOUNT. The permission level PROFILE_PUBLISHER is only available to an asset of the type PROFILE.' operationId: update_partner_asset_access_handler_impl security: - pinterest_oauth2: - biz_access:write x-ratelimit-category: ads_write x-sandbox: disabled parameters: - $ref: '#/components/parameters/path_business_user' requestBody: description: A list of assets and permissions to assign to your partners. required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePartnerAssetAccessBody' responses: '200': content: application/json: schema: $ref: '#/components/schemas/UpdatePartnerAssetsResultsResponseArray' description: Success default: content: application/json: schema: $ref: '#/components/schemas/Error' description: Unexpected error tags: - Partners delete: summary: Delete partner access to asset description: 'Terminate multiple partners'' access to an asset. If - partner_type=INTERNAL: You will terminate a partner''s asset access to your business assets. - partner_type=EXTERNAL: You will terminate your own access to your partner''s business assets.' operationId: delete_partner_asset_access_handler_impl security: - pinterest_oauth2: - biz_access:write x-ratelimit-category: ads_write x-sandbox: disabled parameters: - $ref: '#/components/parameters/path_business_user' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DeletePartnerAssetAccessBody' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DeletePartnerAssetsResultsResponseArray' description: Success default: content: application/json: schema: $ref: '#/components/schemas/Error' description: Unexpected error tags: - Partners /businesses/{business_id}/partners/{partner_id}/assets: get: summary: Get assets assigned to a partner or assets assigned by a partner description: 'Can be used to get the business assets your partner has granted you access to or the business assets you have granted your partner access to. If you specify: - partner_type=INTERNAL, you will retrieve your business assets that the partner has access to. - partner_type=EXTERNAL, you will retrieve the partner''s business assets that the partner has granted you access to.' operationId: business_partner_asset_access/get security: - pinterest_oauth2: - biz_access:read x-ratelimit-category: ads_read x-sandbox: disabled parameters: - $ref: '#/components/parameters/path_business_user' - $ref: '#/components/parameters/path_business_partner_user' - name: partner_type in: query description: 'Specifies whether to fetch internal or external (shared) partners. If partner_type=INTERNAL, the asset being queried is for accesses the partner has to your business assets.
If partner_type=EXTERNAL, the asset being queried is for the accesses you have to the partner''s business asset.' example: INTERNAL required: false schema: allOf: - $ref: '#/components/schemas/PartnerType' - default: INTERNAL - $ref: '#/components/parameters/query_resource_type' - $ref: '#/components/parameters/query_business_access_start_index' - $ref: '#/components/parameters/query_page_size' - $ref: '#/components/parameters/query_bookmark' responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/Paginated' - type: object properties: items: type: array description: List assets on which you granted access to your partner or assets on which your partner has granted you access. items: $ref: '#/components/schemas/GetPartnerAssetsResponse' description: Success default: content: application/json: schema: $ref: '#/components/schemas/Error' description: Unexpected error tags: - Partners /businesses/{business_id}/partners: get: summary: Get business partners description: "Get all partners of the specified business.\n\nIf the assets_summary=TRUE and:\n- partner_type=INTERNAL, the business assets returned are your business assets the partner has access to.\n- partner_type=EXTERNAL, the business assets returned are your partner's business assets the partner has granted you\n access to." operationId: get/business_partners security: - pinterest_oauth2: - biz_access:read x-ratelimit-category: ads_read x-sandbox: disabled parameters: - $ref: '#/components/parameters/path_business_user' - $ref: '#/components/parameters/query_assets_summary' - $ref: '#/components/parameters/query_business_partner_type' - name: partner_ids in: query description: A list of business partner ids separated by commas used to filter the results. Only partners with the specified ids will be returned. example: 00101010101,2222220101 required: false schema: type: string maxLength: 500 - $ref: '#/components/parameters/query_business_access_start_index' - $ref: '#/components/parameters/query_page_size' - $ref: '#/components/parameters/query_bookmark' responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/Paginated' - type: object properties: items: type: array description: List of business partners. items: $ref: '#/components/schemas/UserBusinessRoleBinding' description: Success default: content: application/json: schema: $ref: '#/components/schemas/Error' description: Unexpected error tags: - Partners delete: summary: Terminate business partnerships description: 'Terminate partnerships between the specified partners and your business. Note: You may only batch terminate partners of the same partner type.' operationId: delete_business_partners security: - pinterest_oauth2: - biz_access:write x-ratelimit-category: ads_write x-sandbox: disabled parameters: - $ref: '#/components/parameters/path_business_user' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DeletePartnersRequest' description: 'An object containing a "partner_ids" property composed of a list of partner IDs and a "partners_type" property specifying the type of partners to delete. ' responses: '200': content: application/json: schema: $ref: '#/components/schemas/DeletePartnersResponse' description: Success '404': content: application/json: schema: $ref: '#/components/schemas/Error' description: A supplied partner id doesn't exist default: content: application/json: schema: $ref: '#/components/schemas/Error' description: Unexpected error tags: - Partners /search/partner/pins: get: summary: Search pins by a given search term description: 'This endpoint is currently in beta and not available to all apps. Learn more. Get the top 10 Pins by a given search term.' operationId: search_partner_pins security: - pinterest_oauth2: - boards:read - pins:read x-ratelimit-category: org_read x-sandbox: disabled x-codeSamples: - lang: cURL label: curl source: 'curl --location --request GET ''https://api.pinterest.com/v5/search/partner/pins'' \ --header ''Authorization: Bearer '' \ --header ''Content-Type: application/json'' ' parameters: - description: Search term to look up pins. in: query name: term required: true schema: type: string - $ref: '#/components/parameters/query_country_code' - $ref: '#/components/parameters/query_bookmark' - description: Search locale. in: query name: locale required: false schema: type: string - $ref: '#/components/parameters/result_limit' responses: '200': content: application/json: schema: allOf: - $ref: '#/components/schemas/Paginated' - type: object properties: items: type: array items: $ref: '#/components/schemas/SummaryPin' description: Success '400': description: Invalid pins content: application/json: schema: $ref: '#/components/schemas/Error' example: code: 400 message: Invalid pin filter value default: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' tags: - Partners components: schemas: BusinessMemberAssetsSummary: type: object description: Ad accounts and profiles the business member/partner has access to. nullable: true properties: ad_accounts: type: array description: List of ad account IDs and respective permission levels. items: type: object properties: id: type: string description: Unique identifier of a business ad account. example: '549755885175' pattern: ^\d+$ minLength: 1 maxLength: 20 permissions: $ref: '#/components/schemas/PermissionsResponse' profiles: type: array description: List of profile IDs and respective permission levels. items: type: object properties: id: type: string description: Unique identifier of a business profile. example: '383791336903426391' pattern: ^\d+$ minLength: 1 maxLength: 20 permissions: $ref: '#/components/schemas/PermissionsResponse' SummaryPin: description: Summarized pin information title: SummaryPin type: object properties: media: allOf: - $ref: '#/components/schemas/PinMedia' type: object readOnly: true alt_text: type: string nullable: true maxLength: 500 link: type: string nullable: true example: https://www.pinterest.com/ maxLength: 2048 title: type: string nullable: true description: type: string nullable: true UpdatePartnerAssetsResult: type: object description: An object containing the permissions a business partner has on the asset. properties: asset_id: description: Unique identifier of a business asset. example: '549755885175' pattern: ^\d+$ type: string asset_type: $ref: '#/components/schemas/AssetTypeResponse' partner_id: description: Unique identifier of a business partner. example: '140943737684417' pattern: ^\d+$ type: string permissions: $ref: '#/components/schemas/PermissionsResponse' Error: title: Error type: object properties: code: type: integer message: type: string required: - code - message DeletePartnersRequest: properties: partner_ids: items: description: A list of partner ids to be deleted example: '1234567890123' maxLength: 22 pattern: ^\d+$ type: string minItems: 1 maxItems: 50 type: array partner_type: allOf: - description: 'If partner_type=INTERNAL, the deleted relationship is the partnership relationship a partner has with you If partner_type=EXTERNAL, the deleted relationship is the partnership relationship you have with a partner' nullable: true type: string example: INTERNAL - $ref: '#/components/schemas/BusinessRoleCheckMode' nullable: true type: string required: - partner_ids type: object UserBusinessRoleBinding: type: object properties: assets_summary: type: object nullable: true allOf: - $ref: '#/components/schemas/BusinessMemberAssetsSummary' business_roles: description: The access level a user has on the business. This can be EMPLOYEE, BIZ_ADMIN, or PARTNER. type: array example: - BIZ_ADMIN items: $ref: '#/components/schemas/BusinessRoleResponse' created_by_business: type: object nullable: true description: Metadata for the business that created the business relationship. allOf: - $ref: '#/components/schemas/BusinessAccessUserSummary' created_by_user: type: object nullable: true description: Metadata for the user that created the business relationship. allOf: - $ref: '#/components/schemas/BusinessAccessUserSummary' created_time: type: integer nullable: true description: The time the business relationship was created. Returned in milliseconds. example: 1646767577816 id: type: string description: Unique identifier of the business member/business partner/employer. example: '383791336903426391' pattern: ^\d+$ is_shared_partner: type: boolean description: 'This field is only relevant when business_role="PARTNER".
If is_shared_partner=FALSE, the partner can access your business assets. If assets_summary is not empty, the assets listed are your business assets the partner has access to.
If is_shared_partner=TRUE, you can access the partner''s business asset. If assets_summary is not empty, the assets listed are the partner''s business assets you have access to.' example: false user: type: object nullable: true description: Metadata for the business member/business partner/employer. allOf: - $ref: '#/components/schemas/BusinessAccessUserSummary' BusinessAccessUserSummary: type: object description: Metadata of the member/partner that has access to the asset. properties: email: description: Email of the business member/partner. example: business0101@business.com type: string nullable: true id: description: Unique identifier of the business member/partner. example: '383791336903426391' type: string nullable: true minLength: 1 maxLength: 20 username: description: Username of the business member/partner. example: business0101 nullable: true type: string Paginated: type: object properties: items: type: array items: type: object bookmark: type: string nullable: true required: - items UpdatePartnerAssetsResultsResponseArray: type: object properties: items: type: array description: List of assigned/updated partner asset access. items: type: object $ref: '#/components/schemas/UpdatePartnerAssetsResult' DeletePartnerAssetsResult: type: object description: The terminated asset access. properties: asset_id: description: Unique identifier of a business asset. example: '549755885175' pattern: ^\d+$ type: string asset_type: $ref: '#/components/schemas/AssetTypeResponse' permissions: $ref: '#/components/schemas/PermissionsResponse' is_shared_partner: type: boolean description: If is_shared_partner=FALSE, you terminated a partner's asset access to your business asset.
If is_shared_partner=TRUE, you terminated your asset access to your partner's business asset. example: false partner_id: description: Unique identifier of a business partner. example: '140943737684417' pattern: ^\d+$ type: string UserSingleAssetBinding: type: object description: An object containing the permissions a business member/partner has on the asset. properties: permissions: $ref: '#/components/schemas/PermissionsResponse' user: $ref: '#/components/schemas/BusinessAccessUserSummary' GetPartnerAssetsResponse: type: object description: An object containing the permissions a you/your business partner has on the asset. properties: asset_id: description: Unique identifier of a business asset. example: '549755885175' pattern: ^\d+$ type: string maxLength: 20 minLength: 1 asset_type: $ref: '#/components/schemas/AssetTypeResponse' permissions: type: array description: The permissions you or your partner has on the asset. If partner_type=INTERNAL, the permission levels are for the access the partner has to your business asset.
If partner_type=EXTERNAL, the permission levels are for the access you have to the partner's business asset. example: - FINANCE_MANAGER - CATALOGS_MANAGER - AUDIENCE_MANAGER items: description: The permission level a user has on an asset. example: FINANCE_MANAGER type: string DeletePartnerAssetsResultsResponseArray: type: object properties: items: type: array description: List of terminated asset access. items: type: object $ref: '#/components/schemas/DeletePartnerAssetsResult' PermissionsResponse: type: array description: Permission levels member or partner has on an asset. example: - FINANCE_MANAGER - CATALOGS_MANAGER - AUDIENCE_MANAGER items: type: string BusinessRoleResponse: type: string description: 'The access level a member/partner has to the business. Values are case-sensitive.
- EMPLOYEE: Can only view and access assets you assign to them. They cannot see details about other employees, partners, or other assets.
- BIZ_ADMIN: Have full control of roles and can add employees or external partners as well as grant asset access.
- PARTNER: Can only view and access assets you assign them to/or they assign to you.' example: BIZ_ADMIN DeletePartnersResponse: type: object description: An object with a list of partners that were deleted. properties: deleted_partners: type: array description: List of partners whose business partnership have been terminated. example: - '809944451643622187' - '383791336903426391' items: type: string pattern: ^\d+$ example: '809944451643622187' PartnerType: enum: - INTERNAL - EXTERNAL example: INTERNAL type: string DeletePartnerAssetAccessBody: type: object required: - accesses properties: accesses: type: array minItems: 1 maxItems: 50 items: type: object properties: partner_id: type: string description: Unique identifier of a business partner to update asset access to. example: '1234567890123' maxLength: 25 pattern: ^\d+$ asset_id: type: string description: Unique identifier of the business asset. example: '549755885175' maxLength: 25 pattern: ^\d+$ partner_type: enum: - INTERNAL - EXTERNAL example: INTERNAL description: 'If partner_type=INTERNAL, the deleted asset access is for the access the partner has to your business asset.
If partner_type=EXTERNAL, the deleted asset access is for the access you have to the partner''s business asset.' default: INTERNAL type: string required: - partner_id - asset_id Permissions: type: string enum: - ADMIN - ANALYST - FINANCE_MANAGER - AUDIENCE_MANAGER - CAMPAIGN_MANAGER - CATALOGS_MANAGER - PROFILE_PUBLISHER UpdatePartnerAssetAccessBody: type: object required: - accesses properties: accesses: type: array minItems: 1 maxItems: 50 items: type: object required: - partner_id - asset_id - permissions properties: partner_id: type: string description: Unique identifier of a business partner to update asset access to. example: '1234567890123' maxLength: 25 pattern: ^\d+$ asset_id: type: string description: Unique identifier of the business asset. example: '549755885175' maxLength: 25 pattern: ^\d+$ permissions: type: array description: A non-empty array of permissions to assign to the partner. example: - ANALYST - ADMIN minItems: 1 maxItems: 50 items: $ref: '#/components/schemas/Permissions' 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 AssetTypeResponse: description: Type of asset. Currently we only support AD_ACCOUNT and PROFILE. example: AD_ACCOUNT type: string BusinessRoleCheckMode: description: Specifies if the partner is internal or external. enum: - INTERNAL - EXTERNAL example: INTERNAL type: string parameters: query_country_code: name: country_code description: Two letter country code (ISO 3166-1 alpha-2) in: query example: US required: true explode: true schema: type: string style: form query_resource_type: name: asset_type in: query required: false description: A resource type to filter the assets by. Only assets of the specified type will be returned. schema: type: string enum: - AD_ACCOUNT - PROFILE default: AD_ACCOUNT example: AD_ACCOUNT query_assets_summary: name: assets_summary description: 'Include assets summary in the response if this is true. The assets summary returns a dictionary representing a summary of the assets for the business user ID, with information like the ad accounts and profiles the user has permissions for and what those permissions are' in: query required: false schema: type: boolean default: false query_page_size: name: page_size description: Maximum number of items to include in a single page of the response. See documentation on Pagination for more information. in: query required: false schema: type: integer minimum: 1 maximum: 250 default: 25 query_bookmark: name: bookmark description: Cursor used to fetch the next page of items in: query required: false schema: type: string path_business_user: name: business_id in: path description: Unique identifier of the requesting business. example: '729090764583391194' required: true schema: type: string pattern: ^\d+$ minLength: 1 maxLength: 20 result_limit: description: Max search result size in: query name: limit example: 4 required: false schema: type: integer minimum: 1 maximum: 50 default: 10 path_asset_id: name: asset_id in: path description: Unique identifier of a business asset. example: '729090764583391194' required: true schema: type: string pattern: ^\d+$ minLength: 1 maxLength: 20 query_business_partner_type: name: partner_type in: query description: 'Specifies whether to fetch internal or external (shared) partners. If partner_type=INTERNAL, the asset being queried is for accesses the partner has to your business assets.
If partner_type=EXTERNAL, the asset being queried is for the accesses you have to the partner''s business asset.' example: INTERNAL required: false schema: $ref: '#/components/schemas/PartnerType' path_business_partner_user: name: partner_id in: path description: The partner id to be bound to the Business example: '729090764583391194' required: true schema: type: string pattern: ^\d+$ minLength: 1 maxLength: 20 query_business_access_start_index: name: start_index in: query description: An index to start fetching the results from. Only the results starting from this index will be returned. example: 0 required: false schema: type: integer minimum: 0 default: 0 securitySchemes: pinterest_oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://www.pinterest.com/oauth/ tokenUrl: https://api.pinterest.com/v5/oauth/token scopes: ads:read: See all of your advertising data, including ads, ad groups, campaigns etc. ads:write: Create, update, or delete ads, ad groups, campaigns etc. billing:read: See all of your billing data, billing profile, etc. billing:write: Create, update, or delete billing data, billing profiles, etc. biz_access:read: See business access data biz_access:write: Create, update, or delete business access data boards:read: See your public boards, including group boards you join boards:read_secret: See your secret boards boards:write: Create, update, or delete your public boards boards:write_secret: Create, update, or delete your secret boards catalogs:read: See all of your catalogs data catalogs:write: Create, update, or delete your catalogs data pins:read: See your public Pins pins:read_secret: See your secret Pins pins:write: Create, update, or delete your public Pins pins:write_secret: Create, update, or delete your secret Pins user_accounts:read: See your user accounts and followers user_accounts:write: Update your user accounts and followers conversion_token: type: http scheme: bearer description: This security scheme only applies to the conversion events endpoint (POST /ad_accounts/{ad_account_id}/events). This endpoint requires a bearer token generated via Ads Manager (ads.pinterest.com). basic: type: http scheme: basic x-tagGroups: - name: Pin and Boards tags: - pins - boards - media - aggregated_comments - aggregated_pin_data - user_account - name: Campaign Management tags: - ad_accounts - campaigns - ad_groups - ads - product_group_promotions - bulk - name: Targeting tags: - audiences - customer_lists - keywords - targeting_template - audience_insights - audience_sharing - name: Ad Formats tags: - lead_forms - lead_ads - leads_export - name: Billing tags: - billing - order_lines - terms_of_service - name: Business Access tags: - business_access_assets - business_access_invite - business_access_relationships - name: Conversions tags: - conversion_events - conversion_tags - name: Others tags: - integrations - oauth - resources - search - terms - name: Shopping tags: - catalogs - name: Deprecated tags: - product_groups