Dokumentacja techniczna API na stronę baltichub.com

Technical documentation – API Baltic Hub

Change History

VersionRelease dateAuthorChange description
1.02025-07-24IT BHCTFirst 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
1.32026-01-20IT BHCTAdded information about endpoint: Self Assign Agent One
1.42026-05-27IT BHCTAdded information:
1. new endpoint: Self Assign One Booking
2. added new fields to Unit endpoint: DSK Number and Loaded
1.52026-07-03IT BHCTAdded new fields to Unit endpoint: Stop-Vsl, Stop-Rail, Stop-Road
1.62026-07-06IT BHCTAdded section 8: Error Handling (HTTP error codes and ApiError response schema)

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_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 (SELF_ASSIGN_TRAIN_OPERATOR)
  8. POST: Self assign via PIN number (SELF_ASSIGN_AGENT_ONE)
  9. POST: Self assign via Booking number (SELF_ASSIGN_ONE_BOOKING)

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 or submit API Application Form available here: API.

5. Rate limiting for requests

200 requests / 60 seconds

6. Swagger 2.0

Title: Baltic Hub API Azure

Description: BalticHub API. Access from whitelisted addresses only. Authorization method – BEARER Token.

Version: 1.4.0

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

7. Endpoints


GET /TRAIN_DISCHARGE_LIST

Summary: Train discharge list

Description: 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

NameInTypeDescriptionRequired
TRAIN_VISIT_IDquerystring(Required) BalticHub terminal system Train Visit ID.Yes

Example:

Columns
<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
<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>

GET /TRAIN_LOAD_LIST

Summary: Train load list

Description: 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

NameInTypeDescriptionRequired
TRAIN_VISIT_IDquerystring(Required) BalticHub terminal system Train Visit ID.Yes

Example:

Columns
<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
<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>

GET /TRAIN_VISITS

Summary: Train visits

Description: 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

NameInTypeDescriptionRequired
VISIT_PHASEquerystring(Optional). Multiple values allowed – use comma as separator. Possible Values: 10CREATED, 20INBOUND, 30ARRIVED, 40WORKING, 50COMPLETE, 60DEPARTED, 70CLOSED, 80CANCELED, 90ARCHIVEDNo
ETA_AFTERquerystring(Required) Mandatory. Start date of time range. Date/Time format yyyy-mm-dd hh:mmYes
ETA_BEFOREquerystring(Required) Mandatory. End date of time range. Date/Time format yyyy-mm-dd hh:mmYes

Example:

Columns
<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
<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>

GET /VESSEL

Summary: Vessel

Description: Vessel – Get Vessel Visit details.

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

NameInTypeDescriptionRequired
VISIT_REFquerystring(Required) BalticHub terminal system Vessel Visit ID.Yes

Example:

Columns
<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
<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>
</rows>

GET /UNIT

Summary: Unit

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

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

NameInTypeDescriptionRequired
UNIT_NBRquerystring(Required)Yes
VISIT_STATEquerystring(Optional) Multiple values allowed – use comma as separator. Possible values: 1ACTIVE, 2ADVISED, 3DEPARTED, 4RETIREDNo
TRANSIT_STATEquerystring(Optional) Multiple values allowed – use comma as separator. Possible values: S10_ADVISED, S20_INBOUND, S30_ECIN, S40_YARD, S60_LOADED, S70_DEPARTED, S99_RETIREDNo

Example:

Columns
<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>
  <column>DSK Number</column>
  <column>Loaded</column>
  <column>Stop-Vsl</column>
  <column>Stop-Rail</column>
  <column>Stop-Road</column>
</columns>
Rows
<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 />
    <field>DSK Number</field>
    <field>2025-03-12 14:48</field>
    <field>true</field>
    <field>false</field>
    <field>false</field>
  </row>
</rows>

GET /TRAIN_OPERATOR_UNITS

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

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

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

NameInTypeDescriptionRequired
UNIT_NBRquerystring(Required)Yes

Example:

Columns
<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
<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>

POST /UPDATE_SEALS_TRAIN_OPERATOR

Summary: Endpoint only for train operators.

Description: Update container seal numbers in the Navis system.

Address with example:
https://api2.baltichub.com/V1/UPDATE_SEALS_TRAIN_OPERATOR

NameInTypeDescriptionRequired
Ufv_Gkeyquerystring(Required). Unique Unit (container visit) key in the terminal system. Refers to primary-key available in 'Unit' endpoint response.Yes
UnitSeal1, UnitSeal2, UnitSeal3, UnitSeal4querystring(Required) Space for entering subsequent seal numbers for a given container.Yes

Example:

XML Body
<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.

Address with example:
https://api2.baltichub.com/V1/SELF_ASSIGN_TRAIN_OPERATOR

NameInTypeDescriptionRequired
Ufv_Gkeyquerystring(Required). Unique Unit (container visit) key in the terminal system. Refers to primary-key available in 'Unit' endpoint response.Yes
UnitPINquerystring(Required). Unit PIN. The PIN must match the Unit PIN in the terminal system.Yes

Example:

XML Body
<items>
  <item>
    <Ufv_Gkey>8781457138</Ufv_Gkey>
    <UnitPIN>XYZ123XYZ</UnitPIN>
  </item>
</items>

POST /SELF_ASSIGN_AGENT_ONE

Summary: Endpoint only for Agents One.

Description: Assigning Agent One to a container using a PIN code in the Navis system.

Address with example:
https://api2.baltichub.com/V1/SELF_ASSIGN_AGENT_ONE

NameInTypeDescriptionRequired
Ufv_Gkeyquerystring(Required). Unique Unit (container visit) key in the terminal system. Refers to primary-key available in 'Unit' endpoint response.Yes
UnitPINquerystring(Required). Unit PIN. The PIN must match the Unit PIN in the terminal system.Yes

Example:

XML Body
<items>
  <item>
    <Ufv_Gkey>10017457249</Ufv_Gkey>
    <UnitPIN>123123</UnitPIN>
  </item>
</items>

POST /SELF_ASSIGN_ONE_BOOKING

Summary: Endpoint only for Agents One.

Description: Assigning Agent One to a container using a Booking number in the Navis system.

Address with example:
https://api2.baltichub.com/V1/SELF_ASSIGN_AGENT_ONE_BOOKING

NameInTypeDescriptionRequired
Ufv_Gkeyquerystring(Required). Unique Unit (container visit) key in the terminal system. Refers to primary-key available in 'Unit' endpoint response.Yes
UnitBookingquerystring(Required). Unit Booking Number. The Booking Number must match the Booking Number in the terminal system.Yes

Example:

XML Body
<items>
  <item>
    <Ufv_Gkey>9100461217</Ufv_Gkey>
    <UnitBooking>EBKG15952147</UnitBooking>
  </item>
</items>

8. Error Handling

The API returns standard HTTP error codes with a JSON description in the response body:

HTTP CodeMeaningExample
400Bad RequestInvalid query parameters
401UnauthorizedMissing or invalid API key
403ForbiddenInsufficient permissions
404Not FoundResource not found
429Too Many RequestsRate limit exceeded
500Internal Server ErrorServer error

Example error response (ApiError schema):

JSON
{
  "error": "Unauthorized",
  "message": "Invalid API key provided",
  "details": null,
  "timestamp": "2026-07-06T10:30:00Z",
  "path": "/V1/",
  "traceId": "723628372...-01"
}

The traceId field is the request identifier in server logs – provide it when reporting issues to support. The path field contains the request path including query string.