Skip to main content
POST /api/ais/feed Accepts a batch of decoded AIS messages in the AIS-catcher HTTP JSON format and ingests them into the live vessel tracking stream. Use this endpoint to contribute data from a local RTL-SDR receiver running AIS-catcher.
Rate limit: 60 requests per minute per IP.

Use case

AIS-catcher can POST decoded AIS messages to an HTTP endpoint in real time. Point it at http://localhost:8000/api/ais/feed and ShadowBroker will merge locally-received vessel positions into the live ship layer — useful for improving coverage in coastal areas not well-served by the upstream AIS WebSocket.

Request body

msgs
object[]
required
Array of decoded AIS message objects in the AIS-catcher HTTP JSON format. Each object represents one decoded AIS sentence.

Response

status
string
required
Always "ok" for a valid request.
ingested
number
required
Number of AIS messages that were successfully ingested from the submitted batch.

Example

curl -X POST http://localhost:8000/api/ais/feed \
  -H "Content-Type: application/json" \
  -d '{
    "msgs": [
      {
        "class": "AIS",
        "type": 1,
        "mmsi": 123456789,
        "lat": 51.5,
        "lon": -0.12,
        "speed": 5.2,
        "heading": 270
      }
    ]
  }'
{
  "status": "ok",
  "ingested": 1
}

AIS-catcher configuration

To forward AIS-catcher output to ShadowBroker, add the following to your AIS-catcher command:
AIS-catcher -H http://localhost:8000/api/ais/feed RESPONSE off
Or in a config file:
{
  "config": {
    "server": [
      {
        "url": "http://localhost:8000/api/ais/feed",
        "response": false
      }
    ]
  }
}

Build docs developers (and LLMs) love