The best and most common way to ingest external data into Flow is using captures; however, you can also ingest data directly using the flow-ingester binary. This can be helpful in certain scenarios, such as testing. A full conceptual overview can be found here.
There are several ways to use flow-ingester, divided into two broad categories:
Create a HTTP PUT or POST requests using REST API
Stream data over a Websocket in either CSV, TSV, or JSON formats using WebSocket API