본관은 강릉(江陵). 자는 사정(士精), 호는 도계(陶溪)·손곡(損谷). 김득원(金得元)의 증손으로, 할아버지는 김홍주(金弘柱)이고, 아버지는 판서 김시환(金始煥)이며, 어머니는 유정기(兪鼎基)의 딸이다.
어려서부터 글을 잘 지었으며, 13세 때 영평(永平)의 『금수정기(金水亭記)』를 지어 신동이라는 평을 들었다.
1723년(경종 3)에 진사가 되고, 그해 정시 문과에 장원한 뒤 사서(司書)가 되었으며, 이어서 1727년(영조 3)에 병조좌랑이 된 뒤 정언(正言)·부수찬(副修撰)·부교리(副校理)·헌납(獻納)·응교(應敎)를 거쳐, 1734년 부평부사(富平府使)가 되었고, 1736년에는 대사간이 되었다.
이어서 승지·대사성을 거쳐 1744년에 경상도관찰사에 임명되었다. 그 뒤 형조참판·대사헌과 병조·이조·공조의 참판을 차례로 역임하고, 1752년 병조판서가 되었으며 예조판서·좌빈객(左賓客)·판의금부사를 거쳐, 1755년 이조판서를 역임하였다. 문장에 능하였으며, 특히 소장(疏章)을 잘 지어 당대에 이름이 높았다. 시호는 문헌(文憲)이다.