// api · v1.0 · REST

API Docs

Documentación de referencia de la API REST de SKYNEX. Todos los endpoints requieren autenticación de sesión.

Autenticación

La API utiliza sesiones PHP (cookie PHPSESSID). Inicia sesión en /login.php y la cookie de sesión se enviará automáticamente en cada petición del mismo dominio.

Todas las peticiones POST requieren incluir el token CSRF en el cuerpo:

POST /api/music.php?action=<action>
Content-Type: application/x-www-form-urlencoded

csrf_token=<token>&param1=valor1&...

El token CSRF se puede obtener del formulario HTML o mediante una petición GET a la app.

Base URL

https://skynex.es/api/music.php

Formato de respuesta

Todas las respuestas son application/json con la estructura:

{ "ok": true, ... } // éxito
{ "ok": false, "error": "mensaje" } // error

Tracks

GET?action=track&id={id}
Obtiene los detalles de un track por su ID.
ParamTipoDescripción
idintID del track
GET?action=search&q={query}&limit={n}&offset={n}
Busca tracks públicos por título, artista o álbum.
ParamTipoDescripción
qstringTexto de búsqueda
limitintMáx. resultados (por defecto 20, máx. 50)
offsetintDesplazamiento para paginación
GET?action=my_tracks
Devuelve los tracks del usuario autenticado.
GET?action=user_tracks&username={user}
Devuelve los tracks públicos de otro usuario (perfil público).
ParamTipoDescripción
usernamestringNombre de usuario
GET?action=recent_tracks&limit={n}
Tracks públicos más recientes de toda la plataforma.
POST?action=upload
Sube un nuevo track de audio. Enviar como multipart/form-data.
ParamTipoDescripción
filefileArchivo de audio (MP3, FLAC, WAV, OGG, M4A, AAC — máx. 50MB)
titlestringTítulo del track
artiststringArtista
albumstringÁlbum (opcional)
genrestringGénero (opcional)
is_publicint1 = público, 0 = privado
POST?action=play
Registra una reproducción.
ParamTipoDescripción
track_idintID del track reproducido
playlist_idintID de la playlist (opcional)
durationintSegundos escuchados
POST?action=delete_track
Elimina un track propio (o cualquiera si eres superadmin).
ParamTipoDescripción
track_idintID del track a eliminar

Playlists

GET?action=my_playlists
Devuelve las playlists del usuario autenticado.
GET?action=playlist&id={id}
Obtiene una playlist con sus tracks.
POST?action=create_playlist
Crea una nueva playlist.
ParamTipoDescripción
titlestringNombre de la playlist
descriptionstringDescripción (opcional)
visibilitystringpublic | private | unlisted
POST?action=add_to_playlist
Añade un track a una playlist.
ParamTipoDescripción
playlist_idintID de la playlist
track_idintID del track

Perfil de usuario

GET?action=profile&username={user}
Obtiene el perfil público de un usuario.
GET?action=search_users&q={query}
Busca usuarios con perfil público por nombre o username.
POST?action=update_profile
Actualiza el perfil del usuario autenticado.
ParamTipoDescripción
display_namestringNombre para mostrar (máx. 60 chars)
biostringBiografía (máx. 300 chars)
locationstringUbicación (máx. 100 chars)
websitestringURL personal (máx. 200 chars)
POST?action=upload_cover
Sube imagen de portada para track, playlist o avatar de usuario. Enviar como multipart/form-data.
ParamTipoDescripción
imagefileImagen (JPG, PNG, WEBP — máx. 5MB)
typestringuser | track | playlist
idintID del recurso (user_id / track_id / playlist_id)

Códigos de respuesta

CampoDescripción
ok: trueLa operación se realizó con éxito
ok: falseSe produjo un error — ver campo error o msg
restricted: trueEl recurso existe pero el perfil es privado

La API devuelve siempre HTTP 200. Los errores se indican en el JSON con ok: false.

API v1.0 — SKYNEX 1.0.0 — 2026