본관은 강릉(江陵). 김득원(金得元)의 증손으로, 할아버지는 김홍주(金弘柱)이고, 아버지는 김시현(金始炫)이며, 어머니는 한부제(韓富齊)의 딸이다.
1732년(영조 8) 정시 문과에 병과로 급제하고, 창녕현감·평산부사·지평(持平)이 되었다. 이듬해 정언(正言)이 되고 수찬(修撰)·교리(校理)를 거쳤으나, 1737년에 재상(宰相)을 모욕하였다 하여 파직되었다.
1745년 사간과 집의(執義)를 역임하였다. 1747년 동래부사를 거쳐, 1749년 승지가 되었으며 이어 대사간에 임명되었다. 1757년 정성왕후 김씨가 죽자 고부사(告訃使)로 청나라에 가서 부음을 전하였다. 1764년 양주목사로서 민폐의 유무를 아뢰었으며, 일자(一資)를 올려받았다. 뒤에 대사성·도승지·한성부부윤 등을 거쳐, 1768년 공조판서에 이르렀으나 곧 사직하였다.