Transaction API 3.0.1

Transaction API — OpenAPI 3.1.0 contract published by Fenergo for the transaction-monitoring service of the Fen-X SaaS platform, carrying 4 path(s) and 4 operation(s). Harvested verbatim from Fenergo's own published specification endpoint.

Operations 4

POST /event/transaction/v3 Handle Transaction Event #
POST /backtest Handle Backtest Event Post #
GET /backtest-overview Handle Backtest Request Overview #
GET /backtests Handle Backtests Request #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tm-realtime-api-spec"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fenergo-tm-realtime-api-spec-openapi.json Raw ↑
{
    "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