Dla deweloperów
Buduj na Mets
REST API i podpisane webhooki dla spotkań, nagrań, transkrypcji i podsumowań AI. Twoje dane zostają w UE.
Szybki start
Od zera do spotkania w trzech krokach
Bez SDK. Zwykłe HTTPS i JSON.
- 1
Utwórz klucz API
Otwórz Ustawienia, Dla deweloperów i utwórz klucz z samymi potrzebnymi uprawnieniami. Pokazujemy go tylko raz.
- 2
Wywołaj API
Wyślij klucz jako token Bearer. Twórz spotkania, listuj nagrania, pobieraj transkrypcje i podsumowania.
- 3
Nasłuchuj zdarzeń
Dodaj adres webhooka i reaguj, gdy spotkanie się kończy lub transkrypcja jest gotowa, albo odpytuj kanał zdarzeń.
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://…" } ] }Webhooki
Wiesz od razu, kiedy coś się dzieje
Każda dostawa to podpisane żądanie HTTPS POST. Nieudane dostawy ponawiamy z rosnącym odstępem, łącznie pięć prób.
meeting.startedDołączył pierwszy uczestnik, spotkanie trwa.meeting.endedSpotkanie się zakończyło.recording.readyNagranie zostało przetworzone i można je pobrać.transcript.readyTranskrypcja jest kompletna.summary.readyPodsumowanie AI jest dostępne.registration.createdKtoś zarejestrował się na Twój webinar.
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" } }
}Weryfikuj każde żądanie
Mets podpisuje treść sekretem Twojego adresu: X-Mets-Signature to sha256= i HMAC-SHA256 z sygnatury czasu, kropki i surowej treści. Porównuj w stałym czasie i odrzucaj sygnatury starsze niż pięć minut.
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"])Dokumentacja
Wszystko, co potrzebne, nic ponad to
Dwanaście endpointów obejmuje spotkania, nagrania, transkrypcje, podsumowania, rejestracje na webinary i zdarzenia.
- 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
Klucze z uprawnieniami
Authorization: Bearer mets_sk_…. Klucz ma tylko nadane uprawnienia, można go ograniczyć do organizacji, ustawić wygaśnięcie lub w każdej chwili unieważnić.
Rozsądne limity
120 żądań na minutę i do 20 na sekundę na klucz. Każda odpowiedź zawiera nagłówki X-RateLimit.
OpenAPI 3
Kompletny schemat do przetwarzania maszynowego i interaktywna konsola do wypróbowania żądań.
API w pakiecie Business
Publiczne API i webhooki są częścią pakietu Business, bez opłat za żądania. Potrzebujesz wyższych limitów lub indywidualnej umowy? Napisz do nas.
Wdróż pierwszą integrację już dziś
Załóż konto, wygeneruj klucz i wykonaj pierwsze żądanie w kilka minut.