Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.1.0",
"info": {
"title": "Transaction API",
"version": "3.0.1"
},
"servers": [
{
"url": "https://api.fenergox.com/tm/realtime"
}
],
"paths": {
"/event/transaction/v3": {
"post": {
"summary": "Handle Transaction Event",
"description": "Upsert a Transaction modification event and execute rules for the transaction",
"operationId": "handle_transaction_event_event_transaction_v3_post",
"parameters": [
{
"description": "Indicate a migrated transaction for other TM services if set to 'true'",
"required": false,
"schema": {
"type": "string",
"title": "Migrated-Transaction",
"description": "Indicate a migrated transaction for other TM services if set to 'true'"
},
"name": "migrated-transaction",
"in": "header"
},
{
"description": "Indicate if rule execution should be skipped",
"required": false,
"schema": {
"type": "string",
"title": "Skip-Rule-Execution",
"description": "Indicate if rule execution should be skipped"
},
"name": "skip-rule-execution",
"in": "header"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransactionEventRequest"
}
}
},
"required": true
},
"responses": {
"201": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransactionEventResponse"
}
}
}
},
"400": {
"description": "A data validation error occurred. See [validation details](/api-docs/transaction-monitoring-apis/transactions/transaction-api) for all rules and error shapes.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"request_uuid": {
"type": "string"
},
"reason": {
"type": "string"
}
}
},
"examples": {
"invalid_by_external_id_uuid": {
"summary": "Invalid UUID format for by_external_id",
"value": {
"request_uuid": "<uuid>",
"reason": "2 validation errors for TransactionEventRequest\nsender\n Value error, by_external_id must be a valid UUID (type=value_error)\nreceiver\n Value error, by_external_id must be a valid UUID (type=value_error)"
}
},
"unknown_entity_uuid": {
"summary": "Entity UUID not found in CLM",
"value": {
"request_uuid": "<uuid>",
"reason": "1 validation errors for TransactionEventRequest\n'FD086799-7B02-4C32-987A-743CC9132164'\n Value error, Entity does not yet exist in CLM (type=value_error)"
}
},
"missing_external_entity_type": {
"summary": "Missing external_entity_type when by_external_id not provided",
"value": {
"request_uuid": "<uuid>",
"reason": "1 validation error for TransactionEventRequest\nreceiver\n Value error, Either `by_external_id` or `external_entity_type` must be provided (type=value_error)"
}
},
"missing_entity_sub_object": {
"summary": "external_entity_type declared but matching sub-object absent",
"value": {
"request_uuid": "<uuid>",
"reason": "1 validation error for TransactionEventRequest\nreceiver.individual\n field required (type=value_error.missing)"
}
},
"both_by_external_id_and_embedded": {
"summary": "Both by_external_id and embedded external_id provided",
"value": {
"request_uuid": "<uuid>",
"reason": "1 validation error for TransactionEventRequest\nsender\n Only provide an entity `by_external_id` value or an embedded entity `external_id` value, not both. (type=value_error)"
}
},
"created_at_too_far_future": {
"summary": "modification.created_at too far in the future",
"value": {
"request_uuid": "<uuid>",
"reason": "Provided modification created_at datetime is too far in the future compared to the system's datetime (+720 hours). Provided datetime vs max newest allowed datetime (in UTC): 2024-02-11 13:36:41.624237+00:00 vs 2024-02-11 13:36:41.624237+00:00."
}
},
"created_at_too_far_past": {
"summary": "modification.created_at too far in the past",
"value": {
"request_uuid": "<uuid>",
"reason": "Provided modification created_at datetime is too far in the past compared to the system's datetime (-30 days). Provided datetime vs max oldest allowed datetime (in UTC): 2023-12-11 13:36:41.624237+00:00 vs 2024-01-10 13:36:41.624237+00:00."
}
},
"additional_fields_wrong_type": {
"summary": "additional_fields value has wrong type",
"value": {
"request_uuid": "40229070753",
"reason": "2 validation errors for TransactionEventRequest\nreceiver -> business -> additional_fields -> email -> str\n Input should be a valid boolean (type=bool_type)\nreceiver -> business -> additional_fields -> email -> list[str]\n Input should be a valid list (type=list_type)"
}
}
}
}
}
},
"403": {
"description": "Please retry sending the transaction.."
},
"404": {
"description": "Please retry sending the transaction.."
},
"409": {
"description": "The requested operation could not be performed due to a data conflict."
},
"500": {
"description": "Please retry sending the transaction.."
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
},
"429": {
"description": "Too many requests. The endpoint rate limit was exceeded. Back off and retry.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"request_uuid": {
"type": "string"
},
"reason": {
"type": "string"
}
}
},
"examples": {
"rate_limit_exceeded": {
"summary": "Rate limit exceeded",
"value": {
"request_uuid": "<uuid>",
"reason": "The endpoint received too many requests to correctly process the current transaction. Please retry sending the transaction at a later time."
}
}
}
}
}
}
},
"security": [
{
"OAuth2 Client Credentials": []
}
]
}
},
"/backtest": {
"post": {
"summary": "Handle Backtest Event Post",
"description": "Handle a backtest request",
"operationId": "handle_backtest_event_post_backtest_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateBacktestPayload"
}
}
},
"required": true
},
"responses": {
"201": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BTResponsePost"
}
}
}
},
"400": {
"description": "A data validation occurred."
},
"403": {
"description": "No permission to take the respective action."
},
"404": {
"description": "The requested resource was not found."
},
"409": {
"description": "The requested operation could not be performed due to a data conflict."
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"OAuth2 Client Credentials": []
}
]
}
},
"/backtest-overview": {
"get": {
"summary": "Handle Backtest Request Overview",
"description": "Get a backtest based on an ID or a list of backtests based on a status",
"operationId": "handle_backtest_request_overview_backtest_overview_get",
"parameters": [
{
"required": true,
"schema": {
"type": "string",
"title": "Backtest Id"
},
"name": "backtest_id",
"in": "query"
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EngineBacktestResponse"
}
}
}
},
"400": {
"description": "A data validation occurred."
},
"403": {
"description": "No permission to take the respective action."
},
"404": {
"description": "The requested resource was not found."
},
"409": {
"description": "The requested operation could not be performed due to a data conflict."
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"OAuth2 Client Credentials": []
}
]
}
},
"/backtests": {
"get": {
"summary": "Handle Backtests Request",
"description": "Get a list of backtests based on an optional status",
"operationId": "handle_backtests_request_backtests_get",
"parameters": [
{
"required": false,
"schema": {
"$ref": "#/components/schemas/BacktestStatus"
},
"name": "status",
"in": "query"
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EngineBacktestResponseByStatus"
}
}
}
},
"400": {
"description": "A data validation occurred."
},
"403": {
"description": "No permission to take the respective action."
},
"404": {
"description": "The requested resource was not found."
},
"409": {
"description": "The requested operation could not be performed due to a data conflict."
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
},
"security": [
{
"OAuth2 Client Credentials": []
}
]
}
}
},
"components": {
"schemas": {
"Address": {
"properties": {
"id": {
"type": "integer",
"title": "Id",
"maximum": 2147483647,
"minimum": -2147483648,
"description": "32-bit integer identifier"
},
"label": {
"type": "string",
"title": "Label",
"description": "Label of the address",
"example": "Home"
},
"first_name": {
"type": "string",
"title": "First Name",
"description": "First name for the address contact",
"example": "Jane"
},
"last_name": {
"type": "string",
"title": "Last Name",
"description": "Last name for the address contact",
"example": "Doe"
},
"name_prefix": {
"type": "string",
"title": "Name Prefix",
"description": "Prefix for the address contact",
"example": "von"
},
"address": {
"type": "string",
"title": "Address",
"description": "contact's full address (street_name house_number-house_number_additional)",
"example": "abc road 6-b"
},
"company_name": {
"type": "string",
"title": "Company Name",
"description": "Company name in case of business contact",
"example": "company A"
},
"company_tax_id": {
"type": "string",
"title": "Company Tax Id",
"description": "Tax / VAT ID for the billing contact's company",
"example": "string"
},
"postal_code": {
"type": "string",
"title": "Postal Code",
"description": "Postal code for Entity's address",
"example": "97214"
},
"city": {
"type": "string",
"title": "City",
"description": "City name for Entity's address",
"example": "string"
},
"state": {
"type": "string",
"title": "State",
"description": "State name for Entity's address",
"example": "Oregon"
},
"country_code": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"title": "Country Code",
"description": "ISO-3166 alpha-2 country code for Entity's address",
"example": "US"
}
},
"type": "object",
"title": "Address"
},
"AlertSample": {
"properties": {
"num_trx": {
"type": "integer",
"title": "Num Trx"
},
"trx_external_mod_ids": {
"items": {
"type": "string"
},
"type": "array",
"title": "Trx External Mod Ids"
},
"current_trx_external_id": {
"type": "string",
"title": "Current Trx External Id"
},
"current_trx_mod_external_id": {
"type": "string",
"title": "Current Trx Mod External Id"
},
"current_sender_external_id": {
"type": "string",
"title": "Current Sender External Id"
},
"current_receiver_external_id": {
"type": "string",
"title": "Current Receiver External Id"
},
"alert_date": {
"type": "string",
"title": "Alert Date"
},
"original_datetime": {
"type": "string",
"title": "Original Datetime"
},
"alert_type": {
"type": "string",
"title": "Alert Type"
},
"rule_alias": {
"type": "string",
"title": "Rule Alias"
},
"rule_description": {
"type": "string",
"title": "Rule Description"
},
"rule_entity_type": {
"type": "string",
"title": "Rule Entity Type"
},
"rule_modification_type": {
"type": "string",
"title": "Rule Modification Type"
},
"rule_features": {
"items": {
"$ref": "#/components/schemas/RuleFeature"
},
"type": "array",
"title": "Rule Features"
},
"screening_results": {
"type": "object",
"title": "Screening Results"
},
"deduplication_id": {
"type": "string",
"title": "Deduplication Id"
}
},
"type": "object",
"required": [
"num_trx",
"trx_external_mod_ids",
"current_trx_external_id",
"current_trx_mod_external_id",
"current_sender_external_id",
"current_receiver_external_id",
"alert_type",
"rule_alias",
"rule_description",
"rule_entity_type"
],
"title": "AlertSample",
"description": "trx represents the number of transactions"
},
"BTResponsePost": {
"properties": {
"backtest_id": {
"type": "string",
"title": "Backtest Id"
},
"status": {
"$ref": "#/components/schemas/BacktestStatus"
},
"request_datetime": {
"type": "string",
"format": "date-time",
"title": "Request Datetime"
}
},
"type": "object",
"required": [
"backtest_id",
"status",
"request_datetime"
],
"title": "BTResponsePost"
},
"BacktestStatus": {
"type": "string",
"enum": [
"to_do",
"preparing",
"in_progress",
"cleaning_up",
"done",
"failed"
],
"title": "BacktestStatus",
"description": "Possible states of a backtest request"
},
"BacktestVersion": {
"type": "string",
"enum": [
"V1",
"V2"
],
"title": "BacktestVersion",
"description": "An enumeration."
},
"Business": {
"properties": {
"external_id": {
"type": "string",
"title": "External Id",
"description": "external id of the entity",
"example": "client_123"
},
"label": {
"allOf": [
{
"$ref": "#/components/schemas/Label"
}
],
"description": "label of the entity",
"example": "merchant"
},
"email": {
"type": "string",
"title": "Email",
"description": "E-mail address for the entity (not validated)",
"example": "someone@sentinels.ai"
},
"phone_number": {
"type": "string",
"title": "Phone Number",
"description": "Phone number of the entity (not validated)",
"example": "+31612345678"
},
"risk_assessment": {
"type": "string",
"title": "Risk Assessment",
"description": "Business specific risk assessment information",
"example": "High"
},
"full_name": {
"type": "string",
"title": "Full Name",
"description": "Full name of the entity if no other naming specifics are given",
"example": "John Doe"
},
"additional_fields": {
"type": "object",
"title": "Additional Fields",
"example": {
"some_attribute": "high",
"another_attribute": 100
},
"description": "Arbitrary indexed data for this transaction. Special validation is applied. [See additional_fields validation details](/api-docs/transaction-monitoring-apis/transactions/transaction-api#additional-fields-validations)."
},
"peer_group_external_id": {
"type": "string",
"title": "Peer Group External Id",
"description": "Peer group id as given by the Client",
"example": "PG-CRY-ALL"
},
"addresses": {
"items": {
"$ref": "#/components/schemas/Address"
},
"type": "array",
"title": "Addresses"
},
"payment_options": {
"items": {
"$ref": "#/components/schemas/PaymentOption"
},
"type": "array",
"title": "Payment Options"
},
"entity_groups_external": {
"items": {
"type": "string"
},
"type": "array",
"title": "Entity Groups External"
},
"name": {
"type": "string",
"title": "Name",
"description": "Name of the organisational unit or sub-organisation for the business",
"example": "Global corp"
},
"name_aliases": {
"items": {
"type": "string"
},
"type": "array",
"title": "Name Aliases",
"description": "Self-chosen trading names for the business",
"example": [
"GC",
"Globco"
]
},
"website": {
"type": "string",
"title": "Website",
"description": "The organisation's website URL",
"example": "www.globcorp.com"
},
"legal_form": {
"type": "string",
"title": "Legal Form",
"description": "Legal form of the business",
"example": "Private limited company/ BV"
},
"sector": {
"type": "string",
"title": "Sector",
"description": "Sector the business is active in",
"example": "Agriculture"
},
"registration_name": {
"type": "string",
"title": "Registration Name",
"description": "Chamber of Commerce registration name for business",
"example": "Globco"
},
"registration_date": {
"type": "string",
"format": "date",
"title": "Registration Date",
"description": "Official registration date to Chamber of Commerce of the business, ISO-8601",
"example": "2019-09-26"
},
"registration_country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"title": "Registration Country",
"description": "ISO-3166 alpha-2 country code for country of registration",
"example": "NL"
},
# --- truncated at 32 KB (100 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fenergo/refs/heads/main/openapi/fenergo-tm-realtime-api-spec-openapi.json