Authenticated endpoints require three HTTP headers:
x-user-api-key
Der öffentliche Schlüssel Ihres API-Tokens
x-user-api-timestamp
13-stelliger Unix-Zeitstempel in Millisekunden
x-user-api-signature
HMAC-SHA256-Signatur in hexadezimaler Kleinschreibung
Signatur-Payload
Die Signatur wird berechnet, indem die folgenden Werte mit Zeilenumbrüchen verknüpft werden:
<HTTP_METHOD>
<Anfragepfad>
<roher Query-String (ohne ?)>
<x-user-api-timestamp>
<sha256-Hexwert des rohen Request-Bodys>
Scope-Regeln
read
Nur GET- und HEAD-Anfragen
read_write
GET-, POST-, PATCH- und DELETE-Anfragen
Fehlercodes
401 UNAUTHORIZED
Ungültige oder fehlende Zugangsdaten
401 INVALID_SIGNATURE
Die HMAC-Signaturprüfung ist fehlgeschlagen
401 INVALID_TIMESTAMP
Der Anfrage-Zeitstempel liegt außerhalb des 5-Minuten-Fensters
403 INSUFFICIENT_SCOPE
Dem Token fehlt der erforderliche Scope für diesen Vorgang
403 IP_NOT_ALLOWED
Die Anfrage-IP steht nicht in der Liste der erlaubten Token-IPs
409 USER_ALIAS_REQUIRED
Der Benutzer muss zuerst einen Standard-Alias erstellen
Codebeispiel (JavaScript)
const crypto = require('crypto');
function signRequest(method, path, queryString, body, timestamp, secret) {
const payload = [
method.toUpperCase(),
path,
queryString || '',
timestamp,
crypto.createHash('sha256').update(body || '').digest('hex')
].join('\n');
return crypto.createHmac('sha256', secret)
.update(payload)
.digest('hex');
}
const timestamp = Date.now().toString();
const signature = signRequest('GET', '/v1/me', '', '', timestamp, 'your-secret');