Its representatives took the decision at a meeting in the Turkish city, Istanbul.
The aim of the talks is to start the process of setting up a transitional government to end the war in Syria.
The three-year conflict has claimed the lives of more than 100,000 people.
An estimated two million people have fled the country and some 6.5 million have been internally displaced.
Of the delegates who voted, 58 were in favour, 14 were against, while one abstained.
The BBC’s Jim Muir in Beirut says Western powers will be relieved at the vote, although it is less than the display of unanimity the advocates of the talks had hoped for.
“While the Yes vote of 58 made up a substantial majority of the 73 who took part, it’s less than half of the 120-strong general assembly. That means that substantial parts of the coalition stayed away in disapproval of the venture.” Muir said
Syrian opposition figures had earlier expressed reluctance to go to Switzerland unless Syrian President Bashar al-Assad was excluded from any future transitional government.
Syria says there cannot be any pre-conditions.
Last week, Syria’s National Reconciliation Minister Ali Haidar said no-one should expect a breakthrough at the talks, adding: “The solution has begun and will continue through the military triumph of the state.”
However, Syria on Friday did offer a prisoner exchange with rebels and Foreign Minister Walid Muallem said he had also presented a ceasefire plan for the second city Aleppo during talks with his Russian counterpart, Sergei Lavrov.
US Secretary of State John Kerry had urged the opposition to join the 21 January talks.
“It is about establishing a process essential to the formation of a transitional governing body with full executive powers, established by mutual consent,” Mr Kerry said.
Mr Lavrov is keen for Iran to be part of the peace talks, but Mr Kerry has said that Tehran must first agree to the Geneva I communique which calls for a political transition in Syria.