Websockets. AJAX requires setting up and tearing down the connections on every request. Long polling can mitigate latency in 'receiving' a bit, but websocket is the only way to minimize latency all the time in both directions.
Phoenix Channels (it's implementation of websockets) are so simple to use, ask if you have any questions.
SImplicity of use is simplicity of documentation too.
If it is for real-time communication where latency is important then websockets blow AJAX away. And I've seen a few API's use websockets via tokens without issue, usually not worth it in most languages to set up unless the real-time need is necessary, though with Elixir it is so easy to websocket there is no reason not to anyway.
If they are rare polling requests then external API's will not. However external API's mandate whatever they mandate, that has nothing to do what-so-ever with using websockets for their own front-end.
OhgodNo, jsonapi needs to die, if you are going to vote for that then go for GraphQL then. Speaking of, you can use GraphQL over websockets too.
Exactly what @Qqwy said! ^.^
And what @Eiji said!