자는 태(泰). 태종무열왕의 9세손으로, 증조부는 상재(上宰)를 지낸 이찬(伊飡) 김주원(金周元), 할아버지는 시중(侍中)을 지낸 소판(蘇判) 김종기(金宗基), 아버지는 시중을 지낸 파진찬(波珍飡) 김장여(金璋如)이며, 김양(金陽)의 사촌형이다.
822년(헌덕왕 14) 당나라에 건너가 숙위(宿衛)하고 1년 뒤에 귀국하였는데, 이때 당나라의 목종(穆宗)으로부터 금자광록대부 시태상경(金紫光祿大夫試太常卿)의 벼슬을 받았다. 다만 『삼국사기(三國史記)』 신라본기에는 그가 당나라에 간 해가 825년이라 하였다.
그는 귀국 즉시 사명을 잘 수행한 공으로 남원태수를 제수받고, 그 뒤 여러번 승진하여 강주(康州: 지금의 晉州)의 대도독에 이르렀으며, 얼마 뒤 이찬에 올라 상국(相國)을 겸하였다.
839년(민애왕 2) 정월에는 대장군이 되어 군사 10만을 거느리고 김양 등이 지휘하는 김우징(金祐徵: 뒤의 神武王)의 군사를 대구에서 방어하다가 실패하여 정계에서 은퇴하였다.
그 뒤 소백산으로 들어가 승려들과 함께 지내다가 849년 8월 27일 산재(山齋)에서 47세로 죽었다. 그의 무덤은 나령군(奈靈郡: 지금의 경상북도 영주)에 있다.