API Documentation
Get started with Rnote API — from sign-up to your first request.
Base URL
https://rnote.dev/api/v2/crawler
All API endpoints use this prefix. The full interactive reference is available via Swagger UI.
Online API playground
We provide an Apifox-based online playground — enter your API key and test every endpoint right in the browser, no code required.
Open the playgroundBefore you start
- 1 Create an account and verify your email
- 2 Sign in to the admin panel and create an API key under "API Keys"
- 3 Top up your balance on the Billing page (only successful requests are charged)
Authentication
All API requests authenticate by passing your API key in the X-API-Key header.
# Pass your API key in an HTTP header
curl -X 'GET' \
'https://rnote.dev/api/v2/crawler/note/image?note_id=697c0eee000000000a03c308' \
-H 'accept: application/json' \
-H 'X-API-Key: sk-5bc4****************************e175'
Your First Request
Example — fetching an image note's detail:
curl -X 'GET' \
'https://rnote.dev/api/v2/crawler/note/image?note_id=697c0eee000000000a03c308' \
-H 'accept: application/json' \
-H 'X-API-Key: sk-5bc4****************************e175'
import requests
API_KEY = "sk-5bc4****************************e175"
BASE_URL = "https://rnote.dev/api/v2/crawler"
response = requests.get(
f"{BASE_URL}/note/image",
params={"note_id": "697c0eee000000000a03c308"},
headers={
"X-API-Key": API_KEY,
"accept": "application/json",
},
)
data = response.json()
print(data)
const API_KEY = "sk-5bc4****************************e175";
const BASE_URL = "https://rnote.dev/api/v2/crawler";
const res = await fetch(
`${BASE_URL}/note/image?note_id=697c0eee000000000a03c308`,
{
headers: {
"X-API-Key": API_KEY,
"accept": "application/json",
},
}
);
const data = await res.json();
console.log(data);
Note APIs
/note/image
Fetch an image note's detail — content, image list, author info, engagement metrics and more.
note_id (required)
/note/video
Fetch a video note's detail — playback URL, cover image, author info and more.
note_id (required)
/note/mixed
Fetch home-feed recommendation notes; leave note_id empty to return the recommendation feed.
note_id (optional)
/note/comments
Fetch a note's comments, with pagination and multiple sort options.
note_id (required) · cursor · index · sort_strategy (default / latest_v2 / like_count)
/note/sub_comments
Fetch second-level comments (replies) on a note, with cursor pagination.
note_id (required) · comment_id (required) · cursor · index · num
/note/metrics
Report note metrics (likes, collects, shares and other engagement data).
note_id · report_type · target_count
User APIs
/user/info
Fetch a user's profile — nickname, avatar, bio, follower count and more.
user_id (required)
/user/posted
Fetch the notes a user has posted, with cursor pagination.
user_id (required) · cursor · num
/user/faved
Fetch the notes a user has collected, with cursor pagination.
user_id (required) · cursor · num
Search APIs
/search/notes
Search notes, with sorting and filtering.
keyword (required) · page · sort (general / time_descending / popularity_descending) · note_type (0=all / 1=video / 2=image)
/search/users
Search users.
keyword (required) · page
/search/images
Search images.
keyword (required) · page
/search/products
Search products.
keyword (required) · page · sort_by · source
/search/groups
Search group chats.
keyword (required) · page
Product APIs
/product/detail
Fetch product detail.
product_id (required)
/product/review/overview
Fetch a product's review summary.
product_id (required)
/product/reviews
Fetch a product's reviews, with cursor pagination.
product_id (required) · cursor · sort_type
/product/recommendations
Fetch related-product recommendations.
product_id (required) · cursor
Topic APIs
/topic/info
Fetch topic detail.
topic_id (required)
/topic/feed
Fetch notes under a topic, with cursor pagination.
topic_id (required) · cursor · sort_by
Creator Insights
/creator/inspiration/feed
Fetch recommended creator inspirations.
cursor · num
/creator/hot/inspiration/feed
Fetch trending creator inspirations.
cursor · num
Response Format
Successful responses return RedNote's raw JSON. Error responses use a consistent format:
{
"detail": "Error description"
}
Error Codes
| HTTP status | Meaning | How to handle |
|---|---|---|
401 |
Missing or invalid API key | Check the X-API-Key header |
402 |
Insufficient balance | Top up your balance in the admin panel |
403 |
Not authorized for this endpoint | Check your API key's scopes |
429 |
Rate limit exceeded | Reduce your request rate and retry later |
500 |
Internal server error | Retry later; contact support if it persists |
503 |
No device available (account pool exhausted) | Retry later |
Billing
Per-request billing
Only successful (HTTP 2xx) requests are billed; failed requests are free. Each endpoint is priced independently.
Insufficient balance
When your balance can't cover a request, the API returns HTTP 402 and the request is not executed.
Transaction records
Every charge is viewable on the Billing page of the admin panel — time, endpoint, amount and more.