Business-API

Ein Business-API-Schlüssel authentifiziert maschinelle Aufrufe als Ihr Business und nicht als Person. Sie senden ihn im selben api-key-Header, den Sie bereits für persönliche Schlüssel verwenden — der einzige Unterschied ist das Präfix APIB-. Jede damit verarbeitete Seite wird dem Business-Abonnement in Rechnung gestellt.

Gleicher Header, anderes Präfix

Es gibt kein separates Authentifizierungsverfahren zu lernen. Überall dort, wo ein persönlicher API-…-Schlüssel funktioniert, funktioniert auch ein APIB-…-Business-API-Schlüssel — das Präfix macht die Anfrage business-bezogen.

Persönliche vs. Business-Schlüssel

Beide Schlüsseltypen werden im selben api-key-Header gesendet, aber sie stehen für unterschiedliche Akteure und werden unterschiedlich abgerechnet.

Persönlicher Schlüssel Business-Schlüssel
Präfix API-… APIB-…
Steht für Ihr persönliches Konto Das Business (dessen Service-Account)
Abgerechnet über Ihr persönliches Kontingent Das Business-Abonnement
Erstellt von Sie selbst (Self-Service) Ein OWNER oder ADMIN des Business
Sub-Kunden-Header Nur wenn Ihr Konto umschlossen ist Ja (x-sub-business-id oder x-sub-business-ref)

Einen Business-Schlüssel senden

Setzen Sie den APIB-…-Schlüssel in den api-key-Header und rufen Sie jeden Endpunkt genau wie zuvor auf. Sonst ändert sich an der Anfrage nichts — gleiche URL, gleicher Multipart-Body, gleiche Antwort.

curl --location 'https://de.eagle-doc.com/api/receipt/v3/processing' \
  --header 'api-key: APIB-your-business-key' \
  --form 'file=@"receipt.jpeg"'
import requests

resp = requests.post(
    "https://de.eagle-doc.com/api/receipt/v3/processing",
    headers={"api-key": "APIB-your-business-key"},
    files={"file": open("receipt.jpeg", "rb")},
)
print(resp.json())
import fs from "node:fs";

const form = new FormData();
form.append("file", new Blob([fs.readFileSync("receipt.jpeg")]), "receipt.jpeg");

const resp = await fetch("https://de.eagle-doc.com/api/receipt/v3/processing", {
  method: "POST",
  headers: { "api-key": "APIB-your-business-key" },
  body: form,
});
console.log(await resp.json());

Schlüssel erstellen und rotieren

Erstellen, benennen und widerrufen Sie Business-API-Schlüssel über die untenstehende Verwaltungs-API oder im Dashboard. Rotieren Sie einen Schlüssel, indem Sie einen neuen erstellen und den alten widerrufen.

Schlüssel mit einem echten Benutzer-Token verwalten, nicht mit einem APIB-Schlüssel

Die untenstehenden Endpunkte liegen unter /api/business/** und erfordern ein echtes Benutzer-Token — Ihren persönlichen API-…-Schlüssel oder eine angemeldete Dashboard-Sitzung — mit der Rolle ADMIN oder OWNER. Sie weisen APIB-…-Business-API-Schlüssel ab (403, messageCode 3010). Erstellen und rotieren Sie Schlüssel daher mit Ihren Owner-Zugangsdaten oder dem Dashboard und verwenden Sie den daraus resultierenden APIB-…-Schlüssel für die Datenebene.

Listet die Businesses auf, denen Ihr Konto angehört. Jeder Eintrag enthält die id, die Sie unten als {businessId} benötigen, sowie Ihre Rolle in diesem Business in myRole.

Parameters
Name Description
api-key (header) A real-user token: your personal API- key or a signed-in dashboard session. APIB- business keys are rejected.
Responses
Code Description
200 An array of the businesses you are a member of.
Field Name Description
id The business identifier — use it as {businessId} in the key endpoints.
name Display name of the business.
billingMode How the business is billed, e.g. STRIPE or INVOICE.
myRole Your role on this business, e.g. OWNER, ADMIN or MEMBER.
wrapsPersonalAccount Whether this business wraps your personal account.
[
  {
    "id": "665f...",
    "name": "Acme GmbH",
    "billingMode": "STRIPE",
    "myRole": "OWNER",
    "wrapsPersonalAccount": false
  }
]
403 An APIB- business key was used. messageCode 3010.

Erstellt einen neuen Business-API-Schlüssel. Erfordert die Rolle ADMIN oder OWNER. Die Antwort enthält das vollständige Geheimnis — dies ist die einzige Stelle, an der es bei einem Erstellungsaufruf zurückgegeben wird.

Parameters
Name Description
api-key (header) A real-user token with role ADMIN or OWNER. APIB- keys are rejected.
businessId (path) The id from GET /api/business.
name (body, optional) A label for the key. If blank, it defaults to "default".
{
  "name": "Production"
}
Responses
Code Description
201 The created BusinessApiKey, including the full secret in apiKey. The key format is APIB-<24hex>-<uuid>.
{
  "id": "66dd...",
  "businessId": "665f...",
  "name": "Production",
  "apiKey": "APIB-4f3c2b1a0d9e8f7a6b5c4d3e-3f2e1d0c-...",
  "createdAt": "2026-07-08T10:25:00.000Z",
  "revokedAt": "",
  "lastUsedAt": ""
}
Das Geheimnis sicher aufbewahren

Das vollständige Geheimnis wird hier (und im Listen-Endpunkt) zurückgegeben. Behandeln Sie es wie ein Passwort und speichern Sie es in Ihrem Secrets-Manager — falls es durchsickert, widerrufen Sie es und erstellen Sie ein neues.

403 An APIB- key was used (messageCode 3010) or your role is too low (messageCode 8003).

Listet jeden API-Schlüssel eines Business auf, einschließlich widerrufener. Erfordert die Rolle ADMIN oder OWNER. Ein Schlüssel mit gesetztem revokedAt ist inaktiv.

Parameters
Name Description
api-key (header) A real-user token with role ADMIN or OWNER.
businessId (path) The id from GET /api/business.
Responses
Code Description
200 An array of BusinessApiKey objects, including revoked keys (revokedAt set = inactive).
[
  {
    "id": "66dd...",
    "businessId": "665f...",
    "name": "Production",
    "apiKey": "APIB-4f3c2b1a0d9e8f7a6b5c4d3e-3f2e1d0c-...",
    "createdAt": "2026-07-08T10:25:00.000Z",
    "revokedAt": "",
    "lastUsedAt": "2026-07-08T11:02:00.000Z"
  }
]

Benennt einen bestehenden Schlüssel um. Erfordert die Rolle ADMIN oder OWNER. Nur die Bezeichnung ändert sich — das Geheimnis bleibt gleich.

Parameters
Name Description
api-key (header) A real-user token with role ADMIN or OWNER.
businessId (path) The id from GET /api/business.
keyId (path) The id of the key to update.
name (body) The new label for the key.
{
  "name": "New label"
}
Responses
Code Description
200 The updated BusinessApiKey with the new name.

Widerruft einen Schlüssel. Erfordert die Rolle ADMIN oder OWNER. Der Widerruf erfolgt sofort und ist endgültig; der Schlüssel wird mit gesetztem revokedAt zu Prüfzwecken aufbewahrt.

Parameters
Name Description
api-key (header) A real-user token with role ADMIN or OWNER.
businessId (path) The id from GET /api/business.
keyId (path) The id of the key to revoke.
Responses
Code Description
200 The key is revoked immediately (revokedAt set) and kept for audit. Calls that use it now fail.
Lieber das Dashboard?

Dasselbe geht im Dashboard unter Business → Einstellungen → API-Schlüssel. Das Geheimnis lässt sich bei der Erstellung nur einmal kopieren, und Sie können dort jeden Schlüssel widerrufen.

Häufige Fehler

Die Verwaltungs-Endpunkte geben die Standard-Fehlerhülle von Eagle Doc zurück. Die häufigsten Authentifizierungs- und Autorisierungsfehler sind:

Status messageCode Bedeutung
403 3010 API_KEY_NOT_AUTHORIZED Sie haben einen APIB--Business-API-Schlüssel an einem Verwaltungs-Endpunkt verwendet. Diese Endpunkte erfordern ein echtes Benutzer-Token (persönlicher API--Schlüssel oder Dashboard-Sitzung).
403 8003 BUSINESS_ROLE_INSUFFICIENT Ihre Rolle im Business ist zu niedrig. Das Erstellen, Umbenennen und Widerrufen von Schlüsseln erfordert ADMIN oder OWNER.
404 8000 BUSINESS_NOT_FOUND Das Business existiert nicht, oder Ihr Konto ist kein Mitglied davon.

Jeder Fehler hat dieselbe Body-Struktur, sodass Sie messageCode überall gleich auswerten können:

{
  "httpCode": 403,
  "httpCodeName": "FORBIDDEN",
  "messageCode": 3010,
  "message": "API key not permitted",
  "messageDetails": [],
  "data": null
}

Support

Wir helfen Ihnen gerne

Sie bauen Ihre Integration für mehrere Kunden auf und etwas ist unklar? Wir helfen Ihnen gerne, damit Ihr Projekt gelingt.

Erreichen Sie uns unter support@eagle-doc.com