본관은 의성(義城). 할아버지는 김연일(金燕日)이고, 아버지는 김존성(金存誠)이며, 어머니는 정양생(鄭良生)의 딸이다.
1393년(태조 2) 진사시에 합격, 예문관한림(藝文館翰林)에 임용되고, 태종이 즉위하자 사헌부잡단(司憲府雜端)이 되어 별사전(別賜田)의 신규발급을 혁파시켰다.
1402년(태종 2) 춘장 문과에 동진사(同進士)로 급제하였다. 환관(宦官)과의 반목으로 파직되었다가, 1410년(태종 10) 38세에 사헌부장령에 발탁되고, 이어 의정부사인(議政府舍人)을 거쳐 사헌부집의(司憲府執義)에 올랐다.
1412년 대간(臺諫)의 고신서경법(告身署經法)을 부활시켰고, 함흥에 있는 환왕비문(桓王碑文)의 개찬을 주장하였다. 이어서 충청도도체찰사 박자청(朴子晴)의 부사(副使)가 되어 조운(漕運)의 불편 지역인 태안 일대의 지형을 답사하고 지형도를 작성하여 제출하였다.
이어서 지형조사(知刑曹事)·좌대언(左代言)을 지냈으나, 세종 즉위 때 비위사건에 연루되어 진천에 위리안치되었다. 7년 만에 석방되어 1426년(세종 8) 병조참의에 제수되었다. 함경도 일대의 진보(鎭堡) 설치상황을 현장답사하였고, 1427년 우군동지총제(右軍同知摠制)를 거쳐 경기관찰사를 지냈다.
이듬해 형조·예조의 참판을 지냈고, 특히 외교에 많은 공을 세웠다. 1429년 대사헌에 제수되어 국가기강을 확립하고 상벌제도의 공정한 실시를 시도하는 등, 많은 업적을 남기고 그해 말에 갑자기 죽었다.