본관은 광산(光山). 아버지는 광산군(光山君) 김자빈(金子贇)이고, 태종의 장남인 양녕대군(讓寧大君)의 장인이다.
1383년(우왕 9) 문과에서 장원급제해 예의좌랑(禮儀佐郎)을 지냈다. 조선 개국 후 태종과 동방(同榜)이라는 인연으로 태종의 우대를 받았다. 1401년(태종 1) 판봉상시사(判奉常寺事)로서 의순고별좌(義順庫別坐)가 되었을 때, 태상왕(太上王: 태조)이 명나라 사신을 위해 베푼 연회에 참석하기 위해 역리(驛吏)의 말을 빼앗아 쓴 사건으로 대간(臺諫)의 탄핵을 받고 파면되었다. 1404년(태종 4) 이조전서(吏曹典書)가 되었고, 이듬해 성절사(聖節使)로 명나라에 다녀왔다. 그러나 명나라 체재 중 상업 행위를 한 사건이 탄로나 대간의 탄핵을 받고 파직되었다.
1407년(태종 7) 세자 양녕대군을 사위로 맞이하면서 좌군동지총제(左軍同知摠制)에 오르고, 이듬해 판한성부사(判漢城府事)로 사은사가 되어 명나라에 다녀왔다. 1409년(태종 9) 예조판서가 되고 광산군(光山君)에 봉해졌으며, 이어 대사헌 · 참찬의정부사(參贊議政府事) · 예문관대제학 겸 판의용순금사사(藝文館大提學兼判義勇巡禁司事) · 의정부찬성(議政府贊成) 등을 지냈다.
1418년(태종 18) 세자궁에 여자를 출입시킨 문제로 대간의 탄핵을 받아 의금부에 하옥된 후 직첩을 몰수당하면서 죽산으로 부처됨과 동시에 세자와의 인연이 끊겼다. 곧 이어 아들 김경재(金敬哉)와 함께 나주로 이배되었고, 이후 대간의 집요한 추가 처벌 요청이 있었으나 청주 · 연기 등지로 안치됨에 그쳤다.
1425년(세종 7) 5월 『태종실록(太宗實錄)』의 편찬을 위한 사초 수집 때 화재로 인한 소실로 사초를 제출하지 못해 백은(白銀) 20냥과 자손금고(子孫禁錮)의 처분을 받았다. 양녕대군이 특별히 세종에게 용서를 청했지만 징은(徵銀)만 면제받았다. 1431년 세종에 의해 아들 김경재의 서용이 거론되었으나 안숭선(安崇善) 등의 반대로 좌절되었다. 뒤에 신원되어 좌의정에 추증되고, 광산군의 군호도 회복되었다.