No-one was believed to have died in the dramatic incident, which happened in a mountainous region of southeastern Switzerland.
Photos posted on social media showed at least two carriages hanging from the track. Passengers said they had fallen some fifteen feet over the ravine.
According to the operator of the narrow-gague line, Rhaetian Railway, the accident happened near Tiefencastel, a village just in the Graubuenden mountains, over 30 miles northwest of the St Moritz ski resort.
Police spokesman Daniel Zinsli told Radio Grisha that 60 firefighters, eight ambulances and four helicopters were in attendance.
Local broadcaster Tele Sudostschweiz tweeted that all the passengers had been rescued and the coaches secured:
Alle Passagiere sind gerettet. Nun werden die Zugwagen gesichert. BILD: Marielle Hunger pic.twitter.com/IqpnMIMiyT
Richard Peters from Basel, who was with his wife and granddaughter on the train, told Swiss news organisation Blick that passengers were at first told to move into the rear carriage, before being evacuated from the train.
He described how between five and ten passengers stuck in the derailed carriages were rescued by helicopter.
Uninjured passengers had to walk the kilometer back to Tiefencastel, passing through a 300m tunnel en route. It’s believed about 200 people were on board the service, which is popular with tourists.