Faits: A. Par jugement du 24 mars 2011, le Tribunal correctionnel de la Broye et du Nord vaudois a notamment libéré X._ des chefs d'accusation de lésions corporelles simples qualifiées, de mise en danger de la vie d'autrui, de rixe et d'agression et l'a condamné à une amende de 100 fr. pour contravention à la LStup. Il a ordonné la relaxation immédiate de X._ détenu depuis 267 jours, pour autant qu'il ne doive pas être détenu pour une autre cause. Le Ministère public a fait appel contre ce jugement qu'il a toutefois retiré. X._ n'a pas formé d'appel ou d'appel joint. Le jugement de première instance est devenu définitif et exécutoire. B. Le 9 mars 2012, X._ a adressé au Tribunal d'arrondissement de la Broye et du Nord vaudois une demande d'indemnité fondée sur l'art. 429 CPP dans laquelle il a conclu à l'allocation d'un montant de 75'750 fr. 20. Par décision du 21 mars 2012, le Tribunal d'arrondissement de la Broye et du Nord vaudois a alloué à X._, à la charge de l'Etat de Vaud, une indemnité de 17'053 fr. 20 pour ses frais de défense ainsi qu'une indemnité pour tort moral de 40'000 francs. C. Par jugement du 3 juillet 2012, la Cour d'appel pénale du Tribunal cantonal vaudois a admis l'appel formé par le Ministère public et a annulé la décision de première instance. D. X._ forme un recours en matière pénale et un recours constitutionnel subsidiaire contre ce jugement. Il conclut, sous suite de frais et dépens, à l'annulation du jugement attaqué et au renvoi de la cause à l'instance précédente pour nouvelle décision au sens des considérants. Il sollicite par ailleurs l'assistance judiciaire. Invités à déposer des observations sur le recours, la cour cantonale y a renoncé en se référant aux considérants de son jugement, alors que le Ministère public a conclu à son rejet.