pinterest-api

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Pinterest API Skill

Pinterest API 开发技能

Comprehensive assistance with Pinterest API v5 development, including OAuth authentication, pin/board management, analytics, and API integration patterns.
为Pinterest API v5开发提供全面支持,包括OAuth认证、Pin/Board管理、分析功能以及API集成模式。

When to Use This Skill

何时使用本技能

This skill should be triggered when:
  • Implementing Pinterest OAuth 2.0 authentication flows
  • Creating, updating, or managing Pins and Boards via API
  • Integrating Pinterest analytics and metrics into applications
  • Building Pinterest API clients or SDKs
  • Working with Pinterest user account data
  • Debugging Pinterest API requests or responses
  • Implementing Pinterest sharing features in web/mobile apps
  • Setting up Pinterest business account integrations
  • Working with Pinterest ad account APIs
在以下场景可使用本技能:
  • 实现Pinterest OAuth 2.0认证流程
  • 通过API创建、更新或管理Pin和Board
  • 在应用中集成Pinterest分析指标
  • 构建Pinterest API客户端或SDK
  • 处理Pinterest用户账户数据
  • 调试Pinterest API请求或响应
  • 在Web/移动应用中实现Pinterest分享功能
  • 搭建Pinterest商业账户集成
  • 使用Pinterest广告账户API

Key Concepts

核心概念

Pinterest API v5 Overview

Pinterest API v5 概述

  • Base URL:
    https://api.pinterest.com/v5/
  • Authentication: OAuth 2.0 with access tokens
  • Rate Limiting: Token-based rate limits (varies by endpoint)
  • Response Format: JSON
  • Required Headers:
    Authorization: Bearer {access_token}
  • 基础URL
    https://api.pinterest.com/v5/
  • 认证方式:基于访问令牌的OAuth 2.0
  • 速率限制:基于令牌的请求限制(各端点限制不同)
  • 响应格式:JSON
  • 必填请求头
    Authorization: Bearer {access_token}

Core Resources

核心资源

  • Pins: Individual pieces of content (images, videos) saved to Pinterest
  • Boards: Collections that organize Pins by theme or topic
  • Sections: Subsections within Boards for additional organization
  • User Account: Pinterest user profile and account information
  • Ad Accounts: Business accounts for advertising functionality
  • Pin:保存到Pinterest的单个内容(图片、视频)
  • Board:按主题分类的Pin集合
  • Section:Board内的子分类,用于更细致的内容组织
  • 用户账户:Pinterest用户的个人资料及账户信息
  • 广告账户:用于广告功能的商业账户

Access Levels

访问权限等级

  • Public Access: Read-only access to public data
  • User Authorization: Full access to user's Pins, Boards, and account
  • Business Access: Additional analytics and ad account management (requires appropriate roles)
  • 公开访问:对公开数据的只读权限
  • 用户授权:对用户的Pin、Board及账户的完全访问权限
  • 商业访问:额外的分析和广告账户管理权限(需对应角色)

Quick Reference

快速参考

OAuth 2.0 Authentication Flow

OAuth 2.0 认证流程

Step 1: Generate Authorization URL

步骤1:生成授权URL

javascript
// Redirect user to Pinterest authorization page
const authUrl = `https://www.pinterest.com/oauth/?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=boards:read,pins:read,user_accounts:read`;

window.location.href = authUrl;
javascript
// Redirect user to Pinterest authorization page
const authUrl = `https://www.pinterest.com/oauth/?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=boards:read,pins:read,user_accounts:read`;

window.location.href = authUrl;

Step 2: Exchange Code for Access Token

步骤2:用授权码交换访问令牌

bash
undefined
bash
undefined

After user authorizes, exchange authorization code for access token

After user authorizes, exchange authorization code for access token

curl -X POST https://api.pinterest.com/v5/oauth/token
--header "Authorization: Basic {BASE64_ENCODED_CLIENT_CREDENTIALS}"
--header "Content-Type: application/x-www-form-urlencoded"
--data-urlencode "grant_type=authorization_code"
--data-urlencode "code={AUTHORIZATION_CODE}"
--data-urlencode "redirect_uri={REDIRECT_URI}"

**Base64 Encoding Client Credentials:**
```bash
curl -X POST https://api.pinterest.com/v5/oauth/token
--header "Authorization: Basic {BASE64_ENCODED_CLIENT_CREDENTIALS}"
--header "Content-Type: application/x-www-form-urlencoded"
--data-urlencode "grant_type=authorization_code"
--data-urlencode "code={AUTHORIZATION_CODE}"
--data-urlencode "redirect_uri={REDIRECT_URI}"

**Base64编码客户端凭证:**
```bash

Encode client_id:client_secret

Encode client_id:client_secret

echo -n "your_client_id:your_client_secret" | base64

**Response:**
```json
{
  "access_token": "pina_ABC123...",
  "token_type": "bearer",
  "expires_in": 2592000,
  "refresh_token": "DEF456...",
  "scope": "boards:read,pins:read,user_accounts:read"
}
echo -n "your_client_id:your_client_secret" | base64

**响应示例:**
```json
{
  "access_token": "pina_ABC123...",
  "token_type": "bearer",
  "expires_in": 2592000,
  "refresh_token": "DEF456...",
  "scope": "boards:read,pins:read,user_accounts:read"
}

Pin Management

Pin 管理

Create a Pin

创建Pin

bash
curl -X POST https://api.pinterest.com/v5/pins \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "link": "https://example.com/my-article",
    "title": "My Amazing Pin Title",
    "description": "Detailed description of the pin content",
    "board_id": "123456789",
    "media_source": {
      "source_type": "image_url",
      "url": "https://example.com/image.jpg"
    }
  }'
bash
curl -X POST https://api.pinterest.com/v5/pins \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "link": "https://example.com/my-article",
    "title": "My Amazing Pin Title",
    "description": "Detailed description of the pin content",
    "board_id": "123456789",
    "media_source": {
      "source_type": "image_url",
      "url": "https://example.com/image.jpg"
    }
  }'

Get Pin Details

获取Pin详情

bash
curl -X GET https://api.pinterest.com/v5/pins/{PIN_ID} \
  -H "Authorization: Bearer {ACCESS_TOKEN}"
Response:
json
{
  "id": "987654321",
  "created_at": "2025-01-15T10:30:00",
  "link": "https://example.com/my-article",
  "title": "My Amazing Pin Title",
  "description": "Detailed description of the pin content",
  "board_id": "123456789",
  "media": {
    "media_type": "image",
    "images": {
      "150x150": { "url": "...", "width": 150, "height": 150 },
      "400x300": { "url": "...", "width": 400, "height": 300 },
      "originals": { "url": "...", "width": 1200, "height": 800 }
    }
  }
}
bash
curl -X GET https://api.pinterest.com/v5/pins/{PIN_ID} \
  -H "Authorization: Bearer {ACCESS_TOKEN}"
响应示例:
json
{
  "id": "987654321",
  "created_at": "2025-01-15T10:30:00",
  "link": "https://example.com/my-article",
  "title": "My Amazing Pin Title",
  "description": "Detailed description of the pin content",
  "board_id": "123456789",
  "media": {
    "media_type": "image",
    "images": {
      "150x150": { "url": "...", "width": 150, "height": 150 },
      "400x300": { "url": "...", "width": 400, "height": 300 },
      "originals": { "url": "...", "width": 1200, "height": 800 }
    }
  }
}

Update a Pin

更新Pin

bash
curl -X PATCH https://api.pinterest.com/v5/pins/{PIN_ID} \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Updated Pin Title",
    "description": "Updated description",
    "link": "https://example.com/updated-link"
  }'
bash
curl -X PATCH https://api.pinterest.com/v5/pins/{PIN_ID} \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Updated Pin Title",
    "description": "Updated description",
    "link": "https://example.com/updated-link"
  }'

Delete a Pin

删除Pin

bash
curl -X DELETE https://api.pinterest.com/v5/pins/{PIN_ID} \
  -H "Authorization: Bearer {ACCESS_TOKEN}"
bash
curl -X DELETE https://api.pinterest.com/v5/pins/{PIN_ID} \
  -H "Authorization: Bearer {ACCESS_TOKEN}"

Board Management

Board 管理

Create a Board

创建Board

bash
curl -X POST https://api.pinterest.com/v5/boards \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My New Board",
    "description": "A collection of my favorite ideas",
    "privacy": "PUBLIC"
  }'
Privacy Options:
PUBLIC
,
PROTECTED
,
SECRET
bash
curl -X POST https://api.pinterest.com/v5/boards \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My New Board",
    "description": "A collection of my favorite ideas",
    "privacy": "PUBLIC"
  }'
隐私选项
PUBLIC
PROTECTED
SECRET

List User's Boards

列出用户的Board

bash
curl -X GET https://api.pinterest.com/v5/boards \
  -H "Authorization: Bearer {ACCESS_TOKEN}"
bash
curl -X GET https://api.pinterest.com/v5/boards \
  -H "Authorization: Bearer {ACCESS_TOKEN}"

Get Board Pins

获取Board中的Pin

bash
curl -X GET https://api.pinterest.com/v5/boards/{BOARD_ID}/pins \
  -H "Authorization: Bearer {ACCESS_TOKEN}"
bash
curl -X GET https://api.pinterest.com/v5/boards/{BOARD_ID}/pins \
  -H "Authorization: Bearer {ACCESS_TOKEN}"

User Account

用户账户

Get Current User Account

获取当前用户账户信息

bash
curl -X GET https://api.pinterest.com/v5/user_account \
  -H "Authorization: Bearer {ACCESS_TOKEN}"
Response:
json
{
  "account_type": "BUSINESS",
  "id": "123456789",
  "username": "myusername",
  "website_url": "https://example.com",
  "profile_image": "https://i.pinimg.com/...",
  "follower_count": 1500,
  "following_count": 320,
  "board_count": 25,
  "pin_count": 450
}
bash
curl -X GET https://api.pinterest.com/v5/user_account \
  -H "Authorization: Bearer {ACCESS_TOKEN}"
响应示例:
json
{
  "account_type": "BUSINESS",
  "id": "123456789",
  "username": "myusername",
  "website_url": "https://example.com",
  "profile_image": "https://i.pinimg.com/...",
  "follower_count": 1500,
  "following_count": 320,
  "board_count": 25,
  "pin_count": 450
}

Analytics

分析功能

Get Pin Analytics

获取Pin分析数据

bash
curl -X GET "https://api.pinterest.com/v5/pins/{PIN_ID}/analytics?start_date=2025-01-01&end_date=2025-01-31&metric_types=IMPRESSION,SAVE,PIN_CLICK" \
  -H "Authorization: Bearer {ACCESS_TOKEN}"
Available Metrics:
  • IMPRESSION
    - Number of times pin was shown
  • SAVE
    - Number of times pin was saved
  • PIN_CLICK
    - Number of clicks to pin destination
  • OUTBOUND_CLICK
    - Clicks to external website
  • VIDEO_START
    - Video plays started
Response:
json
{
  "all": {
    "daily_metrics": [
      {
        "date": "2025-01-01",
        "data_status": "READY",
        "metrics": {
          "IMPRESSION": 1250,
          "SAVE": 45,
          "PIN_CLICK": 89
        }
      }
    ]
  }
}
bash
curl -X GET "https://api.pinterest.com/v5/pins/{PIN_ID}/analytics?start_date=2025-01-01&end_date=2025-01-31&metric_types=IMPRESSION,SAVE,PIN_CLICK" \
  -H "Authorization: Bearer {ACCESS_TOKEN}"
可用指标
  • IMPRESSION
    - Pin的展示次数
  • SAVE
    - Pin的保存次数
  • PIN_CLICK
    - 点击Pin的次数
  • OUTBOUND_CLICK
    - 点击跳转到外部网站的次数
  • VIDEO_START
    - 视频播放启动次数
响应示例:
json
{
  "all": {
    "daily_metrics": [
      {
        "date": "2025-01-01",
        "data_status": "READY",
        "metrics": {
          "IMPRESSION": 1250,
          "SAVE": 45,
          "PIN_CLICK": 89
        }
      }
    ]
  }
}

Error Handling

错误处理

Common Error Response

常见错误响应

json
{
  "code": 3,
  "message": "Requested pin not found"
}
Common Error Codes:
  • 1
    - Invalid request parameters
  • 2
    - Rate limit exceeded
  • 3
    - Resource not found
  • 4
    - Insufficient permissions
  • 8
    - Invalid access token
json
{
  "code": 3,
  "message": "Requested pin not found"
}
常见错误码
  • 1
    - 请求参数无效
  • 2
    - 超出速率限制
  • 3
    - 资源未找到
  • 4
    - 权限不足
  • 8
    - 访问令牌无效

Python Error Handling Example

Python错误处理示例

python
import requests

def create_pin(access_token, board_id, title, image_url):
    url = "https://api.pinterest.com/v5/pins"
    headers = {
        "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json"
    }
    data = {
        "board_id": board_id,
        "title": title,
        "media_source": {
            "source_type": "image_url",
            "url": image_url
        }
    }

    try:
        response = requests.post(url, headers=headers, json=data)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.HTTPError as e:
        error_data = e.response.json()
        print(f"Error {error_data.get('code')}: {error_data.get('message')}")
        return None
    except requests.exceptions.RequestException as e:
        print(f"Request failed: {str(e)}")
        return None
python
import requests

def create_pin(access_token, board_id, title, image_url):
    url = "https://api.pinterest.com/v5/pins"
    headers = {
        "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json"
    }
    data = {
        "board_id": board_id,
        "title": title,
        "media_source": {
            "source_type": "image_url",
            "url": image_url
        }
    }

    try:
        response = requests.post(url, headers=headers, json=data)
        response.raise_for_status()
        return response.json()
    except requests.exceptions.HTTPError as e:
        error_data = e.response.json()
        print(f"Error {error_data.get('code')}: {error_data.get('message')}")
        return None
    except requests.exceptions.RequestException as e:
        print(f"Request failed: {str(e)}")
        return None

JavaScript/Node.js Integration

JavaScript/Node.js 集成示例

javascript
// Pinterest API Client Example
class PinterestClient {
  constructor(accessToken) {
    this.accessToken = accessToken;
    this.baseUrl = 'https://api.pinterest.com/v5';
  }

  async request(endpoint, options = {}) {
    const url = `${this.baseUrl}${endpoint}`;
    const headers = {
      'Authorization': `Bearer ${this.accessToken}`,
      'Content-Type': 'application/json',
      ...options.headers
    };

    const response = await fetch(url, {
      ...options,
      headers
    });

    if (!response.ok) {
      const error = await response.json();
      throw new Error(`Pinterest API Error: ${error.message}`);
    }

    return response.json();
  }

  async createPin(boardId, title, imageUrl, description = '', link = '') {
    return this.request('/pins', {
      method: 'POST',
      body: JSON.stringify({
        board_id: boardId,
        title: title,
        description: description,
        link: link,
        media_source: {
          source_type: 'image_url',
          url: imageUrl
        }
      })
    });
  }

  async getUserBoards() {
    return this.request('/boards');
  }

  async getPinAnalytics(pinId, startDate, endDate) {
    const params = new URLSearchParams({
      start_date: startDate,
      end_date: endDate,
      metric_types: 'IMPRESSION,SAVE,PIN_CLICK'
    });
    return this.request(`/pins/${pinId}/analytics?${params}`);
  }
}

// Usage
const client = new PinterestClient('your_access_token');
const pin = await client.createPin('board_id', 'Pin Title', 'https://example.com/image.jpg');
javascript
// Pinterest API Client Example
class PinterestClient {
  constructor(accessToken) {
    this.accessToken = accessToken;
    this.baseUrl = 'https://api.pinterest.com/v5';
  }

  async request(endpoint, options = {}) {
    const url = `${this.baseUrl}${endpoint}`;
    const headers = {
      'Authorization': `Bearer ${this.accessToken}`,
      'Content-Type': 'application/json',
      ...options.headers
    };

    const response = await fetch(url, {
      ...options,
      headers
    });

    if (!response.ok) {
      const error = await response.json();
      throw new Error(`Pinterest API Error: ${error.message}`);
    }

    return response.json();
  }

  async createPin(boardId, title, imageUrl, description = '', link = '') {
    return this.request('/pins', {
      method: 'POST',
      body: JSON.stringify({
        board_id: boardId,
        title: title,
        description: description,
        link: link,
        media_source: {
          source_type: 'image_url',
          url: imageUrl
        }
      })
    });
  }

  async getUserBoards() {
    return this.request('/boards');
  }

  async getPinAnalytics(pinId, startDate, endDate) {
    const params = new URLSearchParams({
      start_date: startDate,
      end_date: endDate,
      metric_types: 'IMPRESSION,SAVE,PIN_CLICK'
    });
    return this.request(`/pins/${pinId}/analytics?${params}`);
  }
}

// Usage
const client = new PinterestClient('your_access_token');
const pin = await client.createPin('board_id', 'Pin Title', 'https://example.com/image.jpg');

Reference Files

参考文档

This skill includes comprehensive documentation in
references/
:
  • api.md - Complete Pinterest API v5 endpoint reference extracted from official documentation
Use
view
to read reference files when detailed information about specific endpoints is needed.
本技能在
references/
目录下包含完整文档:
  • api.md - 从官方文档提取的Pinterest API v5完整端点参考
当需要特定端点的详细信息时,使用
view
命令查看参考文档。

Working with This Skill

使用本技能的指南

For Beginners

初学者指南

  1. Start by understanding OAuth 2.0 authentication flow (see Quick Reference above)
  2. Get your API credentials from Pinterest Developer Portal
  3. Test authentication with curl commands before implementing in your application
  4. Use the provided Python/JavaScript examples as starting templates
  1. 先理解OAuth 2.0认证流程(见上方快速参考)
  2. 从Pinterest开发者平台获取API凭证
  3. 在应用中实现前,先用curl命令测试认证流程
  4. 以提供的Python/JavaScript示例为基础模板进行开发

For API Integration

API集成指南

  1. Implement OAuth flow to obtain access tokens
  2. Store refresh tokens securely for long-term access
  3. Use the Pin/Board management examples for CRUD operations
  4. Implement proper error handling for rate limits and API errors
  1. 实现OAuth流程以获取访问令牌
  2. 安全存储刷新令牌以实现长期访问
  3. 使用Pin/Board管理示例实现CRUD操作
  4. 针对速率限制和API错误实现完善的错误处理

For Analytics & Business Features

分析与商业功能指南

  1. Ensure you have appropriate business account access
  2. Use analytics endpoints to track Pin performance
  3. Aggregate metrics across date ranges for reporting
  4. Implement caching to avoid unnecessary API calls
  1. 确保拥有对应的商业账户访问权限
  2. 使用分析端点跟踪Pin的表现
  3. 按日期范围聚合指标以生成报告
  4. 实现缓存以避免不必要的API调用

Best Practices

最佳实践

  • Token Security: Never expose access tokens in client-side code or version control
  • Rate Limiting: Implement exponential backoff for rate limit errors
  • Pagination: Use cursor-based pagination for large result sets
  • Webhooks: Consider using webhooks for real-time updates instead of polling
  • Scopes: Request only the minimum OAuth scopes needed for your application
  • 令牌安全:切勿在客户端代码或版本控制中暴露访问令牌
  • 速率限制:针对速率限制错误实现指数退避策略
  • 分页处理:对大型结果集使用基于游标的分页
  • Webhooks:考虑使用Webhooks实现实时更新,而非轮询
  • 权限范围:仅请求应用所需的最小OAuth权限范围

Common Patterns

常见模式

Pagination

分页处理

bash
undefined
bash
undefined

Initial request

Initial request

curl -X GET "https://api.pinterest.com/v5/boards/{BOARD_ID}/pins?page_size=25"
-H "Authorization: Bearer {ACCESS_TOKEN}"
curl -X GET "https://api.pinterest.com/v5/boards/{BOARD_ID}/pins?page_size=25"
-H "Authorization: Bearer {ACCESS_TOKEN}"

Follow-up with bookmark from response

Follow-up with bookmark from response

curl -X GET "https://api.pinterest.com/v5/boards/{BOARD_ID}/pins?page_size=25&bookmark={BOOKMARK}"
-H "Authorization: Bearer {ACCESS_TOKEN}"
undefined
curl -X GET "https://api.pinterest.com/v5/boards/{BOARD_ID}/pins?page_size=25&bookmark={BOOKMARK}"
-H "Authorization: Bearer {ACCESS_TOKEN}"
undefined

Bulk Operations

批量操作

python
undefined
python
undefined

Create multiple pins efficiently

Create multiple pins efficiently

def bulk_create_pins(access_token, board_id, pin_data_list): results = [] for pin_data in pin_data_list: result = create_pin( access_token, board_id, pin_data['title'], pin_data['image_url'] ) results.append(result) time.sleep(0.5) # Respect rate limits return results
undefined
def bulk_create_pins(access_token, board_id, pin_data_list): results = [] for pin_data in pin_data_list: result = create_pin( access_token, board_id, pin_data['title'], pin_data['image_url'] ) results.append(result) time.sleep(0.5) # Respect rate limits return results
undefined

Resources

资源链接

Official Documentation

官方文档

OAuth Scopes

OAuth权限范围

Common scopes you'll need:
  • boards:read
    - Read board data
  • boards:write
    - Create/update boards
  • pins:read
    - Read pin data
  • pins:write
    - Create/update pins
  • user_accounts:read
    - Read user account data
  • ads:read
    - Read ad account analytics (business accounts)
常用权限范围:
  • boards:read
    - 读取Board数据
  • boards:write
    - 创建/更新Board
  • pins:read
    - 读取Pin数据
  • pins:write
    - 创建/更新Pin
  • user_accounts:read
    - 读取用户账户数据
  • ads:read
    - 读取广告账户分析数据(商业账户)

Rate Limits

速率限制

  • Pinterest implements per-user rate limiting
  • Typical limits: 1000 requests per hour per user
  • Rate limit headers in response:
    • X-RateLimit-Limit
    • X-RateLimit-Remaining
    • X-RateLimit-Reset
  • Pinterest采用基于用户的速率限制
  • 典型限制:每用户每小时1000次请求
  • 响应中的速率限制头:
    • X-RateLimit-Limit
    • X-RateLimit-Remaining
    • X-RateLimit-Reset

Notes

注意事项

  • Pinterest API v5 is the current version (as of 2025)
  • All endpoints require authentication via OAuth 2.0
  • Access tokens expire after 30 days
  • Use refresh tokens to obtain new access tokens
  • Business accounts have access to additional analytics features
  • Video pins require special handling compared to image pins
  • Some features require app review by Pinterest
  • Pinterest API v5是当前最新版本(截至2025年)
  • 所有端点均需通过OAuth 2.0认证
  • 访问令牌有效期为30天
  • 使用刷新令牌获取新的访问令牌
  • 商业账户可访问额外的分析功能
  • 视频Pin的处理与图片Pin不同,需使用特定端点
  • 部分功能需经过Pinterest的应用审核

Troubleshooting

故障排除

"Invalid access token"

"Invalid access token"(无效访问令牌)

  • Verify token hasn't expired (30-day lifetime)
  • Use refresh token to obtain new access token
  • Check Authorization header format:
    Bearer {token}
  • 验证令牌是否过期(有效期30天)
  • 使用刷新令牌获取新的访问令牌
  • 检查Authorization头格式是否正确:
    Bearer {token}

"Insufficient permissions"

"Insufficient permissions"(权限不足)

  • Verify OAuth scopes include required permissions
  • Business features require verified business account
  • Some operations require board/pin ownership
  • 验证OAuth权限范围是否包含所需权限
  • 商业功能需已验证的商业账户
  • 部分操作需拥有对应Board/Pin的所有权

"Rate limit exceeded"

"Rate limit exceeded"(超出速率限制)

  • Implement exponential backoff
  • Cache responses when possible
  • Use webhooks instead of polling
  • Check
    X-RateLimit-Reset
    header for retry time
  • 实现指数退避策略
  • 尽可能缓存响应结果
  • 使用Webhooks替代轮询
  • 查看
    X-RateLimit-Reset
    头获取重试时间

"Media upload failed"

"Media upload failed"(媒体上传失败)

  • Verify image URL is publicly accessible
  • Check image meets size requirements (max 10MB)
  • Ensure image format is supported (JPG, PNG, GIF)
  • For video, use video-specific endpoints
  • 验证图片URL是否可公开访问
  • 检查图片是否符合大小限制(最大10MB)
  • 确保图片格式受支持(JPG、PNG、GIF)
  • 视频需使用视频专用端点

Updating

更新说明

This skill was generated from Pinterest's official API documentation. To get the latest API changes:
  1. Visit https://developers.pinterest.com/docs/api/v5/
  2. Check changelog for API updates
  3. Review deprecation notices
  4. Update OAuth scopes if new features added
本技能基于Pinterest官方API文档生成。获取API最新变更:
  1. 访问https://developers.pinterest.com/docs/api/v5/
  2. 查看API更新日志
  3. 查阅弃用通知
  4. 若新增功能,更新OAuth权限范围