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