Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
Implement Miro REST API v2 webhooks with board subscriptions, event handling,
and signature verification for real-time board change notifications.
Trigger with phrases like "miro webhook", "miro events",
"miro board subscription", "miro real-time", "miro notifications".
allowed-tools
Read, Write, Edit, Bash(curl:*)
version
1.7.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
["saas","miro","webhooks","events"]
compatibility
Designed for Claude Code
Miro Webhooks & Events
Overview
Receive real-time notifications when items on a Miro board change. Miro uses board subscriptions via the /v2-experimental/webhooks/board_subscriptions endpoint. All board item types are supported except tags, connectors, and comments.
Prerequisites
Access token with boards:read scope
HTTPS endpoint accessible from the internet
Webhook signing secret (generated when creating subscription)
// List subscriptions// GET https://api.miro.com/v2-experimental/webhooks/board_subscriptionsconst list = awaitmiroFetch('/v2-experimental/webhooks/board_subscriptions');
// Get a specific subscription// GET https://api.miro.com/v2-experimental/webhooks/board_subscriptions/{subscription_id}const sub = awaitmiroFetch(`/v2-experimental/webhooks/board_subscriptions/${subId}`);
// Update subscription (enable/disable)// PATCH https://api.miro.com/v2-experimental/webhooks/board_subscriptions/{subscription_id}awaitmiroFetch(`/v2-experimental/webhooks/board_subscriptions/${subId}`, 'PATCH', {
status: 'disabled',
});
// Delete subscription// DELETE https://api.miro.com/v2-experimental/webhooks/board_subscriptions/{subscription_id}awaitmiroFetch(`/v2-experimental/webhooks/board_subscriptions/${subId}`, 'DELETE');
Event Payload Structure
When a board item is created, updated, or deleted, Miro sends a POST request to your callback URL:
Miro may deliver the same event multiple times. Prevent duplicate processing:
import { Redis } from'ioredis';
const redis = newRedis(process.env.REDIS_URL);
asyncfunctionprocessOnce(eventId: string, handler: () => Promise<void>): Promise<void> {
const key = `miro:webhook:${eventId}`;
// SET NX with TTL — returns 'OK' only if key was newly setconst result = await redis.set(key, '1', 'EX', 86400 * 7, 'NX'); // 7 days TTLif (result !== 'OK') {
console.log(`Duplicate event ${eventId} — skipping`);
return;
}
awaithandler();
}
Webhook Testing
# Test with ngrok for local development
ngrok http 3000
# Register https://your-ngrok.ngrok-free.app/webhooks/miro as callback URL# Manually test your endpoint
curl -X POST http://localhost:3000/webhooks/miro \
-H "Content-Type: application/json" \
-H "X-Miro-Signature: $(echo -n '{"event":"board_subscription_changed","type":"create","boardId":"test","item":{"id":"123","type":"sticky_note"}}' | openssl dgst -sha256 -hmac "$MIRO_WEBHOOK_SECRET" | awk '{print $2}')" \
-d '{"event":"board_subscription_changed","type":"create","boardId":"test","item":{"id":"123","type":"sticky_note"}}'# Use Pipedream for webhook debugging# See: https://developers.miro.com/docs/set-up-a-test-endpoint-for-webhooks
Instructions
Use the ordered procedures and code samples in this guide as a sequence: begin with the prerequisites, apply the configuration or operational step for the target environment, then perform the documented validation or cleanup before proceeding. Keep credentials in the documented secret store; never hard-code them in source.
Output
Following this guide produces the Miro integration outcome for its topic—configuration, validation evidence, operational recovery, or a documented migration result. Record command output and relevant identifiers so a failed step is traceable.
Examples
Start with the smallest applicable command or code example in the relevant section, using a dedicated test board and non-production credentials. Confirm the expected response or validation result before applying the pattern to production.