List videos
curl --request GET \
--url https://api.yousonder.com/v1/videos \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.yousonder.com/v1/videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.yousonder.com/v1/videos"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"data": [
{
"id": "9f3c2a71-4b6e-4d8a-a1c5-7e2b9d0f3a64",
"title": "Your kid isn't lazy. They're exhausted.",
"thumbnail_url": "https://example.com/thumbnails/9f3c2a71.jpg",
"book": {
"id": "5b1d7c2e-8f0a-4c1b-9d3e-2a6f4b8c9e01",
"title": "The Quiet Hours"
},
"posted_at": "2026-09-14T17:02:11.000Z",
"views": 48213,
"likes": 3120,
"comments": 187,
"shares": 402,
"saves": 911,
"views_updated_at": "2026-09-16T09:07:44.000Z",
"views_final": false,
"platforms": [
{
"platform": "instagram",
"url": "https://www.instagram.com/reel/C9xYz123abc/",
"views": 30211,
"likes": 2204,
"comments": 131,
"shares": 350,
"saves": 802,
"posted_at": "2026-09-14T17:02:11.000Z",
"views_updated_at": "2026-09-16T09:07:44.000Z"
},
{
"platform": "youtube",
"url": "https://www.youtube.com/shorts/aB3dE5fG7hI",
"views": 18002,
"likes": 916,
"comments": 56,
"shares": 52,
"saves": 109,
"posted_at": "2026-09-14T17:02:12.000Z",
"views_updated_at": "2026-09-16T09:05:10.000Z"
}
],
"viral": {
"is_viral": true,
"went_viral_at": "2026-09-15T14:00:00.000Z",
"views_when_viral": 12840,
"threshold": 12000,
"author_median_views": 1200,
"compared_videos": 23
},
"milestones": [
{
"views": 1000,
"reached_at": "2026-09-14T21:00:00.000Z"
},
{
"views": 10000,
"reached_at": "2026-09-15T12:00:00.000Z"
}
]
}
],
"has_more": false,
"next_cursor": null
}{
"success": false,
"error": {
"code": "invalid_parameter",
"message": "viral must be true or false."
}
}{
"success": false,
"error": {
"code": "invalid_api_key",
"message": "That API key is not valid. Check it was copied in full, or create a new one in Sonder under Settings → API keys."
}
}{
"success": false,
"error": {
"code": "plan_inactive",
"message": "This Sonder account doesn't have an active plan, so its data isn't shared. The key works again as soon as the plan is active."
}
}{
"success": false,
"error": {
"code": "rate_limited",
"message": "Too many requests. Each key allows 60 a minute; try again after the time in the Retry-After header."
}
}Videos
List videos
Videos the author has posted through Sonder, newest first. Each carries its total views across platforms, a breakdown per platform, whether and when it went viral, and the view milestones it has reached.
GET
/
videos
List videos
curl --request GET \
--url https://api.yousonder.com/v1/videos \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.yousonder.com/v1/videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.yousonder.com/v1/videos"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"success": true,
"data": [
{
"id": "9f3c2a71-4b6e-4d8a-a1c5-7e2b9d0f3a64",
"title": "Your kid isn't lazy. They're exhausted.",
"thumbnail_url": "https://example.com/thumbnails/9f3c2a71.jpg",
"book": {
"id": "5b1d7c2e-8f0a-4c1b-9d3e-2a6f4b8c9e01",
"title": "The Quiet Hours"
},
"posted_at": "2026-09-14T17:02:11.000Z",
"views": 48213,
"likes": 3120,
"comments": 187,
"shares": 402,
"saves": 911,
"views_updated_at": "2026-09-16T09:07:44.000Z",
"views_final": false,
"platforms": [
{
"platform": "instagram",
"url": "https://www.instagram.com/reel/C9xYz123abc/",
"views": 30211,
"likes": 2204,
"comments": 131,
"shares": 350,
"saves": 802,
"posted_at": "2026-09-14T17:02:11.000Z",
"views_updated_at": "2026-09-16T09:07:44.000Z"
},
{
"platform": "youtube",
"url": "https://www.youtube.com/shorts/aB3dE5fG7hI",
"views": 18002,
"likes": 916,
"comments": 56,
"shares": 52,
"saves": 109,
"posted_at": "2026-09-14T17:02:12.000Z",
"views_updated_at": "2026-09-16T09:05:10.000Z"
}
],
"viral": {
"is_viral": true,
"went_viral_at": "2026-09-15T14:00:00.000Z",
"views_when_viral": 12840,
"threshold": 12000,
"author_median_views": 1200,
"compared_videos": 23
},
"milestones": [
{
"views": 1000,
"reached_at": "2026-09-14T21:00:00.000Z"
},
{
"views": 10000,
"reached_at": "2026-09-15T12:00:00.000Z"
}
]
}
],
"has_more": false,
"next_cursor": null
}{
"success": false,
"error": {
"code": "invalid_parameter",
"message": "viral must be true or false."
}
}{
"success": false,
"error": {
"code": "invalid_api_key",
"message": "That API key is not valid. Check it was copied in full, or create a new one in Sonder under Settings → API keys."
}
}{
"success": false,
"error": {
"code": "plan_inactive",
"message": "This Sonder account doesn't have an active plan, so its data isn't shared. The key works again as soon as the plan is active."
}
}{
"success": false,
"error": {
"code": "rate_limited",
"message": "Too many requests. Each key allows 60 a minute; try again after the time in the Retry-After header."
}
}Authorizations
An API key from Sonder → Settings → API keys, like sonder_live_….
Query Parameters
Only videos first posted on or after this day (UTC), YYYY-MM-DD.
Only videos first posted on or before this day (UTC), YYYY-MM-DD.
Only videos for this book.
true for viral videos only, false for the rest.
Videos per page, 1–100.
Required range:
1 <= x <= 100next_cursor from the previous page.