Skip to main content

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

1

Fetch a user profile

Use /api/pinterest/user?username= to get profile info, follower counts, and board stats.
2

Search or browse pins

Use /api/pinterest/search or /api/pinterest/user/pins to pull pin data.
3

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

GET /api/pinterest/user

Query Parameters

username
string
required
The Pinterest username to look up.

Example Request

cURL
curl -X GET "https://rocks.rive.wtf/api/pinterest/user?username=pinterest" \
  -H "Authorization: Bearer YOUR_API_KEY"
JavaScript
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);
Python
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

StatusMeaning
400Missing username parameter
404User not found or failed to fetch
500Internal server error

Search Pins

Search Pinterest for pins matching a keyword query.

Endpoint

GET /api/pinterest/search

Query Parameters

q
string
required
The search query (e.g. home decor, minimalist kitchen).
limit
integer
default:"20"
Number of pins to return. Maximum: 100.

Example Request

cURL
curl -X GET "https://rocks.rive.wtf/api/pinterest/search?q=home+decor&limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"
JavaScript
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();
Python
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

FieldTypeDescription
titlestringPin title or description (max 200 chars)
image_urlstring | nullDirect CDN image URL
linkstring | nullOutbound link from the pin (non-Pinterest URLs only)
domainstring | nullSource domain of the pin’s outbound link

Error Responses

StatusMeaning
400Missing q parameter
500Internal 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

username
string
required
The Pinterest username whose pins to fetch.
limit
integer
default:"20"
Number of pins to return. Maximum: 100.

Example Request

cURL
curl -X GET "https://rocks.rive.wtf/api/pinterest/user/pins?username=pinterest&limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"
JavaScript
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();
Python
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

StatusMeaning
400Missing username parameter
404User not found
500Internal server error or timeout

Board Pins

Fetch pins from a specific board on a user’s profile.

Endpoint

GET /api/pinterest/board

Query Parameters

username
string
required
The Pinterest username who owns the board.
board
string
required
The board slug as it appears in the URL (e.g. food, travel, home-decor).

Example Request

cURL
curl -X GET "https://rocks.rive.wtf/api/pinterest/board?username=pinterest&board=food" \
  -H "Authorization: Bearer YOUR_API_KEY"
JavaScript
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();
Python
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

StatusMeaning
400Missing username or board parameter
404Board not found
500Internal 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

url
string
required
The Pinterest CDN image URL to download (e.g. from any pin’s image_url field).

Example Request

cURL
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"
JavaScript
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();
Python
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

StatusMeaning
400Missing url, invalid URL format, or CDN returned an error
500Internal 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

url
string
required
The Pinterest image URL to find similar images for.
limit
integer
default:"20"
Number of similar pins to return. Maximum: 100.

Example Request

cURL
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"
JavaScript
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();
Python
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

StatusMeaning
400Missing or invalid url parameter
500Internal server error

Endpoint Summary

EndpointMethodDescription
/api/pinterest/userGETFetch a user’s public profile
/api/pinterest/searchGETSearch pins by keyword (max 100)
/api/pinterest/user/pinsGETGet recent pins from a user (max 100)
/api/pinterest/boardGETGet pins from a specific board
/api/pinterest/downloadGETDownload an image as a base64 data URI
/api/pinterest/similarGETFind visually similar pins (max 100)
All endpoints require a valid API key passed as Authorization: Bearer YOUR_API_KEY.