The largest single storehouse of TAPI and related information is Microsoft. The following links are to the TAPI resources that Microsoft provides. Note that if you are having problems accessing Microsoft's site, make sure you are using Internet Explorer.
The MSDN Platform SDK is the primary resource of TAPI developers. It contains the TAPI specification and a useful collection of samples and tools, however be warned that the download is several hundred megabytes. If you have an MSDN subscription, then you should have the Platform SDK on CD. You can also order the CD from Microsoft free of charge.
Platform SDK Samples
The Platform SDK TAPI Samples are very useful to people starting with TAPI. There are several TAPI 2.x C++ samples, including a simple TSP, a Datamodem app, a Dialer app, and an Automated Call Distribution program. TAPI 3.0 samples are in C++, VB, and Java, and include an Answering Machine, a CallHub, and Incoming and Outgoing call examples. Note that if you have problems compiling make sure you are using the \Include\ and \Lib\ directories from the SDK. Note that if the samples still do not compile properly you should download the Platform SDK straight from MS and get the entire Build Environment.
The TAPI 2.2, TAPI 3.1, and TSPI Specifications fully describe each TAPI function, structure, message, and constant. Make sure that you read more than just the specification. The sections entitled "Using the TAPI 2.2 Programmer Reference" and "TAPI 2.2 Overviews" are quite helpful for both new and experienced developers. They are better at describing the TAPI paradigm and its fundamentals. Please note that TAPI 1.4, 2.0, 2.1, and 2.2 are very similar. Even though the specification is titled for 2.2 you can still use it to write TAPI 1.4 applications. The same thing go for the difference between TAPI 3.0 and 3.1. The specification is included in the Platform SDK, is part of the MSDN Library, and is available online.
TAPI declarations are provided in C++ in Microsoft Visual C++ in the file tapi.h. AFAIK, there are no official TAPI 2.x declaration for any other language, although many of the 3.0 constant declarations (available in several languages) may be the same (see the Platform SDK Samples). There are some developer-written 2.x VB declarations available (see "FAQs and Other Sites"). Constants are normally declared as 32-bit unsigned integers, are often flags, and they are quoted in hex. Error codes are not "-2147483595" but "0x80000035", which you can then look up in tapi.h (LINEERR_INVALPOINTER).
Unimodem is a TAPI Service Provider that turns your Modem into a TAPI device. Unimodem/V (called Unimodem5 in Windows 2000/XP) is a later version that also allows gives Voice Modem devices the media mode _AUTOMATEDVOICE, the ability to play and record .wavs and DTMF, and the ability to receive CallerID. Unimodem/V is available for all OSs except NT4 (Windows 95 needs an upgrade). If you are planning on using TAPI with a modem, be you should ensure that you are using the latest .inf installation/configuration file from your modem manufacturer. Most manufacturers have website where you can download these drivers.
TAPI 2.1 upgrade for Windows 95
Every version of Windows 9x supports TAPI 2.1, but Windows 95 requires an upgrade. That upgrade was provided in the original TAPI 2.1 SDK. Since then the TAPI SDK has been integrated into the larger Platform SDK.
For people who are wanting to play or record .wavs over the modem, you may be interested in SAPI, the Speech API. It is meant primarily for speech recognition, but don't let that scare you off. Download the SAPI SDK and take a look, especially the Answering Machine samples (C++ and VB). There have been some reports of problems compiling the samples, I have not tested them.