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