> For the complete documentation index, see [llms.txt](https://help.security.gallagher.com/knowledge-hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.security.gallagher.com/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f.md).

# Controller API (FTCAPI) and Middleware Framework (FMF)

Compare FTCAPI and middleware integrations that communicate through Gallagher controllers.

This section covers how the FTCAPI Middleware Framework (FMF) and the FT Controller API (FTCAPI) operate between the Command Centre server, Gallagher controllers, and external systems.

Both support communication between external systems and Command Centre using Gallagher controllers. The **controller acts as the communication bridge**, securely transmitting and receiving events between Command Centre and third-party applications.

## Terminology

**FTCAPI Middleware Framework (FMF)** is used for integrations developed by Gallagher. It provides the middleware layer that enables controllers or middleware services to communicate with external third-party systems. It supports several integration mechanisms, including ASCII text and SNMP, and operates through the **FTCAPI Router Service**.

**FT Controller API (FTCAPI)** stands for Future Technology Controller API. It is **not** a middleware framework. It provides a controller-level API designed for integrations developed by third-party vendors, and enables external systems to interact securely with Command Centre by communicating directly through the controller.

> ⚠️ **You cannot have both the Controller API and the FTCAPI installed on the same computer.** They both use the same DLL, so they cannot co-exist and function correctly at the same time on the same computer.

## How they differ

|               | FMF (FTCAPI Middleware Framework)                                | FTCAPI (FT Controller API)                         |
| ------------- | ---------------------------------------------------------------- | -------------------------------------------------- |
| For           | Integrations developed by **Gallagher**                          | Integrations developed by **third-party vendors**  |
| Nature        | Middleware layer via the **FTCAPI Router Service**               | Controller-level API. **No service is installed.** |
| Mechanisms    | ASCII text, SNMP                                                 | Direct DLL calls through the controller            |
| Installs from | `…\Utilities\System Interfaces\Middleware Framework vMFX.XX.XXX` | `…\Utilities\Controller API`                       |

The Gallagher Middleware is often installed either on the Command Centre server or on the third-party server itself. Where a third-party system uses the Controller API, it uses the `GallagherFTCAPI.dll` file in the third-party system to communicate with Command Centre through the Gallagher controller.

Both installers place `GallagherFTCAPI.dll` and `GallagherFTCAPI.pem` in the install directory. The `GallagherFTCAPI.pem` file must be taken to a Command Centre workstation to generate a `GallagherFTCAPI.ini` file before the system will communicate with the controller. The `.ini` holds the encryption key that the DLL uses to talk to the controller, and tells it which port to communicate on. The default is **1073**.

> 🧭 **Where to start**
>
> * **Generating or fixing the ini file?** → [Controller API - FTCAPI.ini File](/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/controller-api-ftcapi.ini-file.md)
> * **Working out where the middleware should sit?** → [Controller API - Server and Middleware](/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/controller-api-server-and-middleware.md)
> * **Choosing a plugin?** → [Middleware Framework - ASCII Text Vs Controller Resident Plugin](/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/middleware-framework-ascii-text-vs-controller-resident-plugin.md)
> * **Sending ASCII from the controller instead?** → [ASCII Interface (CRPS)](/knowledge-hub/products/cc-software/configure/interface-options/api/ascii-interface-crps.md)

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Controller API - Fault Finding using the Test Harness</strong></td><td></td><td></td><td><a href="/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/controller-api-fault-finding-using-the-test-harness.md">Controller API - fault finding using the test harness</a></td></tr><tr><td><strong>Controller API - FTCAPI Error Messages</strong></td><td></td><td></td><td><a href="/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/controller-api-ftcapi-error-messages.md">Controller API - FTCAPI error messages</a></td></tr><tr><td><strong>Controller API - FTCAPI.ini File</strong></td><td></td><td></td><td><a href="/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/controller-api-ftcapi.ini-file.md">Controller API - FTCAPI.ini file</a></td></tr><tr><td><strong>Controller API - Server and Middleware</strong></td><td></td><td></td><td><a href="/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/controller-api-server-and-middleware.md">Controller API - server and middleware</a></td></tr><tr><td><strong>Middleware Framework - Ademco 685 Plugin</strong></td><td></td><td></td><td><a href="/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/middleware-framework-ademco-685-plugin.md">Middleware Framework - Ademco 685 plugin</a></td></tr><tr><td><strong>Middleware Framework - ASCII Interface (CRPS) Plugins</strong></td><td></td><td></td><td><a href="/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/middleware-framework-ascii-interface-crps-plugins.md">Middleware Framework - ASCII interface (CRPS) plugins</a></td></tr><tr><td><strong>Middleware Framework - ASCII Text Vs Controller Resident Plugin</strong></td><td></td><td></td><td><a href="/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/middleware-framework-ascii-text-vs-controller-resident-plugin.md">Middleware Framework - ASCII text vs Controller Resident plugin</a></td></tr><tr><td><strong>Middleware Framework - CRPS Plugin</strong></td><td></td><td></td><td><a href="/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/middleware-framework-crps-plugin.md">Middleware Framework - CRPS plugin</a></td></tr><tr><td><strong>Middleware Framework - SNMP Plugin</strong></td><td></td><td></td><td><a href="/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f/middleware-framework-snmp-plugin.md">Middleware Framework - SNMP plugin</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.security.gallagher.com/knowledge-hub/products/cc-software/configure/interface-options/api/controller-api-ftcapi-and-middleware-f.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
