Direct API

Deliver FleetManager data directly via HTTPS — without Brinkhaus-Tools or MQTT.

Authentication

All ingest endpoints use Bearer token authentication. Tokens are created in the FleetManager dashboard under Settings → Tokens.

Authorization: Bearer fmt_YOUR_TOKEN

Path Parameters

All endpoints use three path slugs:

  • {customer} — Customer slug (e.g. my-customer)
  • {machine} — Machine slug (e.g. server-01)
  • {software} — Software slug (e.g. my-app)

Format: ^[a-z0-9][a-z0-9-]*$

Heartbeat

POST /api/ingest/{customer}/{machine}/{software}/heartbeat

Regular liveness signal. If the heartbeat is missing for >5 min, the traffic light turns red.

curl -X POST https://fleet.example.com/api/ingest/my-customer/server-01/my-app/heartbeat \
  -H "Authorization: Bearer fmt_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ts": "2026-03-06T12:00:00Z",
    "version": "1.0.0",
    "uptime_seconds": 86400,
    "pid": 12345,
    "ip_addresses": ["192.168.1.10"]
  }'

All fields are optional. ts defaults to server time if omitted.

Diagnostics

POST /api/ingest/{customer}/{machine}/{software}/diagnostics

Send diagnostic messages with error codes and severity levels.

curl -X POST https://fleet.example.com/api/ingest/my-customer/server-01/my-app/diagnostics \
  -H "Authorization: Bearer fmt_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {"code": 1001, "message": "MQTT connection failed", "severity": 2},
      {"code": 1002, "message": "Configuration loaded", "severity": 0}
    ]
  }'

Severity 0 — Info

Normal operation

Severity 1 — Warning

Degraded operation

Severity 2 — Error

Critical failure

Status

POST /api/ingest/{customer}/{machine}/{software}/status

Send the current operational status with an optional snapshot.

curl -X POST https://fleet.example.com/api/ingest/my-customer/server-01/my-app/status \
  -H "Authorization: Bearer fmt_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "running",
    "message": "All systems operational",
    "snapshot": {
      "MQTT-Host": "broker.example.com:1883",
      "Connected": true
    }
  }'

Valid status values: running, degraded, error, stopped

Response Format

All endpoints respond with:

{"ok": true}    // HTTP 200 — Success
{"detail": "..."} // HTTP 403 — Invalid token or unauthorized customer

Changelog

5.10.0 2026-07-01

Added

  • Typed status values: snapshot leaves can describe themselves ({value, type, unit, label, hint}) — backward compatible, leaves without type unchanged
5.8.0 2026-06-03

Changed

  • Artifact list filterable per service: GET /api/machines/{id}/artifacts?software=<slug>
5.7.1 2026-06-02

Fixed

  • Ingest upsert is now race-safe: concurrent first reports of the same instance triggered HTTP 500
5.7.0 2026-06-02

Added

  • New optional heartbeat fields group, location, group_priority, sort_priority — the old payload format is still accepted
5.6.0 2026-06-02

Added

  • Artifact upload (chunked, resumable): POST …/artifact-init, PUT …/artifact-chunk/{id}/{n}, POST …/artifact-complete/{id}
  • New endpoints GET /api/machines/{id}/artifacts and GET /api/artifacts/{id}/download
5.5.0 2026-06-02

Added

  • Host metrics: POST /api/ingest/{customer}/{machine}/logcollector/metrics (idempotent via client_metric_id)
  • New endpoint GET /api/machines/{id}/metrics
5.3.0 2026-05-04

Added

  • GET /auth/me additionally returns pending_conversions and email_sha256
  • New endpoint POST /auth/conversions/ack (idempotent)
5.0.0 2026-03-17

Added

  • Multi-customer: GET /api/auth/my-customers and POST /api/auth/switch-customer
  • JWT includes new is_system_admin claim
4.16.0 2026-03-17

Changed

  • Login via email (username is still accepted); email is mandatory and unique
4.13.0 2026-03-11

Added

  • Agent command system: modules advertise commands in the snapshot, queue delivers on next agent contact
  • Command ack endpoint: agents confirm execution (success/failure)
4.12.2 2026-03-11

Fixed

  • Status snapshots from security agents were discarded on receipt
4.10.0 2026-03-11

Added

  • New endpoint GET /api/dashboard/license-status

Changed

  • GET /api/customers/{id}/license-key additionally returns device count, limit status, and grace period
4.9.0 2026-03-10

Added

  • New endpoint GET /api/onboarding/status (setup progress)
4.8.0 2026-03-10

Added

  • New endpoint GET /api/support-info (license-dependent support contacts)
4.7.0 2026-03-08

Added

  • New ingest endpoint /help for diagnostic help texts (DE + EN); ingest responds with HTTP 202 when help texts are missing
  • GET /instances/{id}/help?code=&lang= to retrieve help texts
4.6.3 2026-03-06

Added

  • CI: GitLab Release job with automatic changelog extraction
4.4.0 2026-03-04

Added

  • Diagnostics whitelist: pattern-based event suppression
0.9.0 2026-03-04

Added

  • OpenAPI documentation with tags and response models
  • Status snapshots: full StatusEngine tree
  • Ingest rejection log reactivated

Start for free — 5 devices included

Fleet monitoring and security compliance in under 10 minutes. No credit card required.

Want to talk to an expert?

Click the link and we'll have a quick chat.

Schedule a Call →