❮  Integrationen

API für Unternehmen

Ihr Kunde erteilt Ihrem Unternehmen Zugang, und in Ihrer App erscheint eine Öffnen-Schaltfläche. Keine Schlüssel wandern durch Chats, und jede Öffnung trägt den Namen des Mitarbeiters, der gedrückt hat.

Für wen: Dienste, deren Mitarbeiter in einen geschlossenen Hof fahren muss — Kinderbetreuung und Nachhilfe, Reinigung, mobiler Reifendienst und Autowäsche, Kurier und Lieferung, Pflege und Laborbesuche zu Hause. Der Kunde behält seine vorhandene Schranke; Sie bekommen eine Schaltfläche statt eines Anrufs am Tor.

So funktioniert es

  1. In Ihrer Oberfläche sagt der Kunde, dass eingefahren werden muss. Zuerst klären Sie zwei Dinge: Die Schranke öffnet auf einen Anruf von seiner Nummer, und sein Telefon bleibt online. Steht an der Schranke ein Entrixy-Controller, wird das Telefon gar nicht gebraucht.
  2. Sie erstellen eine Anfrage und zeigen deren QR-Code. Der Kunde scannt, installiert die App, fügt die Schranke hinzu und erteilt Zugang — Ihr Unternehmen wartet bereits in der Liste.
  3. Sie öffnen per API und nennen den Mitarbeiter. Der Kunde sieht die Öffnung mit diesem Namen im Journal und nimmt den Zugang jederzeit mit einem Tippen zurück.
Den Schlüssel als Link gibt es nicht. Ihr Unternehmen erhält einen Verweis darauf, nicht den Schlüssel selbst — es gibt nichts zu kopieren oder weiterzuleiten; der Schlüssel ist an Ihr Konto gebunden und funktioniert nur über diese API. Den Zugang an einen Mitarbeiter weiterzugeben ist nicht möglich — bewusst so, und genau deshalb erteilt der Kunde ihn ohne Sorge.

Authentifizierung

There are two ways in, and the difference is what the client sees.

Signature bound to your domain

You publish a public key on your own domain and sign every call with the private one. We take the key from the domain itself, so the right to call and the right to be shown under that domain are the same thing: the file disappears, the domain moves or changes hands — the calls stop within a day. There is no one-off "verified" tick to outlive reality.

https://<your domain>/.well-known/entrixy.json

{ "key": "<Ed25519 public key, 32 bytes, base64>" }

Then each request carries four headers:

X-Entrixy-Org:   your-domain.com
X-Entrixy-Ts:    1750000000          // unix seconds, ±300 s
X-Entrixy-Nonce: 0011…ff             // 32 hex, used once
X-Entrixy-Sig:   <base64>            // Ed25519 over the base string

base = "<domain>.<ts>.<nonce>." + sha256(raw request body)

A repeated nonce is refused, and so is a body that does not match the signature. This is the mode where the client sees your domain and your logo.

A domain written in national characters goes into the header and into the base string in its punycode form — xn--… — the same form it takes in the address of the key file. The client is still shown the readable spelling.

A secret, if you have no domain

Register, issue a secret in the cabinet and put it in the body. Your calls work the same, but the client is shown only the name you wrote for yourself, with a note that the domain is not confirmed — no logo, no domain. A company that has set a domain can no longer use a secret: otherwise a leaked secret would speak in the name of a confirmed one.

POST https://entrixy.com/api/company.php?a=<action>
Content-Type: application/json

{ "org_id": 17, "secret": "…", … }

Anfrage erstellen

POST /api/company.php?a=request
{ "org_id": 17, "secret": "…", "ref": "order-517", "ttl_hours": 72 }

→ { "code": "rrGzNweV31rkHV6Q",
    "url":  "https://entrixy.com/c/rrGzNweV31rkHV6Q",
    "expires_in_hours": 72 }

ref ist Ihre eigene Auftragsnummer, sie kommt im Status zurück. Legen Sie url in einen QR-Code und zeigen Sie ihn dem Kunden.

Zustand der Anfrage

POST /api/company.php?a=status
{ "org_id": 17, "secret": "…", "code": "rrGzNweV31rkHV6Q" }

→ { "state": "issued", "key_ref": 4821, "ref": "order-517",
    "claimed_at": "2026-09-09 12:20:11", "issued_at": "2026-09-09 12:24:03" }
ZustandMeaning
newQR-Code erstellt, der Kunde ist noch nicht gekommen
claimedder Kunde hat die App geöffnet — er ist unterwegs
issuedZugang erteilt; key_ref damit öffnen Sie
revokedder Kunde hat den Zugang zurückgenommen
expireddie Anfrage lief ab, bevor der Kunde kam

Öffnen

POST /api/company.php?a=open
{ "org_id": 17, "secret": "…", "key_ref": 4821,
  "number_id": 93, "actor": "Ivan P., shift 12" }

→ { "ok": 1 }

actor ist Pflicht: genau das sieht der Kunde im Journal. Alles, was den Mitarbeiter bei Ihnen identifiziert, taugt — Name, Personalnummer, Schicht. Ohne ihn wird der Aufruf abgewiesen.

AntwortMeaning
403 forbiddender Schlüssel gehört nicht Ihnen oder das Objekt ist nicht darin
403 revokedder Kunde hat den Zugang zurückgenommen
403 expireddie Lebensdauer des Schlüssels ist abgelaufen
400 actor_requiredder Mitarbeiter wurde nicht genannt
429 rate_limitzu viele Öffnungen mit einem Schlüssel pro Minute

Ihre Karte in der App

Senden Sie uns bei der Registrierung Namen und ein quadratisches Logo. Der Kunde sieht sie auf der gescannten Seite, im Einwilligungsdialog und neben jeder Zeile im Journal — so ist klar, wen er hereinlässt. Das Logo liefern wir selbst aus; Bilder von fremden Servern holen wir nicht.

Erste Schritte

Registrieren Sie das Unternehmen in Ihrem Konto: erst der Antrag, dann Geheimnis, Rückmeldeadresse, Logo und die Liste der Anfragen — alles im Unternehmenskonto. Anträge prüfen wir von Hand: Der Kunde vertraut dem Unternehmen, das wir in die Liste lassen.

Unternehmenskonto