본관은 연안(延安). 자는 자헌(子獻), 호는 일재(一齋) · 선동(仙洞). 문정공(文靖公) 김자지(金自知)의 증손으로, 할아버지는 동지중추부사(同知中樞府事) 김수(金脩)이고, 아버지는 안동대도호부사 김원신(金元臣)이며, 어머니는 강석덕(姜碩德)의 딸이다.
1489년(성종 20) 진사가 되었고, 이어 식년 문과에 을과로 급제, 승문원정자에 임용되었다. 1492년에는 유숭조(柳崇祖) · 정여창(鄭汝昌) 등과 함께 호당(湖堂)에서 천문 · 역법을 연구하였다.
1498년 홍문관부교리에 올랐고, 이어서 교리 · 응교 · 전한 · 직제학을 역임하고, 1501년(연산군 7)에 부제학이 되었다. 이어 병조참지가 되고, 동부승지 · 우부승지 · 좌부승지 · 우승지를 거쳐 도승지에 임명되었다.
그 뒤 호조참판에 임명되고 동지성균관사 · 지의금부사 · 홍문관대제학 · 추쇄도감제조(推刷都監提調) 등을 겸하였다.
임사홍(任士洪)과 더불어 갑자사화를 다스려 예조판서에 임명되었다. 당시 연산군의 폭정이 심해져 금표(禁標)를 세워 도성 주변의 백성을 먼곳으로 이주시키고 사냥을 일삼을 때 금표 안내문을 지었고, 추천시(鞦韆詩)로써 연산군에 아첨하였다.
그 뒤 의정부우찬성을 거쳐 판중추부사로서 경상도관찰사를 겸임했고, 연산군에 충성을 서약하는 경서문(敬誓文)을 지어 올리기도 하였다.
그러나 그 뒤 중종반정에 협력해 정국공신(靖國功臣) 2등에 책록되고, 연창부원군(延昌府院君)에 봉해졌다. 이어 감춘추관사(監春秋館事)가 되어 『연산군일기(燕山君日記)』를 편찬하는 데 참여하였다.
그러나 1507년(중종 2) 박경(朴耕) 등이 박원종(朴元宗) 등을 도모하려는 모의에 연좌되어 금산에 유배되었다. 그 뒤 혐의가 풀려 연창부원군으로서 영경연사(領經筵事)를 담당하다가, 1509년에 죽었다.
중종반정 이후 줄곧 연산군 때의 총신이었다는 이유로 사림에 의해 지탄을 받았다. 시호는 문경(文敬)이다.