임진현(臨津縣) 출신. 아버지는 상장군을 지낸 김인단(金仁旦)이다.
의종 때 대정(隊正)이 되고 교위·산원을 거쳐 1155년(의종 9)에 우사원외랑(右司員外郎)으로 금나라에 가서 용흥절(龍興節)을 축하하였다.
1174년 (명종 4)에 중랑장이 되고 1181년에 대장군, 1186년에 천우위상장군 판위위사(千牛衛上將軍判尉衛事)에 올랐다. 1187년에 직문하(直門下)로서 조원정(曹元正)을 처벌하자고 요청하였다. 1190년에 추밀원부사(樞密院副使), 1191년에 동지추밀원사(同知樞密院事)가 되었으며, 뒤에 중서문하평장사 판호부사 상주국(中書門下平章事判戶部事上柱國)에 이르렀다. 시호는 원평(元平)이다.