API reference · Platform & integration

Webhooks

GET List deliveries

GET /webhook/delivery

Every delivery Bridge attempted to endpoints you own, newest first. Attempts are on the detail view rather than here, so this stays cheap.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
endpointReferenceOptional
statusOptional
limit50
organizationReferenceOptional

Example

Response: GenericResponseListWebhookDeliveryResponse

curl -X GET "https://api.bridgemoni.com/webhook/delivery?limit=50" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook deliveries retrieved
403You cannot act for that organization
404Webhook endpoint not found

GET Read one delivery, with every attempt

GET /webhook/delivery/{reference}

Each attempt carries your server's own status code, how long it took, and up to 2KB of the response body it returned. That is usually the whole diagnosis.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseWebhookDeliveryResponse

curl -X GET "https://api.bridgemoni.com/webhook/delivery/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook delivery retrieved
403You cannot act for that organization
404Webhook delivery not found

POST Replay a delivery

POST /webhook/delivery/{reference}/replay

Creates a NEW delivery and never modifies the original - the record of what was attempted and when is not editable. Permitted on a delivery that already succeeded, which is a common recovery move when your own consumer crashed after acknowledging. Replays are signed with your CURRENT secrets, not the ones in force originally.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseWebhookReplayResponse

curl -X POST "https://api.bridgemoni.com/webhook/delivery/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/replay" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook delivery replayed
403You cannot act for that organization
404Webhook delivery not found
409That endpoint has been deleted or disabled and cannot receive a replay

GET List webhook endpoints

GET /webhook/endpoint

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
statusOptional
organizationReferenceOptional

Example

Response: GenericResponseListWebhookEndpointResponse

curl -X GET "https://api.bridgemoni.com/webhook/endpoint" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook endpoints retrieved
403You cannot act for that organization

POST Register a webhook endpoint

POST /webhook/endpoint

Registers a destination and issues its first signing secret. **The secret is returned in this response and nowhere else, ever** - store it before you close the response. Every delivery to this endpoint is signed with it, and verifying that signature is the only thing that distinguishes a Bridge event from an unauthenticated POST from the internet.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Query parameters

NameDefault
organizationReferenceOptional

Example

Request body: CreateWebhookEndpointRequest · Response: GenericResponseCreateWebhookEndpointResponse

curl -X POST "https://api.bridgemoni.com/webhook/endpoint" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://api.merchant.example.com/bridge/events",
  "transport": "HTTP",
  "label": "Production ledger sync",
  "description": "string",
  "deliveryMode": "UNORDERED",
  "eventTypes": [
    {
      "name": "string"
    }
  ],
  "headers": [
    {
      "name": "X-Merchant-Route",
      "value": "string"
    }
  ]
}'

Responses

StatusWhen
200Webhook endpoint registered
400URL malformed or not reachable from Bridge; header name reserved; unknown event type; unsupported transport
403You cannot act for that organization
409You already have an endpoint at that URL; endpoint limit reached

DELETE Delete a webhook endpoint

DELETE /webhook/endpoint/{reference}

Stops delivery permanently. The endpoint's history is retained so that what it was sent stays answerable, and its URL stays reserved to you.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseVoid

curl -X DELETE "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook endpoint deleted
403You cannot act for that organization
404Webhook endpoint not found

GET Read one webhook endpoint

GET /webhook/endpoint/{reference}

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseWebhookEndpointResponse

curl -X GET "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook endpoint retrieved
403You cannot act for that organization
404Webhook endpoint not found

PUT Update a webhook endpoint

PUT /webhook/endpoint/{reference}

A partial update: omitted fields are left alone, and a supplied header list replaces the whole set. **Changing the URL does not rotate the secret** - the two are separate decisions, and coupling them would mean a routine path change silently breaks your signature verification. It does re-check the destination and reset the failure counter.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Request body: UpdateWebhookEndpointRequest · Response: GenericResponseWebhookEndpointResponse

curl -X PUT "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "string",
  "label": {
    "name": "string"
  },
  "description": "string",
  "deliveryMode": "UNORDERED",
  "headers": [
    {
      "name": "X-Merchant-Route",
      "value": "string"
    }
  ]
}'

Responses

StatusWhen
200Webhook endpoint updated
400URL malformed or not reachable from Bridge
403You cannot act for that organization
404Webhook endpoint not found
409You already have an endpoint at that URL; this endpoint has been deleted

POST Pause a webhook endpoint

POST /webhook/endpoint/{reference}/pause

Stops delivery without losing anything: events still fan out and the backlog accrues, so resuming replays what was missed rather than starting from empty. Use this during a deploy.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
reasonOptional
organizationReferenceOptional

Example

Response: GenericResponseWebhookEndpointResponse

curl -X POST "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/pause" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook endpoint paused
403You cannot act for that organization
404Webhook endpoint not found
409This endpoint cannot be paused

POST Resume a webhook endpoint

POST /webhook/endpoint/{reference}/resume

Restarts delivery and replays the backlog, resetting the failure counter. An endpoint disabled by an operator cannot be resumed this way.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseWebhookEndpointResponse

curl -X POST "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/resume" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook endpoint resumed
403You cannot act for that organization
404Webhook endpoint not found
409This endpoint cannot be resumed

GET List an endpoint's signing secrets

GET /webhook/endpoint/{reference}/secret

Metadata only - version, prefix, status and dates. The values are not retrievable.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseListWebhookSecretResponse

curl -X GET "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/secret" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook signing secrets retrieved
403You cannot act for that organization
404Webhook endpoint not found

POST Rotate an endpoint's signing secret

POST /webhook/endpoint/{reference}/secret

Issues a new secret and puts the existing one into a retirement window. **During the window every delivery carries a signature under each secret**, so you can deploy the new one at your own pace and roll back without dropping an event - your verification code should accept a match against any v1= value in the header. The new secret is returned here and nowhere else, ever.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Request body: RotateWebhookSecretRequest · Response: GenericResponseWebhookSecretRevealResponse

curl -X POST "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/secret" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "retireExistingAfterHours": 24
}'

Responses

StatusWhen
200Webhook signing secret rotated
403You cannot act for that organization
404Webhook endpoint not found
409A rotation is already in progress; this endpoint has been deleted

DELETE Retire a signing secret immediately

DELETE /webhook/endpoint/{reference}/secret/{secretReference}

Ends the overlap early - for a secret you believe has leaked. Refused if it is the last one that can sign, because an endpoint that cannot sign cannot deliver.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference
secretReference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseVoid

curl -X DELETE "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/secret/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook signing secret revoked
403You cannot act for that organization
404Webhook endpoint or signing secret not found
409That is the endpoint's last signing secret

GET List an endpoint's subscriptions

GET /webhook/endpoint/{reference}/subscription

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseWebhookSubscriptionSetResponse

curl -X GET "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/subscription" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook subscriptions retrieved
403You cannot act for that organization
404Webhook endpoint not found

POST Add one subscription

POST /webhook/endpoint/{reference}/subscription

Leaves the rest alone. Deliberately not idempotent - a duplicate usually means two places in your configuration disagree about what this endpoint is for.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Request body: AddWebhookSubscriptionRequest · Response: GenericResponseWebhookSubscriptionSetResponse

curl -X POST "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/subscription" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "eventType": {
    "name": "string"
  }
}'

Responses

StatusWhen
200Webhook subscription added
400Unknown event type; a pattern that matches nothing; event type retired
403You cannot act for that organization; that event type needs a permission you do not hold
404Webhook endpoint not found
409Already subscribed; subscription limit reached

PUT Replace an endpoint's subscriptions

PUT /webhook/endpoint/{reference}/subscription

A genuine replace, which is the shape your infrastructure-as-code wants: types present become active, types absent are removed, and running it twice changes nothing the second time. Accepts exact names, resource.* patterns and *; the response expands each pattern to what it matches today, so you can see what you just subscribed to without reading a changelog.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Request body: WebhookSubscriptionRequest · Response: GenericResponseWebhookSubscriptionSetResponse

curl -X PUT "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/subscription" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "eventTypes": [
    {
      "name": "string"
    }
  ]
}'

Responses

StatusWhen
200Webhook subscriptions replaced
400Unknown event type; a pattern that matches nothing; event type retired
403You cannot act for that organization; that event type needs a permission you do not hold
404Webhook endpoint not found
409Subscription limit reached

DELETE Remove one subscription

DELETE /webhook/endpoint/{reference}/subscription/{eventType}

Removes exactly the entry named. Removing an event type does not remove a pattern that happens to match it, and vice versa - they are separate entries.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference
eventType

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseWebhookSubscriptionSetResponse

curl -X DELETE "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/subscription/value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook subscription removed
403You cannot act for that organization
404Webhook endpoint not found; not subscribed to that event type

POST Send a test event

POST /webhook/endpoint/{reference}/test

A real delivery through the real pipeline with a real signature, so whatever your receiver does with it is exactly what it will do with a transfer.completed. Poll GET /webhook/delivery/{reference} for the result - including your own response body if it failed.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseWebhookDeliveryResponse

curl -X POST "https://api.bridgemoni.com/webhook/endpoint/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/test" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Test delivery queued
403You cannot act for that organization
404Webhook endpoint not found
409That endpoint cannot receive a test

GET List the webhook event types

GET /webhook/event-type

Every event type this tenant can deliver, with what it means and what subscribing to it costs. Event type names never change once published: a superseded type is marked DEPRECATED with a retirement date and keeps firing until it passes.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
resourceOptional
statusOptional

Example

Response: GenericResponseListWebhookEventTypeResponse

curl -X GET "https://api.bridgemoni.com/webhook/event-type" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook event types retrieved

GET Read one webhook event type

GET /webhook/event-type/{eventType}

The catalogue entry for a single event type, by its exact published name.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
eventType

Example

Response: GenericResponseWebhookEventTypeResponse

curl -X GET "https://api.bridgemoni.com/webhook/event-type/value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook event type retrieved
404Webhook event type not found

GET Read one recorded event

GET /webhook/event/{reference}

Including the exact payload that was delivered. Rendered once when the event was recorded, so this is what happened rather than a re-derivation - re-deriving a transfer that has since been reversed would show you a lie.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseWebhookEventResponse

curl -X GET "https://api.bridgemoni.com/webhook/event/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook event retrieved
403You cannot act for that organization
404Webhook event not found

POST Replay an event to every endpoint of yours that received it

POST /webhook/event/{reference}/replay

The right shape when the fix was on our side rather than yours. Endpoints belonging to other parties to the same event are never re-delivered on your say-so.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
organizationReferenceOptional

Example

Response: GenericResponseWebhookReplayResponse

curl -X POST "https://api.bridgemoni.com/webhook/event/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/replay" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Webhook event replayed
403You cannot act for that organization
404Webhook event not found

Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors