본관은 강릉(江陵). 자는 사순(士順). 김득원(金得元)의 증손으로, 할아버지는 김홍주(金弘柱)이고, 아버지는 병조판서 김시형(金始炯)이며, 어머니는 이광조(李光肇)의 딸이다.
1733년(영조 9) 알성 문과에 병과로 급제하여 승문원에 등용되고 교리(校理)가 되었다.
1735년 사관(史官)이 되어 사초(史草: 時政을 기록한 初稿)의 작성에 종사하였으며, 1741년 홍상한(洪象漢)을 대신하여 관동어사로 파견되었다. 곧 지평(持平)·장령(掌令)을 거쳐, 1743년 서장관으로 청나라에 다녀왔다. 이듬해 응교(應敎)로서 궁중에서 사용할 가인례(家人禮)에 대해 진술하였다.
1746년 경상도심리사(慶尙道審理使)를 역임하고, 이듬해 바카라 롤링간이 되었다. 1748년 형조참의로 있으면서 참핵사(參覈使)로 봉황성(鳳凰城)에 가서 압수한 것을 영수하는 것과 잃어버린 은(銀)에 대한 두 안건을 추고하도록 하였다. 이듬해 동지의금부사(同知義禁府事)와 예조참판이 되었다.
1750년에 형조참판을 지냈다. 그 해에 어염세를 균등히 하기 위하여 6도에 삼사(三使)를 파견할 때 경기·황해 두 도의 균세사(均稅使)로 나가 민정을 살폈다. 풍모와 지기가 뛰어났고 직언도 서슴지 않았다.