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