You CAN use ISAPI if you take a few precautions. The first requirement is that you must put a TIB_Session component on the datamodule and set it first in the creation order. Then, all data access components for that session must reside on that single module.
I suggest that during development that you use CGI until you have it working how you like because it is much more difficult to update a DLL than a CGI. You will of course need to be careful so that context from a previous session does not bleed into a subsequent session after converting from a CGI to an ISAPI.
Where server licensing is concearned, I think you may also need to get an Internet license as well. I tend to disagree with the sales person I spoke to about this but you may want to make double sure. I think the "Internet" license is so that you can get a database connection over the Internet using a path such a http://www.mydomain.com:d:/ibdb/MyDB.GDB rather than use a local connection on your LAN to serve out information over the Internet using your own web-server.
Keep in mind that each connection to your ISAPI DLL will result in a single connection to the database. I believe that it is possible to do some sort of a mutex on the number of sessions an ISAPI will keep alive. If it gets to a certain limit then it will queue up requests instead of generate new sessions. This is desirable to prevent the database from getting bombarded such that it is unable to quickly service requests and falter to its knees. Better to have the bottleneck at the web-server end rather than your database getting
In this way you could control the load to match the licensisng of your server as long as you only had a single ISAPI for the whole project. If you had more ISAPI modules then you could balance them out too.