본관은 의성(義城). 자는 용회(用晦).
1260년(원종 1) 문과에 급제하였다. 1269년 임연(林衍)이 왕을 폐하고 안경공(安慶公) 왕창(王淐)을 세우자, 원나라는 원나라에 있던 세자 왕심(王諶: 충렬왕)을 동안공(東安公)으로 책봉하고, 군사를 보내어 임연 일당을 토벌하고자 하였다.
이 때 성절사(聖節使)의 서장관으로 원나라에 가서, 세자가 공(公)으로 책봉되면 임연 일당에게 이 사실이 도리어 이용당하게 되며, 따라서 국내정세가 불리해질 것이라고 주장해 이 계획을 중지하게 하였다.
1270년(원종 11) 금주방어사(金州防禦使)가 되었을 때, 밀성 사람 방보(方甫)가 공국병마사(攻國兵馬使)를 자칭, 난을 일으켜 근처의 군현을 선동해 세력을 떨쳤다. 또, 부사 이이(李頤)를 죽이고 진도를 거점으로 활약하던 삼별초와 결탁하려 하였다.
이에 경주판관 엄수안(嚴守安)과 함께 군사를 내어 소극적인 자세를 취하던 안렴사(按廉使) 이숙진(李淑眞)을 회유해 난군을 공격하였다. 그러자 밀성의 도둑 무리는 괴수 방보의 목을 베어 항복해 난은 평정되었다. 또한, 삼별초의 잔적들이 군사를 나누어 경상도로 쳐들어 올 때 금주에서 이를 격퇴하였다.
그 공으로 예부낭중이 되고, 곧 이어 도호부사가 되었다. 1275년(충렬왕 1) 총랑(摠郎)이 되었다가 전라도부부사(全羅道部夫使)가 되어 부임하던 중, 청호역(菁好驛)에서 전라도안찰사 노경륜(盧景綸)이 역을 통해 서울에 보내는 내선(內膳)의 대부분이 사선(私膳)인 것을 보고, 몰수해 국고로 돌렸다.
그런데 이 사실이 무고가 되어, 관직을 박탈당하고 양주부사(襄州副使)로 좌천되었다. 그러나 다시 승진해 좌간의대부(左諫議大夫)에 이르렀고, 밀직학사(密直學士) 등 청요직을 역임하였다.
충선왕이 세자로 원나라에 있을 때, 춘궁시독(春宮侍讀)으로 시종해 벼슬이 정당문학에 이르렀다. 그러나 무고를 입게 되자 병을 핑계로 귀국을 자청하고 사직하였으나, 뒤에 다시 찬성사에 올랐다. 글씨를 잘 썼으며 특히 예서에 능하였다 한다.