A primeira e principal diferença entre eles é que, na maioria das APIs, há uma solicitação seguida por uma resposta. Nenhuma solicitação é necessária para um webhook, apenas envia os dados quando estão disponíveis.
Visualização simples:
A API é uma interface para seus dados em example.com. A API é usada do servidor na plataforma example.com e pode ser usada para listar, criar, editar ou excluir itens.
Webhooks são chamadas automatizadas de example.com para o servidor acionadas quando um evento específico acontece em example.com. Por exemplo, quando uma tarefa é concluída e você deseja saber sobre isso em tempo real, faremos uma solicitação POST para o URL que você registrou para o webhook EVENT.COMPLETED em sua conta de exemplo.
Então, em poucas palavras: a API é onde você diz coisas para example.com e os Webhooks é onde example.com conta para você.
Olhando mais profundamente:
SaaS é um conceito - a idéia de software que existe na nuvem e o cliente geralmente é um navegador. Um aplicativo SaaS é definido pelas funções que ele pode fornecer a um usuário (por exemplo, o Salesforce fornece um banco de dados que pode ser usado para armazenar informações do cliente). As funções disponíveis são determinadas pelo objetivo do aplicativo (por exemplo: CRM, Email Blaster, CMS etc.).
Uma API é uma maneira de os aplicativos SaaS serem conectados a outros aplicativos por meio de um método de comunicação comum (ReST, SOAP, JSON etc.). Uma API não pode falar diretamente com outra API. Uma API pode ser usada por um aplicativo ou middleware codificado que atua como uma ponte entre duas APIs e executa o encadeamento de execução. Por exemplo - o NetSuite e o Salesforce têm uma API SOAP, mas para eles se comunicarem - você deseja usar um software de middleware que possa interagir com os dois sistemas e ser configurado para obter novos registros de contato através da API do Salesforce e enviar novos registros para o NetSuite através é API a cada hora.
O Webhooks é outro protocolo de comunicação para aplicativos SaaS que permite a comunicação entre aplicativos, mas simplesmente usando HTTP POSTS para controlar o encadeamento de execução. Os Webhooks permitem que um aplicativo fale diretamente um com o outro, sem usar o middleware. Por exemplo - quando você envia um formulário ao WuFoo, ele pode ser configurado para iniciar um HTTP POST de webhooks para outro serviço e passar alguns valores de campo do envio do formulário. Os webhooks também podem ser usados em conjunto com uma API - por exemplo, depois que o webhook notifica o outro aplicativo sobre o registro do ID X, esse aplicativo pode usar uma API para se comunicar com o serviço para verificar os novos valores de campo ou modificar um status de uma gravação.
É difícil ter uma API ou webhooks sem ter um aplicativo SaaS. No entanto, você pode facilmente ter um aplicativo SaaS que não use webhooks ou uma API (pública). Da mesma forma, dependendo das funções do seu aplicativo SaaS, você pode optar por usar webhooks OU uma API.