TagFinder Logo
TagFinder
Developers

AI-Ready API

REST + WebSocket + Webhooks. OpenAPI docs. MCP server for AI agents. Python SDK with CLI.

API-First Platform

TagFinder is an API-first platform. Every feature available in the dashboard is also available through the REST API. This means you can build custom integrations, automate workflows, and let AI agents operate your IoT infrastructure programmatically.

The API follows OpenAPI 3.0, uses JWT authentication via Keycloak, and supports real-time data streaming via WebSocket and Server-Sent Events (SSE).

API Capabilities

REST API

Full CRUD for assets, tags, sensor data, geofences, buildings, floors, and alert rules. JSON responses with pagination.

Webhook Events

Real-time event delivery: alert triggered, geofence enter/exit, tag offline, temperature excursion, transit complete.

WebSocket Streaming

Live telemetry at 1-2 Hz. Stream tag positions, sensor readings, and network status in real time.

OIDC/OAuth2 Auth

Keycloak-powered authentication. PKCE flow for SPAs. Client credentials for service-to-service. JWT tokens.

MCP Server

Model Context Protocol server that lets AI agents (Claude, GPT, Gemini) interact with your IoT data natively.

ERP/WMS Integration

Templates for SAP, Oracle WMS, and Microsoft Dynamics. Map TagFinder assets to your existing systems.

Python SDK

The official Python SDK provides a high-level client for all API operations, plus a CLI for terminal-based workflows.

pip install tagfinder           # Core SDK
pip install tagfinder[cli]      # With CLI (tf command)
pip install tagfinder[websocket] # With WebSocket streaming
pip install tagfinder[all]      # Everything
from tagfinder import TagFinderClient

tf = TagFinderClient(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
    org_id="acme-corp",
)

# List all tags
tags = tf.tags.list()
for tag in tags:
    print(f"{tag.tag_id}: {tag.tag_name} ({tag.status})")

# Query sensor data
data = tf.tags.sensor_data("wirepas:12345", from_time="2026-03-11T00:00:00Z")
for reading in data.readings:
    print(f"{reading.timestamp}: {reading.sensor_readings}")

# Get latest positions
positions = tf.positions.latest()
for pos in positions:
    print(f"{pos.tag_name} in {pos.zone_name}")

CLI Reference

tf tags list                     # List all tags
tf tags get wirepas:12345        # Tag details
tf tags sensor-data wirepas:12345 --from 2026-03-11  # Sensor readings
tf positions latest              # Latest positions
tf assets list                   # List assets
tf alerts list-rules             # Alert rules
tf alerts history --limit 10     # Recent alerts
tf version                       # SDK version

API Coverage

Sub-clientServiceOperations
tf.tagsREST APIlist, get, update, sensor_data
tf.assetsREST APIlist, get, create, update, delete, attach_tag, detach_tag
tf.positionsREST APIlatest, history, asset_position, rtls
tf.alertsAlerts APIlist_rules, get_rule, create_rule, update_rule, delete_rule, history
tf.rtls.buildingsRTLS APIlist, get, create, update, delete
tf.rtls.floorsRTLS APIlist, get, create, upload_image, delete
tf.rtls.geofencesRTLS APIlist, get, create, update, delete
tf.ingestIngest APIupload_csv, push_sensor_data, push_position
tf.wirepasWirepas APIlist_devices, get_device, list_gateways
tf.liveLive APIstream_telemetry (async), stream_wirepas (async)

Developer Resources

Ready to start building?

AI-Ready API — TagFinder