Kashlei™ · Developers
Public feed API
A free, read-only way to follow what is new on Kashlei: music on KashTunes, live audio and video on KashLive, and public posts. Responses are JSON, RSS 2.0 or JSON Feed. You don't need an account or an API key.
Quick start
Base URL: https://kashlei.com/api/public/v1
curl "https://kashlei.com/api/public/v1/tracks?limit=10"{
"items": [
{
"id": "cm2x8k1p40001",
"type": "track",
"title": "Night Drive",
"artistName": "The Example Band",
"genre": "Indie",
"trackNumber": 1,
"durationSeconds": 214,
"explicit": false,
"isrc": "USXXX2600001",
"release": { "id": "cm2x8jz0q0000", "title": "City Lights", "kind": "ALBUM" },
"imageUrl": "https://…/cover.jpg",
"url": "https://kashlei.com/s/exampleband/night-drive",
"publishedAt": "2026-10-20T18:04:11.000Z",
"creator": {
"handle": "exampleband",
"displayName": "The Example Band",
"avatarUrl": "https://kashlei.com/api/media/avatar/…",
"profileUrl": "https://kashlei.com/u/exampleband",
"musicUrl": "https://kashlei.com/m/exampleband"
}
}
],
"nextCursor": "dDoyMDI2LTEwLTIwVDE4OjA0OjExLjAwMFoKY20yeDhrMXA0MDAwMQ"
}Endpoints
Every endpoint is a GET, needs no authentication and allows cross-origin requests from any site (CORS).
| Method | Path | Returns |
|---|---|---|
| GET | /api/public/v1/tracks | Newest KashTunes tracks, newest first. |
| GET | /api/public/v1/releases | Newest KashTunes releases (albums, EPs, singles). |
| GET | /api/public/v1/creators | KashTunes artists with a public band page, newest first. |
| GET | /api/public/v1/live | KashLive channels live right now, plus upcoming scheduled streams. |
| GET | /api/public/v1/posts | Newest public posts. |
| GET | /api/public/v1/feeds/music.rss | RSS 2.0 feed of new tracks (Podcasting 2.0 and iTunes namespaces). |
| GET | /api/public/v1/feeds/music.json | JSON Feed 1.1 of new tracks. |
| GET | /api/public/v1/feeds/posts.rss | RSS 2.0 feed of public posts. |
| GET | /api/public/v1/feeds/posts.json | JSON Feed 1.1 of public posts. |
| GET | /api/public/v1 | Index of every endpoint above. |
Live streams
curl "https://kashlei.com/api/public/v1/live"{
"live": [
{
"type": "live_channel",
"title": "Friday night vinyl session",
"category": "music",
"categoryLabel": "Music",
"live": true,
"liveSince": "2026-10-21T03:00:00.000Z",
"url": "https://kashlei.com/live/djexample",
"creator": {
"handle": "djexample",
"displayName": "DJ Example",
"avatarUrl": null,
"profileUrl": "https://kashlei.com/u/djexample"
}
}
],
"upcoming": [
{
"id": "cm2y0a1b20003",
"type": "scheduled_stream",
"title": "Album listening party",
"startsAt": "2026-10-24T02:00:00.000Z",
"url": "https://kashlei.com/live/djexample",
"channel": { "type": "live_channel", "…": "same shape as above" }
}
]
}Public posts
curl "https://kashlei.com/api/public/v1/posts?limit=20"{
"items": [
{
"id": "cm2y1c2d30004",
"type": "post",
"text": "New single out Friday #indie",
"hashtags": ["indie"],
"publishedAt": "2026-10-21T16:20:00.000Z",
"url": "https://kashlei.com/posts/cm2y1c2d30004",
"creator": {
"handle": "exampleband",
"displayName": "The Example Band",
"avatarUrl": null,
"profileUrl": "https://kashlei.com/u/exampleband"
}
}
],
"nextCursor": null
}Releases and artists
curl "https://kashlei.com/api/public/v1/releases"
curl "https://kashlei.com/api/public/v1/creators?limit=50"Releases have the same creator object as tracks plus kind, releaseDate, upc and trackCount. Creators return the public handle, display name, avatar, genre, release count and links to their profile and KashTunes page.
RSS and JSON Feed
Point any feed reader or aggregator at these URLs. The music RSS feed declares the Podcasting 2.0 namespace with podcast:medium set to music, and carries iTunes explicit and duration tags. Items link to the track on the artist's storefront. Full audio is sold by the artist, so items have no <enclosure>.
curl "https://kashlei.com/api/public/v1/feeds/music.rss"
curl "https://kashlei.com/api/public/v1/feeds/music.json"
curl "https://kashlei.com/api/public/v1/feeds/posts.rss"
curl "https://kashlei.com/api/public/v1/feeds/posts.json"<rss version="2.0" xmlns:podcast="https://podcastindex.org/namespace/1.0" …>
<channel>
<title>KashTunes on Kashlei – new music</title>
<podcast:medium>music</podcast:medium>
<item>
<title>The Example Band – Night Drive</title>
<link>https://kashlei.com/s/exampleband/night-drive</link>
<guid isPermaLink="false">kashlei:track:cm2x8k1p40001</guid>
<pubDate>Tue, 20 Oct 2026 18:04:11 GMT</pubDate>
<itunes:explicit>false</itunes:explicit>
<itunes:duration>214</itunes:duration>
</item>
</channel>
</rss>Pagination
List endpoints take limit (1 to 50, default 20) and cursor. To get the next page, send back the nextCursor from the last response unchanged. When nextCursor is null, there are no more pages. A page can hold fewer items than limit when some content is no longer public; keep following the cursor. Feeds always return the newest 50 items.
curl "https://kashlei.com/api/public/v1/tracks?limit=50&cursor=dDoyMDI2LTEwLTIw…"Rate limits and caching
Up to 300 requests every 5 minutes per IP address. Over that, you get HTTP 429 with a Retry-After header. Responses can be cached for 60 seconds (Cache-Control is set), so polling a feed more often than once a minute won't get you anything new. For feeds, every 15 minutes is plenty. Need more? Email us.
| Status | error | Meaning |
|---|---|---|
| 400 | invalid_limit | limit is not a whole number from 1 to 50. |
| 400 | invalid_cursor | cursor was not copied from a previous nextCursor. |
| 429 | rate_limited | Too many requests. Wait for the Retry-After seconds, then try again. |
| 503 | unavailable | Temporary problem on our side. Retry later with backoff. |
{ "error": "rate_limited", "docs": "/developers" }What's included
The API only returns content anyone can already see on kashlei.com without signing in:
- KashTunes tracks, releases and artists that are published for sale on an active storefront.
- KashLive channels that are live now and upcoming scheduled streams.
- Public posts from members who allow their profile to be discovered.
It never returns:
- Adult or 18+ content of any kind, including KashFans, adult-restricted listings and 18+ live channels.
- Private, followers-only or age-gated content, drafts, or anything removed by moderation.
- Email addresses, phone numbers, account ids or any personal data beyond a public @handle, display name and public profile picture.
- Audio or video files. Links take listeners to Kashlei to listen, watch or buy.
Content changes. If something stops being public (it's deleted, made private or removed by moderation), it disappears from the API and feeds. Please remove it from your copy too.
Terms of use and attribution
- The API is free for news, discovery, directories, research and personal projects. It is read-only, has no warranty and may change. Breaking changes will come as a new version (v2), not as changes to v1.
- Credit Kashlei and the creator: show the creator's display name or @handle and link each item to its
url, for example “via Kashlei” or “on KashTunes”. - Creators own their music, artwork, posts and streams. Don't re-host audio, video or artwork, and don't present it as your own.
- Don't use the API to build profiles of people, send spam, or train models on creators' work without their permission.
- Respect the rate limits. Don't try to get around them, scrape signed-in pages, or reach content that isn't public.
- Use of the API is also covered by the Kashlei Terms and Community Guidelines. We may limit or block access that breaks these terms.
Contact
Questions, higher limits or a field you need? Email support@kashlei.com.
