In February 2014, it was announced that Ryan was cast as John Constantine in NBC’s pilot for Constantine. He starred in all 13 episodes of the series’ only season. He reprised his role in a crossover episode of The CW’s Arrow, as well as the 2017 animated film Justice League Dark. On 8 January 2017, The CW announced an animated series of Constantine: City of Demons on the CW Seed app with Ryan confirmed to reprise the character. He later reprised the role in several episodes of the third season of Legends of Tomorrow. Ryan was promoted to series regular for the fourth season of Legends of Tomorrow.
In the 2015 production of Helen Edmundson’s adaptation of Thérèse Raquin at the Roundabout Theater at Studio 54 he played Laurent opposite Keira Knightley, Judith Light, and Gabriel Ebert.
In August 2017, he appeared on stage at the Donmar Warehouse in the play Knives in Hens by David Harrower and directed by Yaël Farber.