1474년(성종 5) 약관으로 성균진사시에 장원을 하고, 1480년 식년문과에 다시 장원을 하였다. 그 해 감찰에 임명되고 사가독서(賜暇讀書)하였다. 이듬해 천추사(千秋使) 홍귀달(洪貴達)의 서장관(書狀官)이 되어 명나라에 갔다. 그 때 명나라 역관에는 우리나라 사람들이 수료병(水潦病)에 걸려서 돌아오지 못하고 고생하는 자가 많았으므로 명나라 예부(禮部)에 건의하여 그들을 치료하게 한 뒤, 모두 귀환하게 하였다. 명나라에서 돌아온 뒤 수찬(修撰) · 교리를 역임하였다.
1486년 부응교로 있을 때 또다시 문과중시에 장원하여 과거제도가 생긴 이후 세 번이나 장원을 한 것은 처음이라며 칭송이 자자하였다. 그 해에 예빈시부정(禮賓寺副正)으로 초배(超拜)되었고, 『여지승람』을 정정하여 『동국여지승람』으로 다시 찬술해내는 데 참여하였다. 이듬해 그 공으로 왕으로부터 녹피(鹿皮)를 하사받았으며, 왕명으로 요동(遼東)에 가서 한어(漢語)를 습득하고 돌아왔다.
1487년 홍문관직제학을 거쳐 이듬해 부제학이 되었으며, 이듬해 동부승지가 된 뒤 예조참의 · 좌승지 · 우승지 · 도승지를 차례로 역임하였다. 1491년 대사헌으로 있을 때 북쪽 오랑캐 침입 사건에 관한 어전회의 중에 영의정을 모욕한 죄로 파면되었으나, 얼마 뒤 다시 등용되어 도승지 · 동지중추부사를 거쳐, 병조 · 예조 · 이조참판을 역임하였다.
1494년 경기도관찰사로 나갔으며, 이듬해 중앙으로 들어와 예조참판 겸 동지춘추관사(同知春秋館事)로 있으면서 『성종실록』 편찬에 참여하였다. 1496년(연산군 2) 병환을 무릅쓰고 정조사(正朝使)가 되어 명나라에 갔다가 이듬해인 1497년에 돌아오던 중에 개성에서 죽었다. 관후(寬厚)한 장자의 풍모를 지녔으며, 문장과 시 · 글씨에 뛰어났다. 저서로 『삼괴당집』이 있다.