"Il y a eu une mutinerie (mardi) qui s'est prolongée jusqu'à ce (mercredi) matin, elle est maintenant terminée", a indiqué à l'AFP un porte-parole de la police nationale à Madrid, peu après 9H30 locales (07H30 GMT).
Les étrangers sans titre de séjour avaient protesté contre leurs conditions de rétention, du haut du toit-terrasse, en scandant "liberté" en espagnol et en déployant une banderole portant ce mot, a constaté un photographe de l'AFP.
"A la suite d'une négociation, ils ont accepté de descendre, il n'y a pas eu à employer la force", a assuré le porte-parole de la police. Il a cependant refusé d'expliquer sur quoi avaient porté les négociations, présentées comme "une affaire interne".
Selon la police, des migrants avaient cassé des meubles jusqu'à se frayer un chemin vers le toit mais "ils n'avaient pas d'armes".
"Il n'y a pas de blessés", avait assuré mardi soir la porte-parole de la mairie de Madrid dirigée par des partis de gauche depuis 2015.
Le conseiller municipal Javier Barbero, chargé de la santé et de la sécurité, avait dénoncé ces centres, "une institution en échec". Il avait également dénoncé "l'opacité de la gestion de cette situation".
Certaines organisations des droits de l'Homme font campagne pour la fermeture des centres de rétention en Espagne, y dénonçant les mauvaises conditions de séjour.
Quelque 6.500 personnes sont passées en 2015 par les sept centres du pays, selon un rapport diffusé en septembre par une ONG.
En août, une quinzaine de migrants avaient réussi à s'enfuir du centre de rétention d'Aluche. "Cette fois, aucun n'a pris la fuite", selon le porte-parole de la police.
Début octobre, 67 migrants s'étaient enfuis d'un autre centre de rétention, à Sangonera, près de Murcie (sud-est).