API-Referenz

API-Referenz

Vollständige REST-API-Dokumentation für den Authon-Authentifizierungsdienst. Alle Anfragen müssen einen API-Schlüssel im x-api-key Header oder einen Bearer-Token in Authorization.

Basis-URL

text
https://api.authon.dev

Authentifizierung

Authon verwendet zwei Arten von API-Schlüsseln, je nachdem, ob die Anfrage vom Browser oder vom Server kommt. Übergeben Sie den Schlüssel im x-api-key Header oder als Bearer-Token.

SchlüsseltypPräfixVerwendung
Öffentlichpk_live_ / pk_test_Browser / Client-SDK. Sicher zu veröffentlichen.
Geheimsk_live_ / sk_test_Nur Server. Voller Admin-Zugriff. Niemals veröffentlichen.
BearereyJhbGci...Benutzerzugriffstoken nach der Anmeldung. 15 Minuten TTL.
bash
# Publishable key — client-side requests
curl https://api.authon.dev/v1/auth/providers \
  -H "x-api-key: pk_live_your_publishable_key"

# Token verification is public; no x-api-key is required
curl https://api.authon.dev/v1/auth/token/verify \
  -H "Authorization: Bearer eyJhbGci..."

# Bearer access token — user requests
curl https://api.authon.dev/v1/auth/me \
  -H "Authorization: Bearer eyJhbGci..."

Auth-Endpunkte

POST/v1/auth/signup

Registrieren

Registrieren Sie einen neuen Benutzer mit E-Mail und Passwort. Gibt bei Erfolg Token zurück.

Auth:x-api-key: pk_live_...
Anfrage-Body
json
{
  "email": "user@example.com",
  "password": "securepassword",
  "displayName": "Jane Doe"          // optional
}
Antwort
json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refreshToken": "rt_8f4a2b1c...",
  "expiresIn": 900,
  "user": {
    "id": "usr_abc123",
    "projectId": "proj_xyz",
    "email": "user@example.com",
    "displayName": "Jane Doe",
    "avatarUrl": null,
    "emailVerified": false,
    "isBanned": false,
    "publicMetadata": null,
    "signInCount": 0,
    "createdAt": "2026-01-15T10:30:00.000Z",
    "updatedAt": "2026-01-15T10:30:00.000Z"
  }
}
POST/v1/auth/signin

Anmelden

Authentifizieren Sie einen vorhandenen Benutzer mit E-Mail und Passwort.

Auth:x-api-key: pk_live_...
Anfrage-Body
json
{
  "email": "user@example.com",
  "password": "securepassword"
}
Antwort
json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "refreshToken": "rt_8f4a2b1c...",
  "expiresIn": 900,
  "user": { ... }
}
POST/v1/auth/signout

Abmelden

Widerrufen Sie die aktuelle Sitzung und invalidieren Sie das Aktualisierungstoken. Erfordert Bearer-Zugriffstoken.

Auth:Authorization: Bearer <access_token>
Antwort
json
{
  "success": true
}
POST/v1/auth/token/refresh

Token aktualisieren

Tauschen Sie ein Aktualisierungstoken gegen ein neues Zugriffstoken aus. Zugriffstoken laufen nach 15 Minuten ab.

Auth:x-api-key: pk_live_...
Anfrage-Body
json
{
  "refreshToken": "rt_8f4a2b1c..."
}
Antwort
json
{
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expiresIn": 900
}
GET/v1/auth/token/verify

Token verifizieren

Verifizieren Sie ein Zugriffstoken und geben Sie den zugehörigen Benutzer zurück. Wird von Ihrem Server verwendet, um eingehende Anfragen zu authentifizieren.

Auth:Authorization: Bearer <access_token>
Antwort
json
{
  "valid": true,
  "payload": {
    "sub": "usr_abc123",
    "projectId": "proj_xyz",
    "type": "access",
    "iat": 1767225600,
    "exp": 1767226500
  },
  "user": {
    "id": "usr_abc123",
    "email": "user@example.com",
    "displayName": "Jane Doe",
    "avatarUrl": null,
    "emailVerified": true
  }
}
GET/v1/auth/me

Aktuellen Benutzer abrufen

Gibt das Profil des aktuell authentifizierten Benutzers zurück.

Auth:Authorization: Bearer <access_token>
Antwort
json
{
  "id": "usr_abc123",
  "projectId": "proj_xyz",
  "email": "user@example.com",
  "displayName": "Jane Doe",
  "avatarUrl": "https:0
  6: null,
  7: true,
  8: false,
  9: false,
  10: {},
  11: "2026-01-15T10:30:00.000Z",
  "signInCount": 42,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-15T10:30:00.000Z"
}
PATCH/v1/auth/me

Aktuellen Benutzer aktualisieren

Aktualisiert Profilfelder für den aktuell authentifizierten Benutzer. Nur die angegebenen Felder werden aktualisiert.

Auth:Authorization: Bearer <access_token>
Anfrage-Body
json
{
  "displayName": "Jane Smith",          // optional
  "avatarUrl": "https://example.com/avatar.png"  // optional
}
Antwort
json
{
  "id": "usr_abc123",
  "displayName": "Jane Smith",
  "avatarUrl": "https://example.com/avatar.png",
  ...
}

OAuth-Endpunkte

GET/v1/auth/providers

Anbieter auflisten

Gibt die Liste der für das Projekt aktivierten OAuth-Anbieter zurück.

Auth:x-api-key: pk_live_...
Antwort
json
{
  "providers": ["google", "github", "kakao"]
}
GET/v1/auth/oauth/:provider/url

OAuth-URL abrufen

Generiert eine Autorisierungs-URL für den angegebenen OAuth-Anbieter. Verwenden Sie dies, um den Benutzer weiterzuleiten oder ein Popup zu öffnen.

Auth:x-api-key: pk_live_...
Antwort
json
{
  "url": "https://accounts.google.com/o/oauth2/v2/auth?client_id=..."
}
POST/v1/auth/oauth/callback

OAuth-Callback

Tauscht einen OAuth-Autorisierungscode gegen Authon-Token aus. Wird vom SDK nach der Rückkehr des Popups aufgerufen.

Auth:x-api-key: pk_live_...
Anfrage-Body
json
{
  "provider": "google",
  "code": "4/0AX4XfWh...",
  "state": "random_state_string",
  "codeVerifier": "pkce_verifier"   // required if PKCE was used
}
Antwort
json
{
  "accessToken": "eyJhbGci...",
  "refreshToken": "rt_...",
  "expiresIn": 900,
  "user": { ... }
}

Branding

GET/v1/auth/branding

Branding abrufen

Gibt die Branding-Konfiguration für das Projekt zurück. Wird vom JS SDK verwendet, um das Anmelde-Modal zu gestalten.

Auth:x-api-key: pk_live_...
Antwort
json
{
  "brandName": "Acme Corp",
  "primaryColorStart": "#7c3aed",
  "primaryColorEnd": "#4f46e5",
  "lightBg": "#ffffff",
  "lightText": "#111827",
  "darkBg": "#0f172a",
  "darkText": "#f1f5f9",
  "borderRadius": 12,
  "showEmailPassword": true,
  "showDivider": true,
  "termsUrl": "https:0
  13: "https://acme.com/privacy",
  "logoDataUrl": "data:image/png;base64,..."
}

Fehlercodes

Alle Fehlerantworten haben eine konsistente Form mit einem HTTP-Statuscode und einem JSON-Body:

json
{
  "statusCode": 401,
  "error": "Unauthorized",
  "message": "Invalid or expired access token"
}
StatusFehlerBeschreibung
400Bad RequestFehlender oder fehlerhafter Anfrage-Body
401UnauthorizedFehlender, ungültiger oder abgelaufener API-Schlüssel / Token
403ForbiddenDer Schlüssel ist gültig, hat aber keine Berechtigung für diese Aktion
404Not FoundDie angeforderte Ressource existiert nicht
409ConflictE-Mail ist bereits registriert
422Unprocessable EntityValidierung fehlgeschlagen — prüfen Sie die Feldanforderungen
429Too Many RequestsRatenlimit überschritten — nach der angegebenen Verzögerung erneut versuchen
500Internal Server ErrorUnerwarteter serverseitiger Fehler
Authon — Universelle Authentifizierungsplattform