I don't know of an open source API in C, though many CVS interface programs just use the command line cvs as a backend.
There are some early implementations of
LibCVS, such as the Perl one.
The
CVS client info provides a description of the actual CVS protocol (copy also
here).