본관은 언양(彦陽). 자는 천용(天用). 할아버지는 김절(金晢)이고, 아버지는 문경현감 김남갑(金南甲)이며, 어머니는 관찰사 홍득일(洪得一)의 딸이다.
1675년(숙종 1) 생원 · 진사에 모두 주1, 1691년 증광 문과에 병과로 주2
소론에 속하였기 때문에 남인들이 집권하던 당시 별로 뚜렷한 벼슬을 하지 못하다가, 1694년 이후 가주서(假注書)부터 시작하여 전적(典籍) · 감찰 · 예조정랑 · 병조정랑을 지내고, 정언(正言)이 되었을 때는 호서지방의 군전(軍田)에 대한 폐해를 상소하였다.
1697년 주3 이어 문학 · 장령(掌令) · 군자시정(軍資寺正) · 봉상시정(奉常寺正) · 사서(司書) 등을 거쳐, 1703년 필선(弼善)이 되고 사복시정(司僕寺正), 헌납(獻納) · 사간 · 집의(執義) · 사성(司成) · 보덕(輔德) · 동부승지 · 병조참의 · 호조참의 · 예조참의 · 병조참판 · 동지의금부사 · 공조참판 겸 부총관 등을 지냈다.
외직으로는 안주부사 · 의주부윤 · 광주부윤 · 강원도관찰사 · 풍덕부사 · 안변부사 등을 지냈다. 1708년 동지부사를 거쳐 1711년 강원도관찰사가 되고, 1721년(경종 1) 사은부사로 청나라에 다녀온 뒤 승지가 되었다.
성품은 단아하고 서(書) · 사(史)에 몰두하였으며 일처리에 민첩하였다. 내직과 외직을 역임할 때 많은 업적이 있었는데, 특히 외직으로 나갔을 때는 선정을 베풀어 그곳 주민들과 조정으로부터 칭송을 받았다.