API reference · Communities & institutions
Credit union member communications POST Broadcast to members or officers POST /credit-union/{reference}/broadcast
A parent may write to its affiliates' officers and never to their members: a parent messages the society and the society decides what to pass on. Broadcasts are capped per society per window, barred outside daytime hours where they are promotional, and recorded with their sender and their cost estimate.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: SendBroadcastRequest · Response: GenericResponseBroadcastResponse
curl Request Response
Copy curl -X POST "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/broadcast" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"audience": "OWN_MEMBERS",
"channel": "SMS",
"classification": "TRANSACTIONAL",
"subject": "string",
"body": "string",
"language": "string"
}' Copy {
"audience": "OWN_MEMBERS",
"channel": "SMS",
"classification": "TRANSACTIONAL",
"subject": "string",
"body": "string",
"language": "string"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"senderUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"audience": "OWN_MEMBERS",
"channel": "SMS",
"classification": "TRANSACTIONAL",
"category": "NOTICE",
"language": "string",
"subject": "string",
"body": "string",
"contentHash": "string",
"recipientCount": 0,
"suppressedOptOutCount": 0,
"unreachableCount": 0,
"estimatedCostAmount": 0,
"currencyCode": "string",
"status": "QUEUED",
"sentAt": "2026-09-25T10:00:00Z"
},
"description": "Broadcast accepted successfully"
} Responses Status When 200Broadcast accepted successfully
GET List recent broadcasts GET /credit-union/{reference}/broadcasts
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Example Response: GenericResponseListBroadcastResponse
curl Response
Copy curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/broadcasts" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"senderUserReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"audience": "OWN_MEMBERS",
"channel": "SMS",
"classification": "TRANSACTIONAL",
"category": "NOTICE",
"language": "string",
"subject": "string",
"body": "string",
"contentHash": "string",
"recipientCount": 0,
"suppressedOptOutCount": 0,
"unreachableCount": 0,
"estimatedCostAmount": 0,
"currencyCode": "string",
"status": "QUEUED",
"sentAt": "2026-09-25T10:00:00Z"
}
],
"description": "Broadcasts read successfully"
} Responses Status When 200Broadcasts read successfully
PUT Set a communication preference PUT /credit-union/{reference}/communication-preference
A member may opt out of communications and never out of notices. An opt-out that suppressed a guarantee call notice would let a member defeat a recovery by unsubscribing, and one that suppressed a tariff change would leave them bound by terms they were never shown, so the preference is stored against communications explicitly rather than as blanket consent withdrawal.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: UpdateCommunicationPreferenceRequest · Response: GenericResponseCommunicationPreferenceResponse
curl Request Response
Copy curl -X PUT "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/communication-preference" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"userReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"scope": "ALL",
"optedOut": true,
"source": "MEMBER",
"keywordReceived": "string"
}' Copy {
"userReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"scope": "ALL",
"optedOut": true,
"source": "MEMBER",
"keywordReceived": "string"
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"userReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"scope": "ALL",
"appliesTo": "NOTICE",
"optedOut": true,
"source": "MEMBER",
"keywordReceived": "string",
"optedOutAt": "2026-09-25T10:00:00Z",
"optedInAt": "2026-09-25T10:00:00Z"
},
"description": "Communication preference set successfully"
} Responses Status When 200Communication preference set successfully
GET Read communication preferences GET /credit-union/{reference}/communication-preferences
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Name Default userReferenceOptional
Example Response: GenericResponseListCommunicationPreferenceResponse
curl Response
Copy curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/communication-preferences" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"userReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"scope": "ALL",
"appliesTo": "NOTICE",
"optedOut": true,
"source": "MEMBER",
"keywordReceived": "string",
"optedOutAt": "2026-09-25T10:00:00Z",
"optedInAt": "2026-09-25T10:00:00Z"
}
],
"description": "Communication preferences read successfully"
} Responses Status When 200Communication preferences read successfully
GET Read the language a member is written to in GET /credit-union/{reference}/language-preference
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Name Default userReferenceOptional
Example Response: GenericResponseLanguagePreferenceResponse
curl Response
Copy curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/language-preference" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"userReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"preferredLanguage": "string",
"unionDefaultLanguage": "string"
},
"description": "Language preference read successfully"
} Responses Status When 200Language preference read successfully
PUT Set the language a member is written to in PUT /credit-union/{reference}/language-preference
Cooperative membership spans literacy levels, and a total-cost-of-credit disclosure that cannot be read has not been made. Where no variant of a template exists in the member's language the notice goes out in the society's default and records that it did, because a silently English notice in a Hausa-speaking society is a real failure and an invisible one.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: UpdateLanguagePreferenceRequest · Response: GenericResponseLanguagePreferenceResponse
curl Request Response
Copy curl -X PUT "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/language-preference" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"userReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"language": "string"
}' Copy {
"userReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"language": "string"
} Copy {
"data": {
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"positionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"userReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"preferredLanguage": "string",
"unionDefaultLanguage": "string"
},
"description": "Language preference set successfully"
} Responses Status When 200Language preference set successfully
GET What the society spent telling people things GET /credit-union/{reference}/notification-spend
Counted from the notices and broadcasts themselves rather than a running total, and split between what was spent discharging obligations and what the society chose to send. A union that cannot see what it spends will either over-spend or stop telling people things.
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Query parameters Name Default fromDateOptional toDateOptional
Example Response: GenericResponseNotificationSpendResponse
curl Response
Copy curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/notification-spend?fromDate=value&toDate=value" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": {
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"fromDate": "2026-09-25",
"toDate": "2026-09-25",
"currencyCode": "string",
"lines": [
{
"month": "string",
"category": "NOTICE",
"channel": "SMS",
"messageCount": 0,
"costAmount": 0
}
],
"totalCostAmount": 0,
"totalMessageCount": 0,
"uncostedMessageCount": 0,
"noticeCostAmount": 0,
"communicationCostAmount": 0
},
"description": "Notification spend read successfully"
} Responses Status When 200Notification spend read successfully
PUT Set what a message costs the society on a channel PUT /credit-union/{reference}/notification-unit-cost
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live Content-Typeapplication/json
Path parameters Example Request body: UpdateNotificationUnitCostRequest · Response: GenericResponseNotificationUnitCostResponse
curl Request Response
Copy curl -X PUT "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/notification-unit-cost" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '{
"channel": "SMS",
"unitCostAmount": 0
}' Copy {
"channel": "SMS",
"unitCostAmount": 0
} Copy {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"channel": "SMS",
"unitCostAmount": 0,
"currencyCode": "string"
},
"description": "Notification unit cost set successfully"
} Responses Status When 200Notification unit cost set successfully
GET Read what a message costs the society on each channel GET /credit-union/{reference}/notification-unit-costs
Headers Name Notes AuthorizationBearer token X-TenantYour tenant X-Environmenttest or live
Path parameters Example Response: GenericResponseListNotificationUnitCostResponse
curl Response
Copy curl -X GET "https://api.bridgemoni.com/credit-union/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/notification-unit-costs" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" Copy {
"data": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"unionReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"channel": "SMS",
"unitCostAmount": 0,
"currencyCode": "string"
}
],
"description": "Notification unit costs read successfully"
} Responses Status When 200Notification unit costs read successfully