Technical documentation – API Baltic Hub
Change history
Version | Release date | Author | Change description |
1.0 | 2025-07-24 | IT BHCT | First release |
| 1.1 | 2025-08-24 | IT BHCT | Added the ability to send multiple containers (up to 500) in a single request (applies to the UNITS endpoint). |
| 1.2 | 2025-10-17 | IT BHCT | Added information about three endpoints: Train Operator Units & Update Seals Train Operator & Self Assign Train Operator |
2. Available Endpoints:
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> |