본관은 안동(安東). 자는 위경(衛卿), 호는 상곡(相谷). 좌의정 김사형(金士衡)의 증손으로, 할아버지는 김승(金陞)이고, 아버지는 김종숙(金宗淑)이며, 어머니는 이양직(李良直)의 딸이다.
1447년(세종 29) 생원이 되고, 1454년(단종 2) 문음으로 선공감녹사가 되고, 곧 전농시직장(典農寺直長)이 되었다. 1458년(세조 4) 통례문봉례랑(通禮門奉禮郞)으로 승진하고, 1462년 종부시소윤(宗簿寺少尹)이 되었다.
1464년 경차관으로서 경기도에 파견되어 여러 읍의 옥사(獄事)에 대한 관리실태를 조사하여 보고하는 데 공헌하고, 장령(掌令)이 되었다. 1477년(성종 8) 첨정(僉正)으로 식년 문과에 병과로 급제하는 등 관료생활을 하면서 꾸준히 학문에도 힘썼다.
그 뒤 동부승지·좌부승지·도승지·대사간 등을 두루 역임하고, 1482년 형조참의가 되었다. 이듬해 경기관찰사를 거쳐 1484년에 병조참판·수지중추부사, 1487년에 형조판서가 되었다. 딸이 후궁이 되자 권력을 누리기도 하였다. 시호는 효소(孝昭)이다.