Just seven people were killed in Jakarta despite multiple blasts and a gunfight, and five of them were the attackers themselves, but the brazenness of the assault suggested a new brand of militancy in a country where low-level strikes on police are common.
It took security forces about three hours to end the attack near a Starbucks cafe and Sarinah, Jakarta's oldest department store, after a team of militants traded gunfire with police and blew themselves up.
An Indonesian and a Canadian were killed in the attack. Twenty people, including an Algerian, an Austrian, a German and a Dutch national, were wounded.
"A group of soldiers of the caliphate in Indonesia targeted a gathering from the crusader alliance that fights the Islamic State in Jakarta," the group said in a statement. It added that 15 people were killed.
Jakarta's police chief told reporters: "ISIS is behind this attack definitely," using a common acronym for Islamic State, and he identified an Indonesian militant, Bahrun Naim, as the man responsible for plotting it.
Police believe Naim is in the Syrian city of Raqqa.
The drama played out on the streets and on television screens, with at least six explosions and a gunfight in a movie theatre. But the low death toll pointed to the involvement of local militants whose weapons were rudimentary, experts said.
In a sign of public unease, a bang caused by a tyre bursting triggered a bomb scare that sent police cars rushing back to the scene hours after the attack.
"The president has said the nation and the people should not be scared and should not be defeated by acts of terror," said palace spokesman Ari Dwipayana.