openapi: 3.0.2
info:
title: MarineTraffic Voyage Information API
version: 1.0.0
description: Voyage forecasts, predictive destination areas, and vessel ETA to port — combining live AIS positions with
machine-learning–driven predictive intelligence.
contact:
name: MarineTraffic
url: https://www.marinetraffic.com/
servers:
- url: https://services.marinetraffic.com/api
tags:
- name: Voyage Information
paths:
'/voyageforecast/{api_key} ':
get:
tags:
- Voyage Information
summary: Single Vessel Voyage Forecast
description: "Get voyage information for a single vessel. </br></br> <b>Notes</b> <ul>\n <li>Information about <a\
\ href=\"https://support.marinetraffic.com/en/articles/9552860-what-kind-of-information-is-ais-transmitted\">AIS-transmitted\
\ data</a></li>\n <li>**SPEED** returned in (knots x10) and **TIMESTAMP** in UTC</li>\n <li>The <b>frequency\
\ of allowed API calls</b> is specific to your API key and is detailed in your contract as a number of successful\
\ calls per time period. For example “2 calls per minute”. </br>Regardless of this agreed limit, each API key is technically\
\ restricted to a maximum of 100 total (including successful and unsuccessful) requests per minute to ensure system\
\ stability.</li>\n</ul>"
operationId: voyageforecast_
parameters:
- $ref: '#/components/parameters/api_key'
- $ref: '#/components/parameters/v_VI01'
- $ref: '#/components/parameters/mmsi_VI01'
- $ref: '#/components/parameters/imo_VI01'
- $ref: '#/components/parameters/shipid_VI01'
- $ref: '#/components/parameters/msgtype_VI01'
- $ref: '#/components/parameters/protocol_new'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/200_vi01_default'
- $ref: '#/components/schemas/200_vi01_extended'
application/xml:
schema:
oneOf:
- $ref: '#/components/schemas/200_vi01_default'
- $ref: '#/components/schemas/200_vi01_extended'
examples:
Default:
summary: Simple
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<FORECASTS>\n <FORECAST MMSI=\"\
310627000\" IMO=\"9241061\" SHIP_ID=\"371681\" SHIPNAME=\"QUEEN MARY 2\" DESTINATION=\"TORQUAY\" LAST_PORT_ID=\"\
106\" LAST_PORT=\"SOUTHAMPTON\" LAST_PORT_UNLOCODE=\"GBSOU\" LAST_PORT_TIME=\"2020-10-14T17:00:00\" NEXT_PORT_ID=\"\
10379\" NEXT_PORT_NAME=\"TORQUAY\" NEXT_PORT_UNLOCODE=\"GBTOR\" ETA=\"2020-10-14T13:00:00\" ETA_CALC=\"\
\"/>\n</FORECASTS>"
Extended:
summary: Extended
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<FORECASTS>\n <FORECAST MMSI=\"\
310627000\" IMO=\"9241061\" SHIP_ID=\"371681\" SHIPNAME=\"QUEEN MARY 2\" DESTINATION=\"TORQUAY\" LAST_PORT_ID=\"\
106\" LAST_PORT=\"SOUTHAMPTON\" LAST_PORT_UNLOCODE=\"GBSOU\" LAST_PORT_TIME=\"2020-10-14T17:00:00\" NEXT_PORT_ID=\"\
10379\" NEXT_PORT_NAME=\"TORQUAY\" NEXT_PORT_UNLOCODE=\"GBTOR\" ETA=\"2020-10-14T13:00:00\" ETA_CALC=\"\
\" DISTANCE_TRAVELLED=\"201\" DISTANCE_TO_GO=\"0\" SPEED_CALC=\"\" DRAUGHT=\"101\" DRAUGHT_MAX=\"105\"\
\ LOAD_STATUS_NAME=\"N/A\" ROUTE=\"\"/>\n</FORECASTS>"
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/400_vi01_missing_or_invalid_ship_identifier'
application/xml:
schema:
$ref: '#/components/schemas/400_vi01_missing_or_invalid_ship_identifier'
examples:
Missing or invalid ship identifier:
summary: Missing or invalid ship identifier
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"2a\" DESCRIPTION=\"VESSEL MMSI OR IMO OR SHIPID OR PORTID OR UNLOCODE MISSING\"/>\n \
\ </STATUS>\n</RESPONSE>"
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/429_too_many_requests'
application/xml:
schema:
$ref: '#/components/schemas/429_too_many_requests'
examples:
Area out of bound:
summary: Too Many Requests
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"1r\" DESCRIPTION=\"TOO MANY REQUESTS\"/>\n </STATUS>\n</RESPONSE>"
/voyageforecast/{api_key}:
get:
tags:
- Voyage Information
summary: Fleet Voyage Forecast
description: "Get voyage information for one for your MarineTraffic Fleets. </br></br> <b>Notes</b> <ul>\n <li>Information\
\ about <a href=\"https://support.marinetraffic.com/en/articles/9552860-what-kind-of-information-is-ais-transmitted\"\
>AIS-transmitted data</a></li>\n <li>**SPEED** returned in (knots x10) and **TIMESTAMP** in UTC</li>\n <li>The\
\ <b>frequency of allowed API calls</b> is specific to your API key and is detailed in your contract as a number of\
\ successful calls per time period. For example “2 calls per minute”. </br>Regardless of this agreed limit, each API\
\ key is technically restricted to a maximum of 100 total (including successful and unsuccessful) requests per minute\
\ to ensure system stability.</li>\n</ul>"
operationId: voyageforecast
parameters:
- $ref: '#/components/parameters/api_key'
- $ref: '#/components/parameters/v_VI01'
- $ref: '#/components/parameters/fleet_id_VI01'
- $ref: '#/components/parameters/msgtype_VI01'
- $ref: '#/components/parameters/protocol_new'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/200_vi01_default'
- $ref: '#/components/schemas/200_vi01_extended'
application/xml:
schema:
oneOf:
- $ref: '#/components/schemas/200_vi01_default'
- $ref: '#/components/schemas/200_vi01_extended'
examples:
Default:
summary: Simple
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<FORECASTS>\n <FORECAST MMSI=\"\
310627000\" IMO=\"9241061\" SHIP_ID=\"371681\" SHIPNAME=\"QUEEN MARY 2\" DESTINATION=\"TORQUAY\" LAST_PORT_ID=\"\
106\" LAST_PORT=\"SOUTHAMPTON\" LAST_PORT_UNLOCODE=\"GBSOU\" LAST_PORT_TIME=\"2020-10-14T17:00:00\" NEXT_PORT_ID=\"\
10379\" NEXT_PORT_NAME=\"TORQUAY\" NEXT_PORT_UNLOCODE=\"GBTOR\" ETA=\"2020-10-14T13:00:00\" ETA_CALC=\"\
\"/>\n</FORECASTS>"
Extended:
summary: Extended
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<FORECASTS>\n <FORECAST MMSI=\"\
310627000\" IMO=\"9241061\" SHIP_ID=\"371681\" SHIPNAME=\"QUEEN MARY 2\" DESTINATION=\"TORQUAY\" LAST_PORT_ID=\"\
106\" LAST_PORT=\"SOUTHAMPTON\" LAST_PORT_UNLOCODE=\"GBSOU\" LAST_PORT_TIME=\"2020-10-14T17:00:00\" NEXT_PORT_ID=\"\
10379\" NEXT_PORT_NAME=\"TORQUAY\" NEXT_PORT_UNLOCODE=\"GBTOR\" ETA=\"2020-10-14T13:00:00\" ETA_CALC=\"\
\" DISTANCE_TRAVELLED=\"201\" DISTANCE_TO_GO=\"0\" SPEED_CALC=\"\" DRAUGHT=\"101\" DRAUGHT_MAX=\"105\"\
\ LOAD_STATUS_NAME=\"N/A\" ROUTE=\"\"/>\n</FORECASTS>"
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/404_vi01_invalid_fleet_identifier'
application/xml:
schema:
$ref: '#/components/schemas/404_vi01_invalid_fleet_identifier'
examples:
Invalid fleet identifier:
summary: Invalid fleet identifier
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"6b\" DESCRIPTION=\"FLEET NOT FOUND\"/>\n </STATUS>\n</RESPONSE>"
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/429_too_many_requests'
application/xml:
schema:
$ref: '#/components/schemas/429_too_many_requests'
examples:
Area out of bound:
summary: Too Many Requests
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"1r\" DESCRIPTION=\"TOO MANY REQUESTS\"/>\n </STATUS>\n</RESPONSE>"
/predictive-destination-areas/{api_key}:
get:
tags:
- Voyage Information
summary: Single Vessel Predictive Destinations
description: "Receive a prediction of the likely destination of a single vessel.</br></br> <b>Notes</b> <ul>\n <li>The\
\ <b>frequency of allowed API calls</b> is specific to your API key and is detailed in your contract as a number of\
\ successful calls per time period. For example “2 calls per minute”. </br>Regardless of this agreed limit, each API\
\ key is technically restricted to a maximum of 100 total (including successful and unsuccessful) requests per minute\
\ to ensure system stability.</li>\n</ul>"
operationId: predictive-destination-areas
parameters:
- $ref: '#/components/parameters/api_key'
- $ref: '#/components/parameters/mmsi_VI04'
- $ref: '#/components/parameters/imo_VI04'
- $ref: '#/components/parameters/shipid_VI04'
- $ref: '#/components/parameters/fromportid_VI04'
- $ref: '#/components/parameters/protocol'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/200_vi04_default'
application/xml:
schema:
$ref: '#/components/schemas/200_vi04_default'
examples:
Default:
summary: Simple
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<PredictiveDestinationAreas>\n \
\ <PredictiveDestinationArea IMO=\"9450832\" SHIP_ID=\"4615400\" MMSI=\"538003690\" SHIPNAME=\"APHRODITE\
\ M\" SHIPCLASS=\"HANDYSIZE\" MARKET=\"DRY BULK\" MANAGER=\"EMPIRE BULKERS\" OWNER=\"BANK OF AMERICA LEASING\
\ AND CAPITAL\" FROM_PORT_ID=\"257\" FROM_PORT=\"ARATU\" NEXT_PRED_PORT_1_ID=\"5018\" NEXT_PRED_PORT_1=\"\
FORTALEZA\" NEXT_PRED_PORT_1_PROB=\"0.400\" NEXT_PRED_AREA_1=\"ECSA\" NEXT_PRED_AREA_1_PROB=\"1.000\"\
\ NEXT_PRED_PORT_2_ID=\"5026\" NEXT_PRED_PORT_2=\"RECIFE\" NEXT_PRED_PORT_2_PROB=\"0.200\" NEXT_PRED_AREA_2=\"\
ECSA\" NEXT_PRED_AREA_2_PROB=\"1.000\" NEXT_PRED_PORT_3_ID=\"645\" NEXT_PRED_PORT_3=\"VITORIA\" NEXT_PRED_PORT_3_PROB=\"\
0.200\" NEXT_PRED_AREA_3=\"ECSA\" NEXT_PRED_AREA_3_PROB=\"1.000\" NEXT_PRED_PORT_4_ID=\"2479\" NEXT_PRED_PORT_4=\"\
CABEDELO\" NEXT_PRED_PORT_4_PROB=\"0.200\" NEXT_PRED_AREA_4=\"ECSA\" NEXT_PRED_AREA_4_PROB=\"1.000\" NEXT_PRED_PORT_5_ID=\"\
\" NEXT_PRED_PORT_5=\"\" NEXT_PRED_PORT_5_PROB=\"\" NEXT_PRED_AREA_5=\"\" NEXT_PRED_AREA_5_PROB=\"\"/>\n\
</PredictiveDestinationAreas>"
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/400_vi04_missing_or_invalid_ship_identifier'
application/xml:
schema:
$ref: '#/components/schemas/400_vi04_missing_or_invalid_ship_identifier'
examples:
Missing or invalid ship identifier:
summary: Missing or invalid ship identifier
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"1\" DESCRIPTION=\"INCORRECT CALL-CHECK PARAMETERS\"/>\n </STATUS>\n</RESPONSE>"
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/429_too_many_requests'
application/xml:
schema:
$ref: '#/components/schemas/429_too_many_requests'
examples:
Area out of bound:
summary: Too Many Requests
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"1r\" DESCRIPTION=\"TOO MANY REQUESTS\"/>\n </STATUS>\n</RESPONSE>"
'/predictive-destination-areas/{api_key} ':
get:
tags:
- Voyage Information
summary: Fleet Predictive Destinations
description: "Receive a prediction of the likely destination for one of your MarineTraffic fleets.</br></br> <b>Notes</b>\
\ <ul>\n <li>The <b>frequency of allowed API calls</b> is specific to your API key and is detailed in your contract\
\ as a number of successful calls per time period. For example “2 calls per minute”. </br>Regardless of this agreed\
\ limit, each API key is technically restricted to a maximum of 100 total (including successful and unsuccessful)\
\ requests per minute to ensure system stability.</li>\n</ul>"
operationId: predictive-destination-areas_
parameters:
- $ref: '#/components/parameters/api_key'
- $ref: '#/components/parameters/fleet_id_VI04'
- $ref: '#/components/parameters/fromportid_VI04'
- $ref: '#/components/parameters/protocol'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/200_vi04_default'
application/xml:
schema:
$ref: '#/components/schemas/200_vi04_default'
examples:
Default:
summary: Simple
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<PredictiveDestinationAreas>\n \
\ <PredictiveDestinationArea IMO=\"9450832\" SHIP_ID=\"4615400\" MMSI=\"538003690\" SHIPNAME=\"APHRODITE\
\ M\" SHIPCLASS=\"HANDYSIZE\" MARKET=\"DRY BULK\" MANAGER=\"EMPIRE BULKERS\" OWNER=\"BANK OF AMERICA LEASING\
\ AND CAPITAL\" FROM_PORT_ID=\"257\" FROM_PORT=\"ARATU\" NEXT_PRED_PORT_1_ID=\"5018\" NEXT_PRED_PORT_1=\"\
FORTALEZA\" NEXT_PRED_PORT_1_PROB=\"0.400\" NEXT_PRED_AREA_1=\"ECSA\" NEXT_PRED_AREA_1_PROB=\"1.000\"\
\ NEXT_PRED_PORT_2_ID=\"5026\" NEXT_PRED_PORT_2=\"RECIFE\" NEXT_PRED_PORT_2_PROB=\"0.200\" NEXT_PRED_AREA_2=\"\
ECSA\" NEXT_PRED_AREA_2_PROB=\"1.000\" NEXT_PRED_PORT_3_ID=\"645\" NEXT_PRED_PORT_3=\"VITORIA\" NEXT_PRED_PORT_3_PROB=\"\
0.200\" NEXT_PRED_AREA_3=\"ECSA\" NEXT_PRED_AREA_3_PROB=\"1.000\" NEXT_PRED_PORT_4_ID=\"2479\" NEXT_PRED_PORT_4=\"\
CABEDELO\" NEXT_PRED_PORT_4_PROB=\"0.200\" NEXT_PRED_AREA_4=\"ECSA\" NEXT_PRED_AREA_4_PROB=\"1.000\" NEXT_PRED_PORT_5_ID=\"\
\" NEXT_PRED_PORT_5=\"\" NEXT_PRED_PORT_5_PROB=\"\" NEXT_PRED_AREA_5=\"\" NEXT_PRED_AREA_5_PROB=\"\"/>\n\
</PredictiveDestinationAreas>"
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/400_vi04_invalid_fleet_identifier'
application/xml:
schema:
$ref: '#/components/schemas/400_vi04_invalid_fleet_identifier'
examples:
Invalid fleet identifier:
summary: Invalid fleet identifier
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"1\" DESCRIPTION=\"INCORRECT CALL-CHECK PARAMETERS\"/>\n </STATUS>\n</RESPONSE>"
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/429_too_many_requests'
application/xml:
schema:
$ref: '#/components/schemas/429_too_many_requests'
examples:
Area out of bound:
summary: Too Many Requests
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"1r\" DESCRIPTION=\"TOO MANY REQUESTS\"/>\n </STATUS>\n</RESPONSE>"
/etatoport/{api_key}:
get:
tags:
- Voyage Information
summary: Vessel ETA to Port
description: "Get ETA and voyage information for a vessel of your choice, to any port you define.</br></br> <b>Notes</b>\
\ <ul>\n <li>The <b>frequency of allowed API calls</b> is specific to your API key and is detailed in your contract\
\ as a number of successful calls per time period. For example “2 calls per minute”. </br>Regardless of this agreed\
\ limit, each API key is technically restricted to a maximum of 100 total (including successful and unsuccessful)\
\ requests per minute to ensure system stability.</li>\n</ul>"
operationId: etatoport
parameters:
- $ref: '#/components/parameters/api_key'
- $ref: '#/components/parameters/v_VI07'
- $ref: '#/components/parameters/portid_VI07'
- $ref: '#/components/parameters/unlocode_VI07'
- $ref: '#/components/parameters/mmsi_VI07'
- $ref: '#/components/parameters/imo_VI07'
- $ref: '#/components/parameters/shipid_VI07'
- $ref: '#/components/parameters/speed_calc_VI07'
- $ref: '#/components/parameters/msgtype_VI07'
- $ref: '#/components/parameters/protocol'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/200_vi07_default'
- $ref: '#/components/schemas/200_vi07_extended'
application/xml:
schema:
oneOf:
- $ref: '#/components/schemas/200_vi07_default'
- $ref: '#/components/schemas/200_vi07_extended'
examples:
Default:
summary: Simple
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ETATOPORT>\n <ETATOPORT_ROW SHIP_ID=\"\
4615400\" MMSI=\"538003690\" IMO=\"9450832\" LAST_PORT_ID=\"133\" LAST_PORT=\"TERNEUZEN\" LAST_PORT_UNLOCODE=\"\
NLTNZ\" LAST_PORT_TIME=\"2020-10-23 07:20:00\" NEXT_PORT_NAME=\"ARATU\" NEXT_PORT_UNLOCODE=\"BRARB\" ETA_CALC=\"\
2020-11-17 04:18:35\"/>\n</ETATOPORT>"
Extended:
summary: Extended
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ETATOPORT>\n <ETATOPORT_ROW SHIP_ID=\"\
4615400\" MMSI=\"538003690\" IMO=\"9450832\" LAST_PORT_ID=\"133\" LAST_PORT=\"TERNEUZEN\" LAST_PORT_UNLOCODE=\"\
NLTNZ\" LAST_PORT_TIME=\"2020-10-23 07:20:00\" NEXT_PORT_NAME=\"ARATU\" NEXT_PORT_UNLOCODE=\"BRARB\" ETA_CALC=\"\
2020-11-17 04:20:14\" DISTANCE_TRAVELLED=\"519\" DISTANCE_TO_GO=\"2629\" SPEED_CALC=\"58\" DRAUGHT=\"\
93\" DRAUGHT_MAX=\"104\" LOAD_STATUS_NAME=\"LADEN\" ROUTE=\"LINESTRING (-3.25721 50.5102, -3.36854 50.4274,\
\ -3.43517 50.4228, -3.43879 50.4169, -3.43297 50.4142, -3.42169 50.4115, -3.41547 50.407, -3.41412 50.4007,\
\ -3.41569 50.395, -3.4188 50.3885, -3.56497 50.1962, -4.6912 49.5453, -5.17703 49.2673, -5.78868 48.8526,\
\ -6.98989 47.5559, -7.2535 47.316, -7.2102 47.0939, -7.2935 46.9586, -8.33592 45.8395, -9.09363 44.8248,\
\ -9.5244 44.2492, -9.70133 44.0603, -10.0427 43.6447, -10.1111 43.4934, -10.2361 43.3193, -10.2123 42.2985,\
\ -10.1906 41.2322, -10.1462 40.1117, -10.1056 39.0589, -10.0989 38.6851, -10.0265 38.4306, -10.0125 38.3022,\
\ -9.69923 37.261, -9.57864 36.8751, -9.52376 36.7973, -9.25278 36.5721, -9.19231 36.5391, -8.15901 36.2992,\
\ -7.0206 36.0401, -6.48534 35.9174, -5.82036 35.9016, -5.63979 35.9169, -5.26123 35.984, -4.97929 36.0055,\
\ -4.90942 36.0021, -3.80999 36.1162, -2.70866 36.1953, -1.70453 36.3222, -0.620848 36.4784, 0.607268\
\ 36.6633, 1.71278 36.8284, 2.7549 36.9733, 3.87165 37.1261, 4.69295 37.2316, 5.74852 37.2387, 6.90585\
\ 37.2472, 8.02881 37.2582, 8.64414 37.2678, 9.70149 37.5087, 10.0471 37.569, 10.1756 37.5695, 10.9414\
\ 37.4179, 11.4793 37.2768, 11.9401 37.095, 12.4415 36.9732, 13.4569 36.7885, 13.5064 36.7736, 14.5303\
\ 36.6101, 15.1167 36.5096, 16.1937 36.477, 17.4477 36.4471, 18.371 36.4181, 18.7263 36.3965, 20.799 36.3638,\
\ 21.7999 36.3351, 22.0905 36.3339, 22.2645 36.3226, 22.7168 36.356, 22.9405 36.4011, 23.1341 36.3843,\
\ 23.1449 36.3864, 23.1681 36.3932, 23.176 36.3965, 23.2887 36.4584, 23.2941 36.4631, 23.2984 36.4683,\
\ 23.3022 36.4743, 23.3053 36.4812, 23.4143 36.9312, 23.6949 37.4873, 23.7461 37.6468, 23.75 37.6672,\
\ 23.749 37.6724, 23.6701 37.8133, 23.5845 37.8766, 23.5848 37.8872)\" ETD_CALC=\"2020-11-26 16:20:14\"\
\ TIME_ANCH=\"3.4\" TIME_PORT=\"6.1\"/>\n</ETATOPORT>"
'400':
description: Bad Request
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/400_vi07_missing_or_invalid_port_identifier'
- $ref: '#/components/schemas/400_vi07_missing_or_invalid_ship_identifier'
application/xml:
schema:
oneOf:
- $ref: '#/components/schemas/400_vi07_missing_or_invalid_port_identifier'
- $ref: '#/components/schemas/400_vi07_missing_or_invalid_ship_identifier'
examples:
Missing or invalid port identifier:
summary: Missing or invalid port identifier
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"2a10\" DESCRIPTION=\"PORT_ID OR UNLOCODE MISSING\"/>\n </STATUS>\n</RESPONSE>"
Missing or invalid ship identifier:
summary: Missing or invalid ship identifier
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"2\" DESCRIPTION=\"VESSEL MMSI OR IMO OR SHIPID MISSING\"/>\n </STATUS>\n</RESPONSE>"
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/429_too_many_requests'
application/xml:
schema:
$ref: '#/components/schemas/429_too_many_requests'
examples:
Area out of bound:
summary: Too Many Requests
value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<RESPONSE>\n <STATUS>\n \
\ <ERROR CODE=\"1r\" DESCRIPTION=\"TOO MANY REQUESTS\"/>\n </STATUS>\n</RESPONSE>"
components:
parameters:
api_key:
name: api_key
in: path
description: 'API key: 40-character hexadecimal number'
required: true
schema:
type: string
cursor:
name: cursor
in: query
description: The pagination cursor provided in the metadata section of the previous response
required: false
schema:
type: string
limit:
name: limit
in: query
description: The limit of vessels per page (min=1000, max=5000)
required: false
schema:
type: integer
default: 2000
protocol_mandatory:
name: protocol
in: query
description: "Response type. Use one of the following: <ul>\n <li>jsono</li>\n <li>csv</li>"
required: false
schema:
type: string
default: jsono
protocol_new:
name: protocol
in: query
description: "Response type. Use one of the following: <ul>\n <li>xml</li>\n <li>csv</li>\n <li>jsono</li>"
required: false
schema:
type: string
default: xml
v_PS01:
name: v
in: query
description: Version of the service to be executed. Use version 3 to get the latest
schema:
type: integer
default: 1
shipid_PS01:
name: shipid
in: query
description: A uniquely assigned ID by MarineTraffic for the subject vessel </br></br> You can <b>instead</b> use imo
or mmsi
required: true
schema:
type: integer
mmsi_PS01:
name: mmsi
in: query
description: The Maritime Mobile Service Identity (MMSI) of the vessel you wish to track
required: false
schema:
type: integer
imo_PS01:
name: imo
in: query
description: The International Maritime Organization (IMO) number of the vessel you wish to track
required: false
schema:
type: integer
days_PS01:
name: days
in: query
description: The number of days, starting from the time of request and going backwards, for which the response should
look for position data </br></br> Maximum value is 190 (days)
required: true
schema:
type: integer
fromdate_PS01:
name: fromdate
in: query
description: Use with todate <b>instead</b> of days to get data for a date period
required: false
schema:
type: string
format: date-time
todate_PS01:
name: todate
in: query
description: Use with fromdate <b>instead</b> of days to get data for a date period
required: false
schema:
type: string
format: date-time
period_PS01:
name: period
in: query
description: "Limit position per vessel. Omit to get all the available positions </br></br> Values are: <ul>\n <li>hourly:\
\ get one position per hour</li>\n <li>daily: get one position per day</li>\n</ul>"
required: false
schema:
type: string
msgtype_PS01:
name: msgtype
in: query
description: "Resolution of the response. Available values: <ul>\n <li>simple</li>\n <li>extended</li>\n</ul> If used\
\ with the value <b>extended</b>, the response includes also weather data"
required: false
schema:
type: string
default: simple
protocol:
name: protocol
in: query
description: "Response type. Use one of the following: <ul>\n <li>xml</li>\n <li>csv</li>\n <li>json</li>\n <li>jsono</li>"
required: false
schema:
type: string
default: xml
MINLAT_PS01:
name: MINLAT
in: query
description: Use with MAXLAT, MINLON, MAXLON to define an area for which you wish to either get all the historical vessels'
positions or historical positions for a specific vessel </br></br> The absolute value of MAXLAT - MINLAT + MAXLON
- MINLON has to be equal to or less than <b>2</b> </br></br> If you do not define a vessel, the maximum period for
which you can look back has a maximum period of one day
required: true
schema:
type: number
MAXLAT_PS01:
name: MAXLAT
in: query
description: Use with MINLAT, MINLON, MAXLON to define an area for which you wish to either get all the historical vessels'
positions or historical positions for a specific vessel </br></br> The absolute value of MAXLAT - MINLAT + MAXLON
- MINLON has to be equal to or less than <b>2</b> </br></br> If you do not define a vessel, the maximum period for
which you can look back has a maximum period of one day
required: true
schema:
type: number
MINLON_PS01:
name: MINLON
in: query
description: Use with MINLAT, MAXLAT, MAXLON to define an area for which you wish to either get all the historical vessels'
positions or historical positions for a specific vessel </br></br> The absolute value of MAXLAT - MINLAT + MAXLON
- MINLON has to be equal to or less than <b>2</b> </br></br> If you do not define a vessel, the maximum period for
which you can look back has a maximum period of one day
required: true
schema:
type: number
MAXLON_PS01:
name: MAXLON
in: query
description: Use with MINLAT, MAXLAT, MINLON to define an area for which you wish to either get all the historical vessels'
positions or historical positions for a specific vessel </br></br> The absolute value of MAXLAT - MINLAT + MAXLON
- MINLON has to be equal to or less than <b>2</b> </br></br> If you do not define a vessel, the maximum period for
which you can look back has a maximum period of one day
required: true
schema:
type: number
shipid_PS01_2:
name: shipid
in: query
description: A uniquely assigned ID by MarineTraffic for the subject vessel </br></br> You can <b>instead</b> use imo
or mmsi
required: false
schema:
type: integer
v_PS02:
name: v
in: query
description: Version of the service to be executed. Use version 8 to get the latest
required: true
schema:
type: integer
default: 1
timespan_PS02:
name: timespan
in: query
description: The maximum age, in minutes, of the returned positions. </br></br> Maximum value for terrestrial coverage
is 60. Maximum value for satellite coverage is 180
required: false
schema:
type: integer
default: 5
shiptype_PS02:
name: shiptype
in: query
description: "Filter data by vessel type: <ul>\n <li>2: Fishing</li>\n <li>4: High Speed Craf</li>\n <li>6: Passenger</li>\n\
\ <li>7: Cargo</li>\n <li>8: Tanker</li>"
required: false
schema:
type: integer
msgtype_PS02:
name: msgtype
in: query
description: "Resolution of the response. Available values: <ul>\n <li>simple</li>\n <li>extended</li>\n <li>full</li>\n\
</ul> If used with the value <b>extended</b> or <b>full</b>, the response includes scheduled static and voyage related\
\ vessel data report (AIS Message 5). In this case your request frequency might be limited (depending on your service\
\ terms) </br></br> If omitted, the returned records include only position reports (AIS Messages 1, 2, 3/ 18, 19)"
required: false
schema:
type: string
default: simple
v_PS03:
name: v
in: query
description: Version of the service to be executed. Use version 8 to get the latest
required: true
schema:
type: integer
default: 1
vessel_type:
name: vesseltypeid
in: quer
# --- truncated at 32 KB (108 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/marine-traffic/refs/heads/main/openapi/marine-traffic-voyage-info-openapi.yml