Democratic Rep. Pat Ryan has secured a full term in Congress after narrowly defeating Republican state Assemblyman Colin Schmitt in the race for New York’s 18th Congressional District.

Schmitt called Ryan to concede early Wednesday morning. Ryan declared victory during a speech in Kingston shortly after.

The district Ryan won, NY-18, includes parts of Ulster, Orange and Dutchess counties. It was one of three competitive congressional races across the Hudson Valley.

During the campaign, President Joe Biden visited Poughkeepsie to announce a $20 billion investment by IBM, which Ryan says he is proud of.

“[Biden has] been delivering consistently for the American people. And when he came to the Hudson Valley, he announced a $20 billion investment,” Ryan told Errol Louis on “Inside City Hall” Wednesday night. “We were proud to have him come.”

Ryan’s November general election victory is his second in the past three months. He won a special election in August for a neighboring seat that was vacated by then-Rep. Antonio Delgado when he became lieutenant governor.

“Our message from our August race stayed consistent. We talked about fighting for freedoms — reproductive freedoms, voting rights. We talked about fighting for safety and fighting for democracy,” Ryan said.

Ryan is a West Point graduate who served two tours in Iraq. As a member of the military, he took an oath to “support and defend [the] Constitution from enemies foreign and domestic,” he said. Ryan said Wednesday he felt the Jan. 6 riot went against that oath.

“To see fellow Americans storm the Capitol, kill law enforcement and undercut trust in our elections, we cannot stand by and let that happen. And I think that needs to transcend Democrat, Republican, independent. That is an American issue,” Ryan said.

And he has a harsh message for those who stormed the U.S. Capitol.

“Honestly, I think they are traitors,” Ryan said. “I think that they have conducted traitorous acts that, by any definition, undercut our whole system outlined explicitly in our Constitution. So we have to call that out when we see it. Because once you let that into the world and the ecosystem, it spreads, and we’re seeing that.”

Ryan will be sworn in as a member of the 118th Congress on Jan. 3, 2023.