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: 42No 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:
| Status | Error | Fix |
|---|---|---|
400 | U300_INGEST_ENDPOINT_URL is required | Set the ingest URL in location config or env var |
400 | RFID_INGEST_KEY is missing | Add RFID_INGEST_KEY to config or env |
502 | Failed to start RFID relay (502) | Relay unreachable — check LAN connection |
503 | Feature disabled | U300_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: 42Response:
{ "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.