Entwickler
Bauen Sie auf Mets
Eine REST-API und signierte Webhooks für Meetings, Aufzeichnungen, Transkripte und KI-Zusammenfassungen. Ihre Daten bleiben in der EU.
Schnellstart
Vom Nichts zum Meeting in drei Schritten
Kein SDK nötig. Einfaches HTTPS und JSON.
- 1
API-Schlüssel erstellen
Öffnen Sie Einstellungen, Entwickler und erstellen Sie einen Schlüssel mit genau den nötigen Berechtigungen. Er wird nur einmal angezeigt.
- 2
API aufrufen
Senden Sie den Schlüssel als Bearer-Token. Erstellen Sie Meetings, listen Sie Aufzeichnungen auf, laden Sie Transkripte und Zusammenfassungen.
- 3
Auf Ereignisse reagieren
Fügen Sie einen Webhook-Endpunkt hinzu und reagieren Sie, wenn ein Meeting endet oder ein Transkript fertig ist, oder fragen Sie den Ereignis-Feed ab.
curl -X POST https://mets.ulewicz.space/api/v1/public/meetings \
-H "Authorization: Bearer $METS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Weekly sync",
"scheduled_at": "2026-11-03T09:00:00+01:00",
"duration_minutes": 30,
"settings": { "waiting_room": true, "transcription_auto": true }
}'
# -> 201 { "id": "…", "code": "abc-defg-hjk", "join_url": "https://mets.ulewicz.space/m/abc-defg-hjk", … }curl https://mets.ulewicz.space/api/v1/public/meetings/abc-defg-hjk/recordings \
-H "Authorization: Bearer $METS_API_KEY"
# -> { "data": [ { "id": "…", "kind": "video", "status": "ready",
# "duration_seconds": 1834, "download_url": "https://…" } ] }Webhooks
Sofort wissen, wenn etwas passiert
Jede Zustellung ist ein signierter HTTPS-POST. Fehlgeschlagene Zustellungen werden mit exponentiellem Backoff wiederholt, insgesamt fünf Versuche.
meeting.startedDer erste Teilnehmer ist beigetreten, das Meeting läuft.meeting.endedDas Meeting ist beendet.recording.readyEine Aufzeichnung wurde verarbeitet und kann heruntergeladen werden.transcript.readyDas Transkript ist vollständig.summary.readyDie KI-Zusammenfassung ist verfügbar.registration.createdJemand hat sich für eines Ihrer Webinare angemeldet.
POST https://your-server.example/webhooks/mets
X-Mets-Event: meeting.ended
X-Mets-Delivery: 7c0f…
X-Mets-Timestamp: 1790000000
X-Mets-Signature: sha256=9f2b…
{
"id": "evt_1042",
"type": "meeting.ended",
"created_at": "2026-11-03T09:31:07Z",
"data": { "meeting": { "id": "…", "code": "abc-defg-hjk", "title": "Weekly sync", "status": "ended" } }
}Prüfen Sie jede Anfrage
Mets signiert den Body mit dem Geheimnis Ihres Endpunkts: X-Mets-Signature ist sha256= gefolgt vom HMAC-SHA256 aus Zeitstempel, Punkt und rohem Body. Vergleichen Sie in konstanter Zeit und verwerfen Sie Zeitstempel, die älter als fünf Minuten sind.
import crypto from "node:crypto";
// Express: use express.raw({ type: "application/json" }) so you get the exact bytes.
export function verify(rawBody, headers, secret) {
const ts = headers["x-mets-timestamp"];
const expected =
"sha256=" + crypto.createHmac("sha256", secret).update(`${ts}.${rawBody}`).digest("hex");
const given = headers["x-mets-signature"] ?? "";
const fresh = Math.abs(Date.now() / 1000 - Number(ts)) < 300; // reject replays
return (
fresh &&
given.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(given), Buffer.from(expected))
);
}import hashlib, hmac, time
def verify(raw_body: bytes, headers: dict, secret: str) -> bool:
ts = headers["X-Mets-Timestamp"]
mac = hmac.new(secret.encode(), ts.encode() + b"." + raw_body, hashlib.sha256).hexdigest()
expected = "sha256=" + mac
fresh = abs(time.time() - int(ts)) < 300 # reject replays
return fresh and hmac.compare_digest(expected, headers["X-Mets-Signature"])Referenz
Alles, was Sie brauchen, nichts darüber hinaus
Zwölf Endpunkte decken Meetings, Aufzeichnungen, Transkripte, Zusammenfassungen, Webinar-Anmeldungen und Ereignisse ab.
- GET
/me— - GET
/meetingsmeetings:read - POST
/meetingsmeetings:write - GET
/meetings/{id}meetings:read - PATCH
/meetings/{id}meetings:write - DELETE
/meetings/{id}meetings:write - GET
/meetings/{id}/participantsmeetings:read - GET
/meetings/{id}/recordingsrecordings:read - GET
/meetings/{id}/transcripttranscripts:read - GET
/meetings/{id}/summarytranscripts:read - POST
/webinars/{slug}/registrationswebinars:write - GET
/eventsmeetings:read
API-Schlüssel mit Berechtigungen
Authorization: Bearer mets_sk_…. Schlüssel tragen nur die gewährten Berechtigungen, können auf eine Organisation beschränkt werden, ablaufen oder jederzeit widerrufen werden.
Faire Limits
120 Anfragen pro Minute und Spitzen von 20 pro Sekunde je Schlüssel. Jede Antwort enthält X-RateLimit-Header.
OpenAPI 3
Ein vollständiges maschinenlesbares Schema und eine interaktive Konsole zum Ausprobieren.
API im Business-Tarif enthalten
Die öffentliche API und Webhooks gehören zum Business-Tarif, ohne Gebühren pro Anfrage. Sie brauchen höhere Limits oder einen individuellen Vertrag? Schreiben Sie uns.
Starten Sie heute Ihre erste Integration
Konto erstellen, Schlüssel generieren und in Minuten die erste Anfrage senden.