본관은 안동(安東). 자는 대관(大觀). 승지 김준원(金俊元)의 현손으로, 할아버지는 김수기(金壽基)이고, 아버지는 김담(金湛)이며, 어머니는 최인(崔潾)의 딸이다.
1735년(영조 11) 증광문과에 병과로 급제하여 1741년(영조 17) 지평(持平)이 되었다.
이듬해 정언(正言)을 거쳐 장령(掌令)·필선(弼善)·헌납(獻納)을 역임하고 1755년(영조 31)에 서장관이 되었다. 이듬해 사간에 이어 1759년에 승지, 1760년에 황주목사, 1766년에 회양부사(淮陽府使)가 되었다.
1769년(영조 45) 도승지가 되고 이어 병조참판이 되었다. 1783년(정조 7) 호조판서(戶曹判書)에 임명되었으나 부임하지 못하고 그해 세상을 떠났다. 편저로는 『간독(簡牘)』이 있다.