본관은 의성(義城). 자는 덕휴(德休), 호는 팔오헌(八吾軒) 또는 해촌(海村). 의성 출신. 김득가(金得可)의 증손으로, 할아버지는 김율(金瑮)이고, 아버지는 용양위부호군 김추길(金秋吉)이며, 어머니는 유화(柳華)의 딸이다.
1662년(현종 3) 사마시를 거쳐 1669년 식년 문과에 갑과로 급제, 전적(典籍)·무안현감·직강(直講)·지평(持平)·수찬(修撰)·정언(正言) 등을 지냈다.
수찬 재직시 국가재정에 관하여 각사(各司)의 비용과 내탕비(內帑費)를 줄여 진휼비에 보충하는 일과, 경사(經史)를 열심히 강론하여 치도(治道)를 구하는 일 등 수천언의 소를 올렸고, 정언 재직시에는 당시 형조판서 남구만(南九萬)이 진휼비를 탕감했다고 고발하였다.
1679년(숙종 5) 장령(掌令) 재직시 남인이 청남(淸南)과 탁남(濁南)으로 나누어지면서 논핵(論劾)되어 정의(旌義: 지금의 제주도) 등의 벽지로 쫓겨났다.
1689년 기사환국으로 남인이 정권을 장악하자 복관되어 대사성·집의(執義)·헌납(獻納)·좌승지·강원도관찰사·병조참지 등을 거쳐, 호조참의를 역임하였다. 그 뒤 갑술환국으로 노론이 득세하자 향촌에 물러나서 서사(書史)를 즐기다가 일생을 마쳤다.
관직생활에 있어서 공사를 분명히 하였다. 안동의 백록사(柏麓祠)에 제향되었고, 저서로는 『팔오헌집(八吾軒集)』이 있다.