본관은 경주(慶州). 자는 여원(汝原). 할아버지는 김주신(金柱臣)이고, 아버지는 공조참의 김후연(金後衍)이며, 어머니는 윤항(尹沆)의 딸이다. 숙종의 계비 인원왕후(仁元王后)의 조카이다.
1737년(영조 13)에 음보로 돈녕부참봉이 되었고, 포천군수와 고양군수를 역임한 뒤 1753년 낭관(郎官)으로서 숙종에게 존호를 올리는 데 참여하였다. 1756년 성천부사를 거쳐서 1758년 수원부사가 되었다.
그 뒤 승지와 공조·병조참판 등을 역임하고, 1778년(정조 2)에는 총융사(摠戎使)에 올랐다. 1780년 한성부판윤을 거쳐 형조판서가 되었고, 1781년에는 공조판서에 이르렀다.
1748년 고양군수로 재직할 때, 향교의 제위(祭位)를 양무(兩廡: 文廟 正殿의 좌우쪽에 세워진 동무(東廡)와 서무(西廡))로 하도록 임금에게 직접 건의하여 재가를 받았다. 시호는 효정(孝貞)이다.