본관은 광산(光山). 자는 은경(殷卿). 할아버지는 김원손(金遠孫)이고, 아버지는 강화부사 김수(金洙)이며, 어머니는 권항(權恒)의 딸이다.
1465년(세조 11)에 진사, 그 해 가을 별시 문과에 을과로 급제하였다. 성균관학유 겸 예문관검열(成均館學諭兼藝文館檢閱)에 보임되었으며, 뒤에 군자시주부(軍資寺主簿) · 병조좌랑을 역임하였다. 1470년(성종 1) 재행겸비자(才行兼備者)를 선발할 때 김종직(金宗直)과 함께 뽑혔으며, 1472년 병조정랑이 된 뒤 검상(檢詳) · 사인(舍人)을 거쳐 집의(執義)가 되었다.
1479년 성균관의 사예(司藝)로서 원수(元帥) 윤필상(尹弼商)의 종사관이 되어 건주위(建州衛) 토벌에 참여하였으며, 1481년 사간, 사복시정(司僕寺正)을 거쳐 승정원의 동부승지 · 우부승지 · 우승지 · 도승지와 이조참의를 역임하였다.
이조참의로 재직 중 뇌물을 받았다는 혐의로 탄핵되어, 1487년 충청도관찰사로 전임되었다. 이듬해 동지중추부사(同知中樞府事)로서 판결사(判決事)를 겸한 뒤 경상도 · 강원도의 관찰사, 호조 · 병조의 참판을 거쳐 1491년 대사헌이 되었다.
그 뒤 예조참판을 거쳐 1493년 형조판서를 역임하였다. 세조의 총애를 받았으며, 관리가 되어서는 사람의 뜻을 살피기에 힘써 특별히 마음을 써서 대접하지 않는 자가 없었다는 사관의 평가를 받기도 하였다. 시호는 충목(忠穆)이다.