Base URL: http://idonthavespotify.sjdonado.com
Convert music links across streaming platforms.
Query Parameters:
v(required): API version, must be"1"
Request Body:
{
"link": "string (required)",
"adapters": ["string"] (optional)
}link: Valid music link from any supported platformadapters: Target platforms (default: all platforms)- Available:
spotify,youTube,appleMusic,deezer,soundCloud,tidal
- Available:
Response (200):
{
"id": "string",
"type": "song|album|playlist|artist|podcast|show",
"title": "string",
"description": "string",
"image": "string (optional)",
"audio": "string (optional)",
"source": "string",
"universalLink": "string",
"links": [
{
"type": "string",
"url": "string",
"isVerified": "boolean (optional)",
"notAvailable": "boolean (optional)"
}
]
}Errors:
400: Invalid link or missing parameters429: Rate limit exceeded (10 requests/minute)500: Processing failed
Example:
curl -X POST "http://idonthavespotify.sjdonado.com/api/search?v=1" \
-H "Content-Type: application/json" \
-d '{
"link": "https://open.spotify.com/track/3AhXZa8sUQht0UEdBJgpGc",
"adapters": ["youTube", "appleMusic"]
}'Check rate limit status for your IP.
Response (200):
{
"ip": "string",
"rateLimits": {
"web": {
"allowed": "boolean",
"remaining": "number",
"resetIn": "number"
},
"api": {
"allowed": "boolean",
"remaining": "number",
"resetIn": "number"
}
},
"storeSize": {
"web": "number",
"api": "number"
},
"timestamp": "string"
}Example:
curl "http://idonthavespotify.sjdonado.com/api/status"Input (parseable):
- Spotify:
https://open.spotify.com/*orhttps://spotify.link/* - YouTube:
https://youtube.com/watch?v=*,https://youtu.be/*,https://music.youtube.com/* - Apple Music:
https://music.apple.com/*/* - Deezer:
https://www.deezer.com/*/* - SoundCloud:
https://soundcloud.com/*/*,https://on.soundcloud.com/* - Tidal:
https://tidal.com/browse/*/* - Google Music Share:
https://www.google.com/gasearch*,https://share.google/*
Output (searchable):
- Spotify, YouTube, Apple Music, Deezer, SoundCloud, Tidal
- Limit: 10 requests per minute per IP
- Headers:
X-RateLimit-Limit: Maximum requests allowedX-RateLimit-Remaining: Requests remainingX-RateLimit-Reset: Reset timestampRetry-After: Seconds to wait (when rate limited)
All errors follow this format:
{
"error": "error message",
"retryAfter": 60 (optional, only on 429)
}