Né à Hereford, James est le fils de Tony James, ancien défenseur semi-professionnel du pays de Galles, qui a disputé plus de 500 matches de championnat au cours de passages à Hereford United de Graham Turner, Burton Albion et Newport County. Il est passé par l’académie de Birmingham City avant de faire ses débuts chez les professionnels à St Andrew’s à l’âge de 17 ans, puis de disputer 105 matches avec les Blues, dont 95 en Championship.

Sur la scène internationale, il a honoré sa première sélection avec le pays de Galles contre la Croatie à l’âge de 18 ans, portant son total à 26 apparitions, avec également un but contre le Liechtenstein. En 2024, James a rejoint la France en signant à Rennes dans le cadre d’un transfert estimé à 4 millions de livres sterling, et a disputé 24 matches de Ligue 1.

Lors d’un prêt à Leicester la saison dernière, il a terminé meilleur buteur du club avec 11 buts et quatre passes décisives en 34 matches, remportant les trophées de joueur de la saison décernés par les supporters et les joueurs, ainsi que la récompense de meilleur jeune de la division.