Один из вариантов - создать документацию API из заголовка, используя (например) Doxygen. Очевидно, вы все равно будете отправлять документы вместе с кодом.
Это дает вам два преимущества:
1) Вы не особо беспокоитесь о том, должно ли что-то быть «в документации» или просто «в комментариях в заголовке», потому что изменить одно так же просто, как изменить другое. Так что все идет в документации.
2) Пользователи с меньшей вероятностью начнут читать ваш файл заголовка, потому что они могут быть достаточно уверены, что все интересующее находится в документации. Но даже если они непоколебимы типа «я не доверяю документам, я читаю код», они все равно видят все, что вы хотите, чтобы они видели.
Обратной стороной автоматически сгенерированных документов API является то, что они могут быть кошмаром для поиска, поэтому, IMO, стоит приложить дополнительные усилия для написания действительно хорошей «вводной» документации. Это может быть или не быть частью сгенерированной документации API, в зависимости от того, что вы предпочитаете. Для небольшого API просто список всех функций в "логическом", а не в алфавитном или исходном порядке, описанных в соответствии с тем, для чего они для, а не с тем, что они делают, может значительно упростить получить доступ к документации API. Под «логическим» я имею в виду сначала перечислить часто используемые функции в том порядке, в котором их будет вызывать клиент, с сгруппированными вместе альтернативами, которые «делают то же самое» (например, send и sendTo для сокетов). Затем перечислите менее часто используемые функции и, наконец, непонятные вещи для опытных пользователей и необычных вариантов использования.
Одна из основных трудностей этого подхода, которая может стать препятствием, заключается в том, что в зависимости от вашей организации у вас может быть группа разработчиков документации, и они могут не иметь возможности редактировать заголовок. В лучшем случае они копируют-редактируют то, что вы сделали, а вы вносите изменения и отправляете их обратно. В худшем случае вся идея останавливается, потому что «только команда документации должна писать документацию для клиентов, и она должна быть в стандартном формате, и мы не можем сделать вывод Doxygen в таком формате».
Что касается того, «что еще вы должны учитывать» - вы уже сказали, что будете следовать лучшим практикам, поэтому сложно добавить много :-)
10.11.2008