Documentation Index
Fetch the complete documentation index at: https://rocks.docs.rive.wtf/llms.txt
Use this file to discover all available pages before exploring further.
Every API key is tied to one IP. To apply for a key, DM southctrl on Discord.
Use the endpoint paths below, replace the required params, and send Authorization: Bearer YOUR_API_KEY.
Quick Start
Fetch a user profile
Use /api/pinterest/user?username= to get profile info, follower counts, and board stats.
Search or browse pins
Use /api/pinterest/search or /api/pinterest/user/pins to pull pin data.
Download or find similar images
Pass any pin image URL to /api/pinterest/download or /api/pinterest/similar.
Great for Pinterest bots, pin scrapers, mood board tools, and image discovery apps.
User Profile
Get public profile data for any Pinterest user.
Endpoint
Query Parameters
The Pinterest username to look up.
Example Request
curl -X GET "https://rocks.rive.wtf/api/pinterest/user?username=pinterest" \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch('https://rocks.rive.wtf/api/pinterest/user?username=pinterest', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const data = await response.json();
console.log(data);
import requests
response = requests.get(
'https://rocks.rive.wtf/api/pinterest/user',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={'username': 'pinterest'}
)
print(response.json())
Example Response
{
"id": "424605208526455283",
"username": "pinterest",
"display_name": "Pinterest",
"bio": "Get on board. ♥️📌",
"profile_image": "https://i.pinimg.com/280x280_RS/...",
"follower_count": 6257282,
"following_count": 392,
"pin_count": 94823,
"board_count": 111,
"website": "http://www.pinterest.com",
"verified": true
}
Error Responses
| Status | Meaning |
|---|
400 | Missing username parameter |
404 | User not found or failed to fetch |
500 | Internal server error |
Search Pins
Search Pinterest for pins matching a keyword query.
Endpoint
GET /api/pinterest/search
Query Parameters
The search query (e.g. home decor, minimalist kitchen).
Number of pins to return. Maximum: 100.
Example Request
curl -X GET "https://rocks.rive.wtf/api/pinterest/search?q=home+decor&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch('https://rocks.rive.wtf/api/pinterest/search?q=home+decor&limit=20', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const data = await response.json();
import requests
response = requests.get(
'https://rocks.rive.wtf/api/pinterest/search',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={'q': 'home decor', 'limit': 20}
)
print(response.json())
Example Response
{
"query": "home decor",
"total_results": 500,
"pins": [
{
"title": "home decor pin",
"image_url": "https://i.pinimg.com/originals/d5/3b/01/...",
"link": null,
"domain": null
}
]
}
Pin Object Fields
| Field | Type | Description |
|---|
title | string | Pin title or description (max 200 chars) |
image_url | string | null | Direct CDN image URL |
link | string | null | Outbound link from the pin (non-Pinterest URLs only) |
domain | string | null | Source domain of the pin’s outbound link |
Error Responses
| Status | Meaning |
|---|
400 | Missing q parameter |
500 | Internal server error or timeout |
User Pins
Fetch the most recent pins from a specific user’s profile.
Endpoint
GET /api/pinterest/user/pins
Query Parameters
The Pinterest username whose pins to fetch.
Number of pins to return. Maximum: 100.
Example Request
curl -X GET "https://rocks.rive.wtf/api/pinterest/user/pins?username=pinterest&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch('https://rocks.rive.wtf/api/pinterest/user/pins?username=pinterest&limit=20', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const data = await response.json();
import requests
response = requests.get(
'https://rocks.rive.wtf/api/pinterest/user/pins',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={'username': 'pinterest', 'limit': 20}
)
print(response.json())
Example Response
{
"username": "pinterest",
"count": 20,
"pins": [
{
"title": "Soft, slow, and beautifully simple—discover everyday micro joys.",
"image_url": "https://i.pinimg.com/236x/f9/5c/90/...",
"link": null,
"domain": null
},
{
"title": "Capri pants and kitten heels are the underrated power duo of NYC workwear.",
"image_url": "https://i.pinimg.com/736x/39/6b/de/...",
"link": null,
"domain": "pinterest.com"
}
]
}
Error Responses
| Status | Meaning |
|---|
400 | Missing username parameter |
404 | User not found |
500 | Internal server error or timeout |
Board Pins
Fetch pins from a specific board on a user’s profile.
Endpoint
Query Parameters
The Pinterest username who owns the board.
The board slug as it appears in the URL (e.g. food, travel, home-decor).
Example Request
curl -X GET "https://rocks.rive.wtf/api/pinterest/board?username=pinterest&board=food" \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch('https://rocks.rive.wtf/api/pinterest/board?username=pinterest&board=food', {
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const data = await response.json();
import requests
response = requests.get(
'https://rocks.rive.wtf/api/pinterest/board',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={'username': 'pinterest', 'board': 'food'}
)
print(response.json())
Example Response
{
"username": "pinterest",
"board": "food",
"pin_count": 10,
"pins": [
{
"title": "food pin",
"image_url": "https://i.pinimg.com/originals/d5/3b/01/...",
"link": null,
"domain": null
}
]
}
The board parameter must match the exact URL slug on Pinterest — e.g. for https://pinterest.com/username/home-decor, pass board=home-decor.
Error Responses
| Status | Meaning |
|---|
400 | Missing username or board parameter |
404 | Board not found |
500 | Internal server error or timeout |
Download Image
Download a Pinterest pin image by its CDN URL. Automatically upgrades thumbnail URLs (e.g. 236x, 736x) to the highest available resolution (originals) before fetching, then falls back to the original URL if unavailable. Returns the raw image as a base64-encoded data URI.
Endpoint
GET /api/pinterest/download
Query Parameters
The Pinterest CDN image URL to download (e.g. from any pin’s image_url field).
Example Request
curl -X GET "https://rocks.rive.wtf/api/pinterest/download?url=https://i.pinimg.com/originals/d5/3b/01/..." \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch(
'https://rocks.rive.wtf/api/pinterest/download?url=https://i.pinimg.com/originals/d5/3b/01/...',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const data = await response.json();
import requests
response = requests.get(
'https://rocks.rive.wtf/api/pinterest/download',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={'url': 'https://i.pinimg.com/originals/d5/3b/01/...'}
)
print(response.json())
Example Response
{
"url": "https://i.pinimg.com/originals/d5/3b/01/...",
"content_type": "image/png",
"size_bytes": 44409,
"data_uri": "data:image/png;base64,iVBORw0KGgo..."
}
You can pass any thumbnail URL — the API automatically attempts to upgrade it to originals resolution first before falling back.
Error Responses
| Status | Meaning |
|---|
400 | Missing url, invalid URL format, or CDN returned an error |
500 | Internal server error or timeout |
Similar Images
Find visually similar pins to a given image URL. Uses Pinterest’s visual search internally. If visual search is unavailable, falls back to a keyword search derived from the image URL.
Endpoint
GET /api/pinterest/similar
Query Parameters
The Pinterest image URL to find similar images for.
Number of similar pins to return. Maximum: 100.
Example Request
curl -X GET "https://rocks.rive.wtf/api/pinterest/similar?url=https://i.pinimg.com/originals/d5/3b/01/...&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch(
'https://rocks.rive.wtf/api/pinterest/similar?url=https://i.pinimg.com/originals/d5/3b/01/...&limit=20',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const data = await response.json();
import requests
response = requests.get(
'https://rocks.rive.wtf/api/pinterest/similar',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={'url': 'https://i.pinimg.com/originals/d5/3b/01/...', 'limit': 20}
)
print(response.json())
Example Response
{
"source_image": "https://i.pinimg.com/originals/d5/3b/01/...",
"count": 20,
"pins": [
{
"title": "home decor inspiration pin",
"image_url": "https://i.pinimg.com/originals/d5/3b/01/...",
"link": null,
"domain": null
}
]
}
Error Responses
| Status | Meaning |
|---|
400 | Missing or invalid url parameter |
500 | Internal server error |
Endpoint Summary
| Endpoint | Method | Description |
|---|
/api/pinterest/user | GET | Fetch a user’s public profile |
/api/pinterest/search | GET | Search pins by keyword (max 100) |
/api/pinterest/user/pins | GET | Get recent pins from a user (max 100) |
/api/pinterest/board | GET | Get pins from a specific board |
/api/pinterest/download | GET | Download an image as a base64 data URI |
/api/pinterest/similar | GET | Find visually similar pins (max 100) |
All endpoints require a valid API key passed as Authorization: Bearer YOUR_API_KEY.