Isode X.400 Gateway API Overview

Version 16.6
Copyright (c) 2005-2015, Isode Limited, London, England


This document is a specification of the Isode X.400 Gateway API. A summary of this product, which sets out its general function and intended application is given in

How to Read this API

If you wish to "Jump right in" then the best thing to do is:

  1. Look at the x400_mttutorial.c example program. It is a very simple streamlined program that demonstrates the basic approach of manipulating API objects.
  2. Look also at the x400_mtsend.c and x400_mtrcv.c example programs. These programs give a more detailed example of how the API should be used.
  3. Other examples are also provided:
  1. Look at the reference table which matches attributes described within the standards to the objects / attributes used within the API.
  2. Have a good read of the API manual.

The API is read by following the links on the left of the page.Recommended places to start:

The collocated interface, intended for AFTN and CIDIN gateway applications.

This is an API for interfacing to an X400 MTA suitable for building gateway functionality. It provides mechanisms for building and examining X.400 message, probes and reports. It also provides mechanisms for transferring such objects into X.400, and transferring out such objects.


It is highly recommended you are familiar with the following standards:

  • X.402
  • X.411
  • X.413
  • X.420
  • STANAG 4406 Annex A
  • ISO/IEC 10021
  • ISO/IEC 10022
  • ISO/IEC 10024
  • ISO/IEC 10025
  • ISO/IEC 10027

Relationship of Gateway and Pure X.400 Interfaces

Top-level message objects are built, transferred in and out, and examined, using the X400 Gateway API. In particular, functions specific to X.400 MT message objects are used to get and set attribute values within messages. For example, X400mtMsgAddStrParam() would be used to set a string parameter value in such a message.

There is one specific situation where protocol-independent functions need to be used to manipulate messages: this is when dealing with forwarded messages (i.e. messages which have been included as bodyparts of "top-level" X.400 MT messages). In this case, the equivalent "pure X.400" functions must be used - X400MsgAddStrParam() in the equivalent case to the one described above.

Language Bindings

The X.400 Gateway API is available in C, Java and Tcl bindings.

C Bindings

The example code is in:

  • Unix: /opt/isode/share/x400sdk/example/c
  • Windows: c:\Isode\share\x400sdk\example\c

The details of the C bindings are here:

Java Bindings

The example code is in

  • Unix: /opt/isode/share/x400sdk/example/java
  • Windows: c:\Isode\share\x400sdk\example\java

Tcl Bindings

The example code is in

  • Unix: /opt/isode/share/x400sdk/example/tcl
  • Windows: c:\Isode\share\x400sdk\example\tcl

Style of API

The APIs use an object-oriented style, and rely on arguments which are

  • integers (either explicitly or as manifest constants)
  • strings (whose length is passed as an integer)
  • opaque objects (on which the API functions perform operations)


Please send any comments on the API to