ButterflyMX · AsyncAPI Specification
Butterflymx Webhooks
Version
View Spec
View on GitHub
Access Controlphysical-accesssmart-intercomPropTechProperty ManagementMultifamilyBuilding AutomationVisitor ManagementIoTsmart-locksAuthenticationWebhookAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-08'
method: searched
source: https://apidocs.butterflymx.com/docs/webhooks
spec_type: WebhookCatalog
asyncapi_published: false
asyncapi_note: >-
ButterflyMX has a real event surface but publishes NO AsyncAPI document — no /asyncapi.yaml on any host,
nothing in the GitHub organization, no event-catalog page. This file captures the webhook surface exactly
as the provider documents it. No AsyncAPI was authored on their behalf.
model: >-
Webhooks are not a standalone resource. They are created as "integrations" against either a building or a
tenant, with an `integrator` of `webhook`, a `configuration` (url + method) and a list of event
`bindings`.
scopes:
- scope: building
endpoint: /v4/buildings/{building_id}/integrations
configured_by: Building admin (e.g. property manager)
event_coverage: Entire building
use_cases:
- Security dashboards
- Delivery monitoring
- scope: tenant
endpoint: /v4/tenants/{tenant_id}/integrations
configured_by: Tenant (resident or unit owner)
event_coverage: Events tied to the tenant's unit only
use_cases:
- Personal apps
- Smart-home automations
events:
- resource_type: call
action: create
description: New video call placed.
note: >-
Required by partners integrating the ButterflyMX mobile SDK — the SDK does not initiate connections by
itself, so the call webhook is how an application learns an incoming call exists.
- resource_type: door_release
action: create
description: Door unlocked (via app, PIN, or QR).
payload:
shape: '{"event": {"resource_type": "...", "action": "...", "data": {...}}}'
example_door_release:
event:
resource_type: door_release
action: create
data:
id: 123456789
logged_at: '2025-04-24T10:24:35Z'
access_point: 22177636
entry_method: Swipe to open
release_status: Unlocked
name: John Tenant
image_url: https://cdn.butterflymx.com/snapshot.png
subscription_request_example:
data:
type: integrations
attributes:
integrator: webhook
configuration:
url: https://your-webhook-url.com/building-events
method: post
bindings:
- resource_type: door_release
actions:
- create
- resource_type: call
actions:
- create
management:
list:
- GET /v4/buildings/{building_id}/integrations
- GET /v4/tenants/{tenant_id}/integrations
create:
- POST /v4/buildings/{building_id}/integrations
- POST /v4/tenants/{tenant_id}/integrations
show:
- GET /v4/buildings/{building_id}/integrations/{id}
- GET /v4/tenants/{tenant_id}/integrations/{id}
update:
- PUT /v4/buildings/{building_id}/integrations/{id}
- PUT /v4/tenants/{tenant_id}/integrations/{id}
delete:
- DELETE /v4/buildings/{building_id}/integrations/{id}
- DELETE /v4/tenants/{tenant_id}/integrations/{id}
delivery:
ack_window_seconds: 5
ack_note: Respond with 200 OK within 5 seconds to avoid a retry.
retries: documented as occurring, but the retry schedule and cap are not published
duplicate_delivery: >-
The provider states the consumer must safely handle duplicate deliveries; there is no delivery-id or
dedupe key in the documented payload.
security:
signature: >-
NOT provided by default. The docs describe signature verification as "optional" and put the burden on
the integrator ("Implement IP filtering or shared secret verification"). No signing algorithm, header
name, or secret-rotation process is documented.
transport: HTTPS endpoint supplied by the subscriber
testing:
tool: https://webhook.site
reference_receiver: https://github.com/runslikebutter/webhooks-demo-app
gaps:
- No AsyncAPI or machine-readable event schema.
- No webhook signature contract — the only documented integrity control is DIY IP filtering.
- No event-id or delivery-id in the payload, yet duplicate delivery is expected.
- Only two event types (`call.create`, `door_release.create`) for a platform with many more state changes.
x-evidence:
- url: https://apidocs.butterflymx.com/docs/webhooks.md
http_status: 200
fetched: '2026-08-08'
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/butterflymx-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.