API Reference
Ingest

Ingest API

Controls the relay's tag-forwarding pipeline. When ingest is running, the relay polls the reader and POSTs tag events to Parlevel.

POST /api/rfid/u300/ingest/start

Starts RFID ingest for the selected location. On start, the relay also:

  • Sets antenna TX power
  • Sets RF link profile
  • Reapplies the saved antenna mask
POST /api/rfid/u300/ingest/start
Authorization: Bearer <token>
x-selected-location: 42

No request body required.

Success response:

{
  "ok": true,
  "baseUrl": "http://192.168.1.100:5000",
  "locationId": 42,
  "endpointUrl": "https://your-app.vercel.app/api/rfid/u300/ingest",
  "pollMs": 1000,
  "result": { ...relay response... }
}

Common errors:

StatusErrorFix
400U300_INGEST_ENDPOINT_URL is requiredSet the ingest URL in location config or env var
400RFID_INGEST_KEY is missingAdd RFID_INGEST_KEY to config or env
502Failed to start RFID relay (502)Relay unreachable — check LAN connection
503Feature disabledU300_INGEST_ENABLED is not set

POST /api/rfid/u300/ingest/stop

Stops polling. The relay remains running but stops forwarding events.

POST /api/rfid/u300/ingest/stop
Authorization: Bearer <token>
x-selected-location: 42

Response:

{ "ok": true, "result": { ...relay response... } }

POST /api/rfid/u300/ingest

This endpoint is called by the relay, not by client code. It receives tag events and stores them in Supabase.

POST /api/rfid/u300/ingest
x-ingest-key: <RFID_INGEST_KEY>
Content-Type: application/json
 
{
  "locationId": 42,
  "tags": [
    { "epc": "E28011702000021A12345678", "rssi": -62 },
    { "epc": "E28011702000021A87654321", "rssi": -58 }
  ]
}

Each ingest POST creates rfid_event rows in Supabase, which are used to update the live tag presence state.