Technical documentation –  API Baltic Hub

 

Change history

Version

Release date

Author

Change description

1.0

2025-07-24

IT BHCT

First release

1.12025-08-24IT BHCTAdded the ability to send multiple containers (up to 500) in a single request (applies to the UNITS endpoint).
1.22025-10-17IT BHCTAdded information about three endpoints: Train Operator Units & Update Seals Train Operator & Self Assign Train Operator 

 

2. Available Endpoints:


  1. get: Information about the container (UNIT)
  2. get: Information about train visit (TRAIN_VISITS)
  3. get: Information about vessel visit (VESSEL)
  4. get: Information about the rail discharge and load lists (TRAIN_DISCHARGE_LIST & TRAIN_LOAD_(Required). Unit PIN. The PIN must match the Unit PIN in the terminal system.LIST)
  5. get: Information about the container with assigned Train Operator (TRAIN_OPERATOR_UNITS)
  6. post: information about seal assign to the container (UPDATE_SEALS_TRAIN_OPERATOR)
  7. post: sending information about seals (SELF_ASSIGN_TRAIN_OPERATOR)


3. Authentication

Authorization Method: OAuth 2.0


4. Access to API

Access to the API is only possible from specified IP addresses (from the whitelist).

For API access, please contact our customer service at customerservice@baltichub.com.


5. Rate limiting for requests

200 requests / 60 seconds

 

6. Swagger 2.0

Title: Baltic Hub API Azure

Description: BalticHub API. Access from whitelisted adresses only. Authorization method- BEARER Token.

Version: 1.0.0

Host: api2.baltichub.com Base Path: /V1


7. Endpoints


-GET /TRAIN_DISCHARGE_LIST

Summary: Train discharge list

Description: Train load list- Get list of containers scheduled/onboard/incoming on Train Visit.

API address with example: https://api2.baltichub.com/V1/TRAIN_DISCHARGE_LIST?TRAIN_VISIT_ID=TUX2W31-25_EXP

Name

In

Type

Description

Required

TRAIN_VISIT_ID

query

string

(Required) BalticHub terminal system Train Visit ID.

Yes

Example:

<?xml version="1.0" encoding="UTF-8"?>

<query-response>

    <data-table filter="TRAIN_DISCHARGE_LIST" count="2">

 <columns>

            <column>Unit Nbr</column>

            <column>T-State</column>

            <column>V-State</column>

            <column>Category</column>

            <column>Line Op</column>

            <column>Type ISO</column>

            <column>Frght Kind</column>

            <column>I/B Actual Service Name</column>

            <column>Planned Position</column>

            <column>Position</column>

        </columns>

 

   <rows>

            <row primary-key="9669222089">

                <field>MNBU4126562</field>

                <field>Yard</field>

                <field>Active</field>

                <field>Storage</field>

                <field>MAE</field>

                <field>45R1</field>

                <field>Empty</field>

                <field>LOCONI - Szczecin</field>

                <field />

                <field>Y-CY1-I05.008.4.3</field>

            </row>

            <row primary-key="9669232792">

                <field>MNBU3159052</field>

                <field>Yard</field>

                <field>Active</field>

                <field>Storage</field>

                <field>MAE</field>

                <field>45R1</field>

                <field>Empty</field>

                <field>LOCONI - Szczecin</field>

                <field />

                <field>Y-CY1-I05.008.4.2</field>

            </row>

  </rows>

   </data-table>

</query-response>

 ***************************************************************************

-GET /TRAIN_LOAD_LIST

Summary: Train load list

Description: Train load list- Get list of containers scheduled/loaded/departed on Train Visit.

API address with example: https://api2.baltichub.com/V1/TRAIN_LOAD_LIST?TRAIN_VISIT_ID=TUX3W31-25_IMP

Name

In

Type

Description

Required

TRAIN_VISIT_ID

query

string

(Required) BalticHub terminal system Train Visit ID.

Yes

Example:

<?xml version="1.0" encoding="UTF-8"?>

<query-response>

    <data-table filter="TRAIN_LOAD_LIST" count="2">

 <columns>

            <column>Unit Nbr</column>

            <column>T-State</column>

            <column>V-State</column>

            <column>Category</column>

            <column>Line Op</column>

            <column>Type ISO</column>

            <column>Frght Kind</column>

            <column>I/B Actual Service Name</column>

            <column>Planned Position</column>

            <column>Position</column>

        </columns>

 

    <rows>

            <row primary-key="9628689976">

                <field>CMAU5668810</field>

                <field>Departed</field>

                <field>Departed</field>

                <field>Import</field>

                <field>CMA</field>

                <field>45G1</field>

                <field>FCL</field>

                <field>OCEAN Alliance (AEU1)</field>

                <field />

                <field>R-335449805019-1B2</field>

            </row>

            <row primary-key="9629435816">

                <field>CMAU4193221</field>

                <field>Departed</field>

                <field>Departed</field>

                <field>Import</field>

                <field>CMA</field>

                <field>45G1</field>

                <field>FCL</field>

                <field>OCEAN Alliance (AEU1)</field>

                <field />

                <field>R-378449501246-1B1</field>

            </row>

</rows>

   </data-table>

</query-response>

 ***************************************************************************

-GET /TRAIN_VISITS

Summary: Train visits

Description: Train visits-Get Train Visits.

API address with example: https://api2.baltichub.com/V1/TRAIN_VISITS?VISIT_PHASE=10CREATED&ETA_AFTER=2025-10-08 12:00&ETA_BEFORE=2025-10-12 15:30

Name

In

Type

Description

Required

VISIT_PHASE

query

string

(Optional). Multiple values allowed- use comma as separator. Possible Values: 10CREATED, 20INBOUND, 30ARRIVED, 40WORKING, 50COMPLETE, 60DEPARTED, 70CLOSED, 80CANCELED, 90ARCHIVED

No

ETA_AFTER

query

string

(Required) Mandatory. Start date of time range. Date/Time format yyyy-mm-dd hh:mm

Yes

ETA_BEFORE

query

string

(Required) Mandatory. End date of time range. Date/Time format yyyy-mm-dd hh:mm

Yes

Example:

<?xml version="1.0" encoding="UTF-8"?>

<query-response>

    <data-table filter="TRAIN_VISITS" count="2">

<columns>

            <column>Visit</column>

            <column>Phase</column>

            <column>ETA</column>

            <column>ETD</column>

            <column>ATA</column>

            <column>ATD</column>

            <column>Direction</column>

            <column>Service Name</column>

        </columns>

 

  <rows>

            <row primary-key="9723456969">

                <field>ZZZZZW33-25_EXP</field>

                <field>Complete</field>

                <field>2025-08-14 06:00</field>

                <field>2025-08-14 12:00</field>

                <field>2025-08-14 02:54</field>

                <field />

                <field>Inbound Only Train</field>

                <field>Service Name</field>

            </row>

            <row primary-key="9723454856">

                <field>YYYYY33-25_IMP</field>

                <field>Complete</field>

                <field>2025-08-14 06:00</field>

                <field>2025-08-14 12:00</field>

                <field>2025-08-14 02:54</field>

                <field />

                <field>Outbound Only Train</field>

                <field>Service name</field>

            </row>

  </rows>

 

   </data-table>

</query-response>

  ***************************************************************************

-GET /VESSEL

Summary: Vessel

Description: Vessel- Get Vessel Visit details.

API address with example: https://api2.baltichub.com/V1/VESSEL?VISIT_REF=25BERA523

Name

In

Type

Description

Required

VISIT_REF

query

string

(Required) BalticHub terminal system Vessel Visit ID.

Yes

Example:

<?xml version="1.0" encoding="UTF-8"?>

<query-response>

    <data-table filter="VESSEL" count="1">

      <columns>

 

            <column>Visit</column>

            <column>Vessel Name</column>

            <column>I/B Vyg</column>

            <column>O/B Vyg</column>

            <column>Line</column>

            <column>Phase</column>

            <column>ETA</column>

            <column>ETD</column>

            <column>ATA</column>

            <column>ATD</column>

            <column>Begin Receive</column>

            <column>DryCutoff</column>

        </columns>

 

  <rows>

            <row primary-key="9530124090">

                <field>25BERA523</field>

                <field>MSC BERANGERE</field>

                <field>GA523W</field>

                <field>GA533E</field>

                <field>MSC</field>

                <field>Working</field>

                <field>2025-08-10 22:00</field>

                <field>2025-08-14 13:00</field>

                <field>2025-08-11 01:20</field>

                <field />

                <field>2025-08-03 04:00</field>

                <field>2025-08-10 10:00</field>

            </row>

 

</data-table>

</query-response>

  *************************************************************************** 

-GET /UNIT

Summary: Unit

Description Unit-Get Unit (container) details. The ability to send multiple containers (up to 500) in a single request, separaUPDATE_SEALS_TRAIN_OPERATORted by commas.

API address with example: https://api2.baltichub.com/V1/unit?UNIT_NBR=SUDU1234567

Name

In

Type

Description

Required

UNIT_NBR

query

string

(Required)

Yes

VISIT_STATE

query

string

(Optional) Multiple values allowed- use comma as separator. Possible values: 1ACTIVE,2ADVISED,3DEPARTED,4RETIRED

No

TRANSIT_STATE

query

string

(Optional) Multiple values allowed- use comma as separator. Possible values: S10_ADVISED, S20_INBOUND, S30_ECIN, S40_YARD, S60_LOADED, S70_DEPARTED, S99_RETIRED

No

Example:

<?xml version="1.0" encoding="UTF-8"?>

<query-response>

    <data-table filter="UNIT" count="1">

        <columns>

 

            <column>Unit Nbr</column>

            <column>T-State</column>

            <column>V-State</column>

            <column>Category</column>

            <column>Line Op</column>

            <column>Type ISO</column>

            <column>Frght Kind</column>

            <column>I/B Actual Visit</column>

            <column>O/B Actual Visit</column>

            <column>Time In</column>

            <column>Time Out</column>

            <column>Unit Impediments</column>

            <column>CEN Number</column>

            <column>Cmdy</column>

            <column>VGM Weight</column>

            <column>Cargo Wt (kg)</column>

            <column>Tare Wt</column>

            <column>Weight (kg)</column>

            <column>Seal Nbr1</column>

            <column>Seal Nbr2</column>

            <column>Seal Nbr3</column>

            <column>Seal Nbr4</column>

        </columns>

 

        <rows>

            <row primary-key="8971657315">

                <field>SUDU1234567</field>

                <field>Departed</field>

                <field>Departed</field>

                <field>Import</field>

                <field>MAE</field>

                <field>45G1</field>

                <field>FCL</field>

                <field>25XXX510</field>

                <field>XXXX5656</field>

                <field>2025-03-08 01:16</field>

                <field>2025-03-12 14:48</field>

                <field>!TECHNICAL_FULL_CONTAINER</field>

                <field>CustmosNumber</field>

                <field>YYYYYYYYYY</field>

                <field>14442.0</field>

                <field>10442.0</field>

                <field>4000.0</field>

                <field>14442.0</field>

                <field />

                <field />

                <field>ML-XXXXXX</field>

                <field />

            </row>

        </rows>

 

    </data-table>

</query-response>

 *************************************************************************** 

-GET /TRAIN_OPERATOR_UNITS

Summary: TRAIN OPERATOR UNITS. Endpoint only for train operators.

Description: Unit-Get Unit (container) details with an assigned train operator for the container. The train operator can only see their own containers. 

API address with example: https://api2.baltichub.com/V1/TRAIN_OPERATOR_UNITS?UNIT_NBR=SUDU1234567

Name

In

Type

Description

Required

UNIT_NBR

query

string

(Required)

Yes

Example:

<?xml version="1.0" encoding="UTF-8"?>

<query-response>

    <data-table filter="UNIT" count="1">

        <columns>

 

            <column>Unit Nbr</column>

            <column>Type ISO</column>

           <column>Category</column>

            <column>T-State</column>

            <column>V-State</column>

            <column>Line Op</column>

            <column>Frght Kind</column>

            <column>Train Operator</column>

        </columns>

 

     <rows>

            <row primary-key="8971657315">

                <field>SUDU1234567</field>

                <field>45G1</field>

                <field>Import</field>

                <field>Departed</field>

                <field>Departed</field>

                <field>MAE</field>

                <field>FCL</field>

                <field>Loconi</field>

               </row>

        </rows>

 



    </data-table>

</query-response>

 ***************************************************************************

-POST /UPDATE_SEALS_TRAIN_OPERATOR

Summary:  Endpoint only for train operators.

Description: Update container seal numbers in the Navis system.

Addres with example: https://api2.baltichub.com/V1/UPDATE_SEALS_TRAIN_OPERATOR/TUPDATE_SEALS_TRAIN_OPERATORRAIN_OPERATOR


Name

In

Type

Description

Required

Ufv_Gkey

query

string

(Required). Unique Unit (container visit) key in the terminal system. Refers to primary-key available in 'Unit' endpoint response.

Yes

UnitSeal1, UnitSeal2,UnitSeal3,UnitSeal4

query

string

(Required) Space for entering subsequent seal numbers for a given container.

Yes

Example:


       

<custom class="WS_CUSTOM_HANDLER_UPDATE_SEALS" type="extension">

<item>

    <Ufv_Gkey>8836072559</Ufv_Gkey>

                <UnitSeal1>testseal123</UnitSeal1>

                <UnitSeal2>testseal1666623</UnitSeal2>

                <UnitSeal3>testseal123</UnitSeal3>

                <UnitSeal4>testseal123</UnitSeal4>

</item>

</custom>

 

 ***************************************************************************

-POST /SELF_ASSIGN_TRAIN_OPERATOR 

Summary: Endpoint only for train operators.

Description: Assigning Train Operator to a container using a PIN code in the Navis system.

Addres with example: https://api2.baltichub.com/V1/SELF_ASSIGN_TRAIN_OPERATORUSSELF_ASSIGN_TRAIN_OPERATORELF_ASSIGN_TRAIN_OPERATOR

Name

In

Type

Description

Required

Ufv_Gkey

query

string

(Required). Unique Unit (container visit) key in the terminal system. Refers to primary-key available in 'Unit' endpoint response.

Yes

UnitPIN

query

string

(Required). Unit PIN. The PIN must match the Unit PIN in the terminal system.

Yes

Example:


<items>

    <item>

        <Ufv_Gkey>8781457138</Ufv_Gkey>

        <UnitPIN>XYZ123XYZ</UnitPIN>

    </item>

</items>