Datalastic Live Tracking API

Real-time AIS vessel position and voyage data.

OpenAPI Specification

datalastic-live-tracking-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Datalastic Maritime Historical Live Tracking API
  description: Datalastic provides real-time AIS vessel tracking, historical ship movements, vessel specifications, and global port data over REST. A database of 750,000+ ships is queryable by MMSI, IMO, or Datalastic UUID. All endpoints are served from https://api.datalastic.com/api/v0 and authenticate with an api-key query parameter tied to a subscription plan. Usage is metered in monthly database credits - most endpoints deduct one credit per vessel or port returned, and historical endpoints deduct one credit per vessel per day of data. All plans share a limit of 600 API calls per minute.
  version: v0
  contact:
    name: Datalastic
    url: https://datalastic.com
servers:
- url: https://api.datalastic.com/api/v0
  description: Datalastic production API
security:
- apiKey: []
tags:
- name: Live Tracking
  description: Real-time AIS vessel position and voyage data.
paths:
  /vessel:
    get:
      operationId: getVessel
      tags:
      - Live Tracking
      summary: Basic live ship tracking
      description: Returns the latest real-time AIS data for a single vessel identified by uuid, mmsi, or imo - name, identifiers, country code, type and subtype, latitude, longitude, speed, course, heading, navigational status, destination, and position timestamp. Average response time is 0.005 seconds. Deducts 1 credit per request.
      parameters:
      - $ref: '#/components/parameters/Uuid'
      - $ref: '#/components/parameters/Mmsi'
      - $ref: '#/components/parameters/Imo'
      responses:
        '200':
          description: Latest AIS position data for the vessel.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VesselPositionResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /vessel_pro:
    get:
      operationId: getVesselPro
      tags:
      - Live Tracking
      summary: Pro live ship tracking with ETA
      description: Returns everything the basic /vessel endpoint returns plus estimated time of arrival (ETA), actual time of departure (ATD), current draft, and UN/LOCODE destination and departure ports. Average response time is 0.9 seconds. Deducts 1 credit per request.
      parameters:
      - $ref: '#/components/parameters/Uuid'
      - $ref: '#/components/parameters/Mmsi'
      - $ref: '#/components/parameters/Imo'
      responses:
        '200':
          description: Extended AIS position and voyage data for the vessel.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VesselProResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /vessel_bulk:
    get:
      operationId: getVesselBulk
      tags:
      - Live Tracking
      summary: Bulk live ship tracking
      description: Tracks up to 100 vessels in a single call. Repeat the uuid, mmsi, and/or imo parameters for each vessel to track. Deducts 1 credit per successfully returned vessel.
      parameters:
      - name: uuid
        in: query
        description: Datalastic vessel UUID. Repeatable, up to 100 vessels per call.
        required: false
        schema:
          type: array
          items:
            type: string
        explode: true
      - name: mmsi
        in: query
        description: Vessel MMSI (9-digit). Repeatable, up to 100 vessels per call.
        required: false
        schema:
          type: array
          items:
            type: string
        explode: true
      - name: imo
        in: query
        description: Vessel IMO number (7-digit). Repeatable, up to 100 vessels per call.
        required: false
        schema:
          type: array
          items:
            type: string
        explode: true
      responses:
        '200':
          description: Latest AIS position data for each requested vessel.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VesselListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    VesselProResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/VesselProPosition'
        meta:
          $ref: '#/components/schemas/Meta'
    Meta:
      type: object
      description: Response metadata.
      properties:
        duration:
          type: number
          description: Server processing time in seconds.
        endpoint:
          type: string
          description: The endpoint that served the request.
        success:
          type: boolean
          description: Whether the request succeeded.
    VesselPositionResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/VesselPosition'
        meta:
          $ref: '#/components/schemas/Meta'
    VesselProPosition:
      allOf:
      - $ref: '#/components/schemas/VesselPosition'
      - type: object
        description: Extended voyage fields returned by /vessel_pro.
        properties:
          eta_UTC:
            type: string
            description: Estimated time of arrival (UTC).
          atd_UTC:
            type: string
            description: Actual time of departure (UTC).
          current_draught:
            type: number
            description: Current draft in meters.
          dest_port_unlocode:
            type: string
            description: UN/LOCODE of the destination port.
          dep_port_unlocode:
            type: string
            description: UN/LOCODE of the departure port.
    VesselPosition:
      type: object
      description: Real-time AIS position data for a vessel.
      properties:
        uuid:
          type: string
          description: Datalastic vessel UUID.
        name:
          type: string
          description: Vessel name.
        mmsi:
          type: string
          description: Maritime Mobile Service Identity.
        imo:
          type: string
          description: International Maritime Organization number.
        country_iso:
          type: string
          description: Flag country ISO code.
        type:
          type: string
          description: Vessel type.
        type_specific:
          type: string
          description: Vessel subtype.
        lat:
          type: number
          description: Latitude of the last reported position.
        lon:
          type: number
          description: Longitude of the last reported position.
        speed:
          type: number
          description: Speed over ground in knots.
        course:
          type: number
          description: Course over ground in degrees.
        heading:
          type: number
          description: True heading in degrees.
        navigation_status:
          type: string
          description: AIS navigational status.
        destination:
          type: string
          description: Reported destination.
        last_position_epoch:
          type: integer
          description: Unix timestamp of the last position report.
        last_position_UTC:
          type: string
          description: UTC timestamp of the last position report.
    Error:
      type: object
      properties:
        meta:
          type: object
          properties:
            success:
              type: boolean
            error:
              type: string
              description: Error message, for example Too Many Requests.
    VesselListResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            vessels:
              type: array
              items:
                $ref: '#/components/schemas/VesselPosition'
            total:
              type: integer
              description: Number of vessels returned.
        meta:
          $ref: '#/components/schemas/Meta'
  responses:
    TooManyRequests:
      description: Rate limit exceeded. All plans share a limit of 600 API calls per minute.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid api-key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: No vessel or resource matched the supplied identifier.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    Mmsi:
      name: mmsi
      in: query
      description: Vessel Maritime Mobile Service Identity (9-digit number).
      required: false
      schema:
        type: string
    Imo:
      name: imo
      in: query
      description: Vessel International Maritime Organization number (7-digit).
      required: false
      schema:
        type: string
    Uuid:
      name: uuid
      in: query
      description: Datalastic vessel UUID.
      required: false
      schema:
        type: string
  securitySchemes:
    apiKey:
      type: apiKey
      in: query
      name: api-key
      description: Personal API key issued with a Datalastic subscription. Passed as the api-key query parameter on every request.