The story is set in a world where two kingdoms, Kildenree and Bayern, are separated by a vast forest and a mountain range.
Princess Anidori-Kiladra Talianna Isilee, called Ani, is born the Crown Princess of Kildenree but does not open her eyes for three days. On the third evening, the queen's sister arrives and rouses the infant with songs and stories. The aunt becomes Ani's companion, teaching her about three gifts of language: people-speaking, the power to persuade others, which the queen possesses; animal-speaking, which the aunt practices; and nature-speaking, a rare gift involving wind, fire, and trees. The aunt identifies Selia, daughter of the palace key-mistress, as having people-speaking and warns Ani to watch her. Under the aunt's guidance, Ani learns to speak with swans. When Ani is five, the aunt departs for the northern wilds.
After the aunt leaves, a nurse-mary reports Ani's animal speech to the queen, who bars Ani from all animals and takes away her puppy. The queen informs Ani that her aunt has died. At seven, Ani tries to run away one night; Talone, Watcher of the East Gate, finds her by the pond and carries her home. A dangerous illness follows, and Ani is kept under constant supervision.
As a teenager, Ani feels inadequate as crown princess. Her happiest moments are rides on Falada, a white stallion she bonded with at age 11 by hearing him speak his name at birth, establishing a silent mental connection. Her father, the king, is her greatest comfort, but he dies after a riding accident. At the funeral, the queen announces that Ani's younger brother Calib will inherit the throne. She reveals she arranged Ani's marriage to the prince of Bayern five years earlier to prevent the larger kingdom from invading, choosing Ani partly because rumors of animal-speaking made her seem unfit to rule. Powerless to refuse, Ani accepts.
A 40-person escort led by Talone accompanies Ani through the Forest separating the kingdoms. Selia, now Ani's lady-in-waiting, grows increasingly hostile. When Ani catches her trying on a royal gown, Selia erupts with resentment, declaring herself no longer Ani's servant. Suspicious incidents suggest someone is trying to kill Ani, and the camp splits between those loyal to Talone and those following Ungolad, a former tradesman's escort.
Near a stream, the mutiny erupts. Ungolad's faction declares Selia their princess, and a loyal guard is killed. Ani flees into the forest and escapes on a riderless horse. After days of wandering, she reaches the cottage of Gilsa, a Forest woman who shelters her and hides her yellow hair under a headscarf. Gilsa's son Finn escorts Ani toward the Bayern capital, where she adopts the name "Isi" and imitates the local accent.
At the walled capital, Ani spots mutineer guards scanning the crowd and glimpses Selia strolling the palace corridors in one of Ani's gowns. With no proof of her identity, Ani takes a job as goose girl, herding geese daily with Conrad, a sullen goose boy. She befriends Enna, a spirited chicken-keeper from the Forest, and learns that Forest-born workers face discrimination, denied the javelin and shield marking full citizenship in Bayern. Ani tells the workers stories from her aunt, earning their affection.
On the palace grounds, Ani finds Falada wild-eyed and unresponsive. A young man named Geric appears at the goose pasture with an unruly horse; Ani calms and rides it expertly. Geric, who claims to be a guard to the prince, visits regularly, and they develop a friendship. One afternoon he holds her hand but abruptly pulls away and later sends a letter saying he is betrothed. A postscript reveals Falada has been "taken away." Ani learns Falada is dead and later finds his preserved head mounted above the goose pasture archway.
Standing before the head, Ani speaks Falada's name and hears an echo of his last word, "Princess," resonating where she once heard his voice. Through this echo, she discovers she can hear the wind speak. She returns daily throughout winter, and her ability to interpret the wind grows.
At the wintermoon festival, Ani mistakes a young boy beside Geric for the prince she was meant to marry. Mutineer guards seize Ani, but she sends pigeons into the crowd as a distraction, and Enna summons peace-keepers who free her. Ani confides her full story to Enna, who pledges to help. Conrad, suspicious of Ani's hidden hair, accuses her before the workers of being the girl the foreign guards seek, but Enna defuses the crisis. Ani experiments with directing the wind and discovers she possesses nature-speaking, the third gift her aunt believed was lost.
Spring brings devastating news: Bayern's army is preparing to invade Kildenree based on false intelligence Selia provided. Once Kildenree falls, no one can expose the fraud. That night, Ungolad infiltrates Ani's room with a dagger. Warned by her geese, Ani flees. Ungolad's blade catches her back beneath Falada's mounted head, where she hears "Princess" one last time. She uses the wind to knock Ungolad down and escapes.
Wounded, Ani collapses at Gilsa's cottage after days of walking. She discovers Talone survived the Forest massacre and has been recovering at a neighboring house. At the workers' hall, Enna has already revealed Ani's identity, and the workers volunteer as her guard. The wedding is in two days at a royal estate on Lake Meginhard. At the palace, Ani locates retired prime minister Odaccar, who provides a letter authorizing horses. She retrieves her own gown from Selia's wardrobe and lets her hair fall free. Talone encounters and kills Ishta, one of Ungolad's mutineer guards, in a duel.
Eleven riders depart that night. At the lakeside estate, Ani poses as her younger sister Napralina-Victery arriving for the wedding. The guards admit her but separate her from her escort, delivering her to Selia and Ungolad rather than the king. When Ani finally stands before the king, she reveals her identity; Selia uses people-speaking to cast her as a delusional runaway. Ani learns that Geric is actually the elder prince and her true betrothed. The king, unconvinced by either side, orders his guard to leave Ani alone with the Kildenreans.
Left alone, Selia gloats while Ungolad holds a dagger to Ani's throat. But Geric has led the king behind a tapestry concealing a listening portal, where they overhear Selia and Ungolad confess to everything. Geric and the king burst forth with soldiers. Talone forces his way in and challenges Ungolad, while the workers storm in behind, shouting for "the yellow lady." In the battle, Geric duels Ungolad; Ani uses the wind to stagger him, and Geric delivers the killing blow. Conrad catches Selia fleeing and drags her back.
The king acknowledges Ani as the true princess. Ani confronts the council, dismantling the case for war by citing Kildenree's centuries of peace and the discredited intelligence. She also challenges Bayern's mistreatment of Forest-born citizens. The war is averted. Geric confesses he fell in love with her; he asks if she will have him, and she says yes. The workers receive javelins and shields, forming a new hundred-band. The story closes looking forward: Ani and Geric will wed in the market-square, Falada's head will be buried under the beech tree with a white stone monument, and one day a newborn colt will fall into Ani's arms and speak its name.