Kaz Brekker is the leader of the Dregs, a gang in Ketterdam. He runs the Crow Club, a gambling house, and at seventeen has already earned a reputation as a major player in the criminal underworld. Kaz’s rivals are many, but he employs his exceptional cunning and ruthlessness to best other gangsters when they try to take him out. After one such episode, a wealthy merchant named Van Eck offers Kaz millions to undertake a risky heist. The mission is to free a scientist, Bo Yul-Bayur, who has been taken captive in Fjerda, a hostile foreign country. Bo Yul-Bayur has invented a drug called jurda parem, which enhances the powers of Grisha, people who have magical powers. Van Eck says the Merchant Council wants to prevent jurda parem from falling into the wrong hands, fearing it could be used to create an unstoppable Grisha army.  

Kaz knows the job is risky if not impossible. No one has ever successfully broken into the Ice Court, the fortress in Fjerda where Bo Yul-Bayur is held. But Kaz can’t resist the challenge and the opportunity for a huge payday. Kaz begins assembling his team of six. He starts with the stealthy Inej, known as the Wraith; Jesper, a skilled marksman, and Nina, a Grisha Heartrender. Kaz, Inej, Jesper, and Nina go to a prison called Hellgate, where they stage a jailbreak to free Matthias. Kaz wants Matthias on the team because he is a former Fjerdan soldier with inside knowledge of the Ice Court. But Matthias was also a drüskelle, a soldier tasked with capturing Grisha. Before his imprisonment, Matthias captured Nina and was transporting her to trial when their ship capsized during a storm. Despite their mutual animosity, the two worked together to reach shore and journey back to civilization, forming a surprising bond. But then, in an effort to prevent Matthias from being killed by Grisha, Nina accused him of being a slaver, which led to his imprisonment. Matthias resents Nina and initially refuses to aid in a mission against his own people. He agrees only because Kaz has secured a pardon for Matthias’s criminal conviction—as a condition of his participation in the heist.  

Kaz recruits a sixth and final member of the team: Van Eck’s estranged son, Wylan, an explosives expert who has also been to the Ice Court. Wylan also serves as an insurance policy for Kaz, in case Van Eck has any notion of reneging on the deal. Wylan and Matthias make a detailed map of the Ice Court, which contains the Fjerdan Royal Palace as well as a high-security prison. Kaz devises a plan to sail to Fjerda and smuggle the team into the Ice Court disguised as prisoners. But the night they are supposed to set sail, they are ambushed by a rival gang led by Kaz’s nemesis, Pekka Rollins. They thwart the attack, but Inej is badly injured. On the voyage, Nina uses her Grisha powers to heal Inej. 

In Fjerda, the group schemes their way onto a prison wagon bound for the Ice Court. Once inside, they must break themselves out without any weapons or tools. Luckily, Jesper reveals that he is a Grisha Fabrikator. He uses his powers to pull iron from the prison bars and fashion lockpicking tools for Kaz. Nina and Kaz go to look for Bo Yul-Bayur, but they get separated. Kaz gets distracted when he finds Pekka Rollins in a cell. Rollins had brought his own team to break out Bo Yul-Bayur, only to be captured by the Fjerdans. After his encounter with Rollins, Kaz reunites with the rest of his team, his shirt covered in blood. From the prison basement, Inej climbs six stories up through the incinerator shaft. Despite the searing heat, she reaches the roof and throws down a rope so the others can follow her up.  

Having escaped the prison, Nina and Inej attempt to infiltrate a holiday celebration at the palace by joining a group of prostitutes imported from Ketterdam for the occasion. The guards detain Inej for not having the right paperwork, but Nina charms her way inside. Still looking for Bo Yul-Bayur, she encounters Jarl Brum, a notorious Grisha hunter and Matthias’s former mentor. Believing that Brum does not recognize her, Nina tries to trick him into revealing Bo Yul-Bayur’s whereabouts. Instead, Brum lures Nina into a cell and locks the door. Matthias appears outside the door with Brum. Brum gloats and commends Matthias for sabotaging the mission. But in fact, Matthias has double-crossed Brum. Matthias overpowers Brum, steals his access key, and frees Nina.  

Nina and Matthias search for Bo Yul-Bayur, only to discover that he has died. Instead, they find his 15-year-old son Kuwei, a Grisha who has been captured and forced to try to recreate the formula for jurda parem. Using his powers, Kuwei destroys the lab and escapes with Nina and Matthias. Kaz saves Nina, Matthias, and Kuwei from being taken by the drüskelle. He blows up the sacred ash tree at the center of the Ice Court, and the four of them escape through an underground spring flowing beneath the tree, almost drowning as they are carried out of the Ice Court.  

Meanwhile, the detained Inej tries to con her way back into the royal celebration, only to have her cover blown by Tante Heleen, her own nemesis from Ketterdam. In a scuffle, Inej manages to swipe Heleen’s diamond and escape the guards with help from Jesper and Wylan. The three of them steal a tank and break out of the Ice Court. The entire gang meets outside and rides the tank toward the port, where their ship awaits, but they are intercepted by a large Fjerdan army and several Grisha under the influence of jurda parem. When all hope seems lost, Nina takes a dose of jurda parem, which greatly enhances her powers. Nina overcomes the soldiers and the Grisha and puts the army to sleep. The group boards the ship and sails toward home. However, the jurda parem is highly addictive, and the withdrawal threatens to kill Nina. 

Van Eck agrees to meet Kaz and the group on a remote island. He gives Kaz a chest full of money, but as soon as Kaz hands over Kuwei, Van Eck reneges on the deal, revealing that he wants the formula for jurda parem for himself so he can build his own army and take over the world. Declaring that Kaz and his crew will not make it off the island alive, he unleashes his own Grisha to attack Kaz’s team. But Kaz had anticipated Van Eck’s betrayal. Before the Grisha can attack, Kaz reveals that he has not actually handed over Kuwei, but Wylan—Van Eck’s son—in disguise. Realizing that he has been duped, Van Eck commands the Grisha to take the money and Inej.  

Back in Ketterdam, Kaz hatches a new plot to save Inej and get revenge on Van Eck. Needing money, he seeks out his old nemesis, Pekka Rollins, to call in a favor. It is revealed that Kaz freed Rollins from his cell in the Ice Court. Rollins smugly agrees to give Kaz a large sum of money in exchange for his shares in the Crow Club. After Kaz leaves, Rollins realizes that Kaz has picked his pocket. The novel ends as Pekka Rollins wonders if Kaz can succeed in besting Van Eck.