본관은 광산(光山). 자는 구경(久卿), 호는 척약재(惕若齋). 아버지는 대광(大匡) 김정(金鼎)이다.
1371년(공민왕 20)에 문과에 급제하여 전교주부(典校主簿)·예의총랑(禮儀摠郎)을 역임하고, 1390년(공양왕 2)에 사헌장령(司憲掌令)이 되었으나 설화(舌禍)를 입어 지곡주군사(知谷州郡事)로 좌천되었다가 그 해 10월에 강원도염문계점사(江原道廉問計點事)를 지내고, 1392년에 사헌집의(司憲執義)가 되었다.
조선이 개국되자 판전교시사(判典校寺事)가 되고, 1395년(태조 4)에는 명나라에 들어가 억류된 사절 유순(柳珣) 등을 송환시키는 데 성공하였다. 그러나 표전(表箋)의 내용이 불공하다 하여 명나라에 불려가 억류되었다가, 곧 풀려나 현지에서 조선 조정으로부터 광산군(光山君)으로 봉해졌다.
뒤에 다시 다른 일로 인해 양쯔강(揚子江)으로 귀양갔다가 1397년 유배지에서 사망하였다. 태종 때에 이르러 의정부찬성사로 추증되었으며 김약항의 자손들도 다시 등용되었다.