본관은 광산(光山). 출신지는 해양현(海陽縣). 아버지는 좌복야(左僕射) 김위(金位)이다.
1170년에 명종이 즉위할 때 우중금(右中禁)으로 어가를 수종(隨從)하여 대정(隊正)·교위(校尉)가 되었다가 1174년(명종 4)에 조위총(趙位寵)의 난 때 공을 세워 별장(別將)에 올랐다.
다시 우군병마녹사(右軍兵馬錄事)로 남도의 반란을 토벌하여 낭장이 된 뒤, 1181년에 운중도감세사(雲中道監稅使)가 되었으며, 1188년에는 전라도안찰사를 역임하였다.
1196년에 장군으로 급사중(給事中)을 겸하였고, 형부시랑(刑部侍郎)·지합문사(知閤門事)를 거쳐 대장군이 되어 동번(東蕃)을 수비하였다.
1207년(희종 3)에 상장군에 올라 형부상서(刑部尙書)·선군별감(選軍別監)이 되고, 이듬해에는 추밀원부사 좌산기상시(樞密院副使左散騎常侍)를 거쳐 동지추밀원사(同知樞密院事)가 되었으며, 뒤에 수사공 좌복야 판삼사사(守司空左僕射判三司事)에 올랐다.
1212년(강종 1)에 참지정사 판예부사(參知政事判禮部事), 이듬해에 문하시랑평장사 판병부사(門下侍郎平章事判兵部事)가 되었다가 1215년에 치사하였다. 성품이 바르고 욕심이 없으며 청렴하다는 평이 있었다. 시호는 경간(景簡)이다.