MarineTraffic Routing Information API

Maritime route generation and distance calculation across global sea lanes via `/exportroutes`. Compute the great-circle or sea-lane-aware route from a vessel's current position (MMSI/IMO/SHIP_ID) — or an arbitrary origin port / LAT-LON pair — to a target port, with optional inland-waterway and alternative-route inclusion.

MarineTraffic Routing Information API is one of 8 APIs that MarineTraffic publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include AIS, Maritime, Routing, and Distance. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

marine-traffic-routing-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: MarineTraffic Routing Information API
  version: 1.0.0
  description: Maritime route generation and distance calculation between ports / coordinates, accounting for sea lanes and
    traffic patterns.
  contact:
    name: MarineTraffic
    url: https://www.marinetraffic.com/
servers:
- url: https://services.marinetraffic.com/api
tags:
- name: Routing Information
paths:
  /exportroutes/{api_key}:
    get:
      tags:
      - Routing Information
      summary: Vessel Route to Port
      description: "<b>A newer version of this endpoint is available here: https://developers.kpler.com/spec/c78f79cf-4169-4a59-987d-e5970ea170f9</b></br></br>\n\
        Receive a list of available routes and distances from a vessel to a port.</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: exportroutes
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/mmsi_VI03'
      - $ref: '#/components/parameters/imo_VI03'
      - $ref: '#/components/parameters/shipid_VI03'
      - $ref: '#/components/parameters/port_target_id_VI03'
      - $ref: '#/components/parameters/includealternatives_VI03'
      - $ref: '#/components/parameters/includeinland_VI03'
      - $ref: '#/components/parameters/msgtype_VI03'
      - $ref: '#/components/parameters/protocol'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_vi03_default'
                - $ref: '#/components/schemas/200_vi03_extended'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_vi03_default'
                - $ref: '#/components/schemas/200_vi03_extended'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ROUTES>\n    <route DISTANCE=\"805\"\
                    \ PANAMA=\"0\" SUEZ=\"0\"/>\n</ROUTES>"
                Extended:
                  summary: Extended
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ROUTES>\n    <route DISTANCE=\"805\"\
                    \ PANAMA=\"0\" SUEZ=\"0\" FINAL_PATH=\"LINESTRING (23.6107 37.894, 23.6096 37.3631, 23.6088 37.3566, 23.499\
                    \ 36.9011, 23.4958 36.8932, 23.2212 36.4084, 23.2122 36.398, 23.198 36.3904, 23.1812 36.3877, 23.1763\
                    \ 36.3879, 23.0774 36.3967, 23.0753 36.397, 22.9465 36.4138, 22.9395 36.4142, 22.9285 36.4142, 22.9211\
                    \ 36.4137, 22.4744 36.3528, 22.467 36.3523, 22.4502 36.355, 22.4457 36.3568, 21.7536 36.6658, 21.7463\
                    \ 36.6699, 21.6694 36.7227, 21.6638 36.7273, 20.5872 37.7853, 20.5847 37.788, 18.5047 40.2326, 18.503\
                    \ 40.2344, 18.2613 40.4772, 18.2613 40.4772, 13.7529 44.8308, 13.7497 44.8342, 13.5739 45.0519, 13.5702\
                    \ 45.0579, 13.4989 45.2161)\"/>\n</ROUTES>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/400_vi03_invalid_ship_identifier'
                - $ref: '#/components/schemas/400_vi03_missing_or_invalid_port_identifier'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/400_vi03_invalid_ship_identifier'
                - $ref: '#/components/schemas/400_vi03_missing_or_invalid_port_identifier'
              examples:
                Invalid ship identifier:
                  summary: 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>"
                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=\"2a6\" DESCRIPTION=\"PORT IS 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>"
  '/exportroutes/{api_key} ':
    get:
      tags:
      - Routing Information
      summary: Distance to Port
      description: "<b>A newer version of this endpoint is available here: https://developers.kpler.com/spec/c78f79cf-4169-4a59-987d-e5970ea170f9</b></br></br>\n\
        Receive a list of available routes and distances from point or port to a specific port.</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: exportroutes_
      parameters:
      - $ref: '#/components/parameters/api_key'
      - $ref: '#/components/parameters/port_start_id_VI03'
      - $ref: '#/components/parameters/LAT_VI03'
      - $ref: '#/components/parameters/LON_VI03'
      - $ref: '#/components/parameters/port_target_id_VI03'
      - $ref: '#/components/parameters/includealternatives_VI03'
      - $ref: '#/components/parameters/includeinland_VI03'
      - $ref: '#/components/parameters/msgtype_VI03'
      - $ref: '#/components/parameters/protocol'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_vi03_default'
                - $ref: '#/components/schemas/200_vi03_extended'
            application/xml:
              schema:
                oneOf:
                - $ref: '#/components/schemas/200_vi03_default'
                - $ref: '#/components/schemas/200_vi03_extended'
              examples:
                Default:
                  summary: Simple
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ROUTES>\n    <route DISTANCE=\"2938\"\
                    \ PANAMA=\"0\" SUEZ=\"0\"/>\n</ROUTES>"
                Extended:
                  summary: Extended
                  value: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<ROUTES>\n    <route DISTANCE=\"2938\"\
                    \ PANAMA=\"0\" SUEZ=\"0\" FINAL_PATH=\"LINESTRING (23.6031 37.9345, 23.6022 37.8302, 23.7127 37.6496,\
                    \ 23.7056 37.6035, 23.6234 37.3639, 23.4216 36.9451, 23.229 36.4224, 23.1209 36.4007, 22.9908 36.4161,\
                    \ 22.8799 36.4056, 22.5453 36.3436, 22.0771 36.3505, 19.8853 36.3859, 17.0453 36.4213, 16.0126 36.4389,\
                    \ 14.5459 36.461, 12.2835 37.0352, 11.0962 37.4966, 10.2338 37.6534, 9.5746 37.6577, 8.8824 37.6447, 7.8552\
                    \ 37.5924, 6.2292 37.4225, 4.3781 37.2391, 3.5815 37.1472, 2.2467 37.0245, 0.1648 36.7609, -1.9391 36.4655,\
                    \ -2.9718 36.3328, -4.021 36.2132, -5.3448 36.0269, -5.5563 35.9713, -5.8612 35.9625, -6.1963 35.9558,\
                    \ -9.0088 36.6948, -9.1681 36.7609, -9.3109 36.884, -9.3713 37.1341, -9.657 38.1043, -9.8602 38.7455,\
                    \ -9.8492 39.0491, -9.8492 39.6818, -9.8383 40.1873, -9.7998 42.3829, -9.7943 42.9444, -9.7778 43.2091,\
                    \ -6.861 47.1486, -5.9876 48.3051, -5.6195 48.7562, -5.1691 48.9442, -4.5428 49.1781, -3.3893 49.6214,\
                    \ -2.9169 49.8026, -2.439 49.8911, -1.5491 50.0501, -0.3571 50.2612, 0.9668 50.4889, 1.3528 50.7125, 1.4177\
                    \ 50.8727, 1.4687 50.906, 1.7071 51.0776, 2.0596 51.2246, 2.2412 51.4745, 3.1406 52.1546, 3.5788 52.4091,\
                    \ 4.1803 52.4844, 4.5456 52.4644, 4.6609 52.4627, 4.6788 52.4526, 4.7173 52.4351, 4.7392 52.4301, 4.7763\
                    \ 52.4251, 4.7955 52.4234, 4.8225 52.4197, 4.8581 52.4147, 4.8793 52.4083, 4.8985 52.389)\"/>\n</ROUTES>"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400_vi03_missing_or_invalid_port_identifier'
            application/xml:
              schema:
                $ref: '#/components/schemas/400_vi03_missing_or_invalid_port_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=\"2a6\" DESCRIPTION=\"PORT IS 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: query
      description: Filter vessels based on vessel types, comma separated ids supported </br></br><a href="https://support.marinetraffic.com/en/articles/9552888-what-is-the-significance-of-the-marinetraffic-ship-types"
        target='_blank'>more</a>
      required: false
      schema:
        type: integer
    timespan_PS03:
      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_PS03:
      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_PS03:
      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_PS04:
      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_PS04:
      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_PS04:
      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_PS04:
      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_PS05:
      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_PS05:
      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_PS05:
      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_PS05:
      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_PS06:
      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
    v_MTA030AD_1:
      name: v
      in: query
      description: Use latest version **9**
      required: true
      schema:
        type: integer
    v_MTA030AD_2:
      name: v
      in: query
      description: Use latest version **2**
      required: true
      schema:
        type: integer
    v_MTA030AD_3:
      name: v
      in: query
      description: Use latest version **6**
      required: true
      schema:
        type: integer
    timespan_PS06:
      name: timespan
      in: query
      description: The maximum age, in minutes, of the returned positions. Maximum value is 2880
      required: false
      schema:
        type: integer
        default: 5
    shiptype_PS06:
      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
    MAXLAT_PS06:
      name: MAXLAT
      in: query
      description: Use with MINLAT, MINLON, MAXLON to define an area and retrieve positional information of vessels sailing
        in it
      required: true
      schema:
        type: number
    MINLON_PS06:
      name: MINLON
      in: query
      description: Use with MINLAT, MAXLAT, MAXLON to define an area and retrieve positional information of vessels sailing
        in it
      required: true
      schema:
        type: number
    MAXLON_PS06:
      name: MAXLON
      in: query
      description: Use with MINLAT, MINLON, MAXLAT to define an area and retrieve positional information of vessels sailing
        in it
      required: true
      schema:
        type: number
    MINLAT_PS06:
      name: MINLAT
      in: query
      description: Use with MAXLAT, MINLON, MAXLON to define an area and retrieve positional information of vessels sailing
        in it
      required: true
      schema:
        type: number
    msgtype_PS06:
      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_PS07:
      name: v
      in: query
      description: Version of the service to be executed. Use version 5 to get the latest
      required: true
      schema:
        type: integer
        default: 1
    shipid_PS07:
      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
    imo_PS07:
      name: imo
      in: query
      description: The International Maritime Organization (IMO) number of the vessel you wish to track
      required: false
      schema:
        type: integer
    mmsi_PS07:
      name: mmsi
      in: query
      description: The Maritime Mobile Service Identity (MMSI) of the vessel you wish to track
      required: false
      schema:
        type: integer
    timespan_PS07:
      name: timespan
      in: query
      description: The maximum age, in minutes, of the returned positions. Maximum value is 2880
      required: false
      schema:
        type: integer
        default: 2
    msgtype_PS07:
      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 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_PS08:
      name: v
      in: query
      description: Version of the service to be executed. Use version 1 to get the latest
      required: true
      schema:
        type: integer
        default: 1
    timespan_PS08:
      name: timespan
      in: query
      description: The maximum age, in minutes, of the returned positions. Maximum value is 2880
      required: false
      schema:
        type: integer
        default: 5
    shiptype_generic_PS08:
      name: shiptype_generic
      in: query
      description: Filter vessels based on generic vessel types, comma separated values supported </br></br> Vessel type ID
        should be used and not vessel type name (2=Fishing / 4=High Speed Craft / 6=Passenger / 7=Cargo / 8=Tanker) </br></br>
        Should not be combined with shiptype_detailed filter
      required: false
      schema:
        type: integer
    shiptype_detailed_PS08:
      name: shiptype_detailed
      in: query
      description: Filter vessels based on detailed vessel types, comma separated values supported </br></br> Vessel type
        ID should be used and not vessel type name - <a href="https://support.marinetraffic.com/en/articles/9552888-what-is-the-significance-of-the-marinetraffic-ship-types"                                 target='_blank'>more</a>
        </br></br> Should not be combined with shiptype_generic filter
      required: false
      schema:
        type: integer
    msgtype_PS08:
      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
    timespan_MTA030AD:
      name: timespan
      in: query
      description: Overrides the default timespan
      required: false
      schema:
        type: integer
        default: 5
    v_EV01:
      name: v
      in: query
      description: Version of the service to be executed. Use version 6 to get the latest
      required: true
      schema:
        type: integer
        default: 1
    shipid_EV01:
      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_EV01:
      name: mmsi
      in: query
      description: The Maritime Mobile Service Identity (MMSI) of the vessel you wish to track
      required: false
      schema:
        type: integer
    imo_EV01:
      name: imo
      in: query
      description: The International Maritime Organization (IMO) number of the vessel you wish to track
      required: false
      schema:
        type: integer
    timespan_EV01:
      name: timespan
      in: query
      description: The maximum age, in minutes, of the returned port calls. Maximum value is 2880
      required: false
      schema:
        type: integer
        default: 2
    movetype_EV01:
      name: movetype
      in: query
      description: Use 0 to only receive arrivals or 1 to only receive departures. If not used, the response will include
        both
      required: false
      schema:
        type: integer
    exclude_intransit_EV01:
      name: exclude_intransit
      in: query
      description: Use 1 to exclude vessels in transit
      required: false
      schema:
        type: integer
    fromdate_EV01:
      name: fromdate
      in: query
      description: 'Portcalls between fromdate and todate. Maximum period requested 190 days </br></br> Date format: YYYY-MM-DD
        HH:MM'
      required: false
      schema:
        type: string
        format: date-time
    todate_EV01:
      name: todate
      in: query
      description: 'Portcalls between fromdate and todate. Maximum period requested 190 days </br></br> Date format: YYYY-MM-DD
        HH:MM'
      required: false
      schema:
        type: string
        format: date-time
    dwt_min_EV01:
      name: dwt_min
      in: query
      description: 'Data filter: minimum DWT </br></br> Applicable to IMO-having vessels'
      required: false
      schema:
        type: integer
    dwt_max_EV01:
      name: dwt_max
      in: query
      description: 'Data filter: maximum DWT </br></br> Applicable to IMO-having vessels'
      required: false
      schema:
        type: integer
    gt_min_EV01:
      name: gt_min
      in: query
      description: 'Data filter: minimum GT </br></br> Applicable to IMO-having vessels'
      required: false
      schema:
        type: integer
    gt_max_EV01:
      name: gt_max
      in: query
      description: 'Data filter: maximum GT </br></br> Applicable to IMO-having vessels'
      required: false
      schema:
      

# --- truncated at 32 KB (72 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/marine-traffic/refs/heads/main/openapi/marine-traffic-routing-openapi.yml