You might try not using an API. git is structured as a suite of utilities at different levels of abstraction. You should be able to build a comprehensive set of utilities which work by calling out to these utilities and processing their output. Many of the high-level git commands are shell scripts or perl scripts which do just this, so you have plenty of examples in the git source itself to use as examples.
Good examples to start with:
magit : git interface for emacs written in emacs lisp
git gui : tcl, comes with git
gitk : tcl, also comes with git
gitview : python, comes with git in the contrib directory.
tig : C, text-mode history browswer for git.