본관은 강릉(江陵). 자는 사창(士昌)이고, 아버지는 판서 김시환(金始煥)이며, 어머니는 유정기(兪鼎基)의 딸이다.
1705년(숙종 31) 증광 문과에 병과로 급제하여 관계에 진출하였다. 1712년에 정언(正言)에 임명된 이래 홍문관·사헌부의 청요직(淸要職)을 두루 거쳤다.
경종이 죽고 영조가 즉위하자 고부 겸 주청사(告訃兼奏請使)의 서장관(書狀官)에 발탁되어 청나라에 다녀왔다. 1728년(영조 4) 무신란(戊申亂)이 일어나자 광주부윤(廣州府尹)으로 남한산성을 방어하는 책임을 맡았다. 그 뒤 여러 차례 승지·대사간 등 요직을 거쳤으며, 특히 학식과 덕망이 있어 다섯 차례에 걸쳐 대사성에 임명되기도 하였다. 1736년 승지로 재직 중 죽었다.