DAT Freight Posting API

Create, update, refresh, and remove load and truck postings on the DAT One load board directly from a TMS. Mirrors the manual posting workflow so brokers and carriers can automate freight and capacity postings. Endpoint paths are modeled.

OpenAPI Specification

dat-freight-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: DAT Freight & Analytics API (Modeled)
  description: >-
    A modeled OpenAPI description of the DAT Freight & Analytics RESTful API
    suite exposed through the DAT Developer Portal (developer.dat.com). DAT
    operates the DAT One load board and RateView freight-rate benchmark and
    offers RESTful integrations for load posting and search, RateView rate
    lookups, BookNow instant booking, and shipment tracking, primarily for
    Transportation Management Systems (TMS) and freight platforms.


    IMPORTANT - MODELED: The developer portal is gated behind an account
    login (Redocly OIDC), so the exact base URLs, endpoint paths, request
    parameters, and response schemas below could NOT be confirmed against the
    live reference in this build. They are honestly modeled from DAT's publicly
    documented capabilities (LoadSearch for postings, RateView for analytics)
    and its documented two-tier organization/user token authentication. The host
    names (identity.api.dat.com, freight.api.dat.com, analytics.api.dat.com)
    represent the plausible service split and should be reconciled against the
    portal once access is granted.


    Access is subscription-gated. RESTful integration requires a DAT One load
    board subscription plus a service (organization) account; RateView access
    requires a Combo Pro or Combo Premium subscription. CarrierWatch and OnBoard
    do not currently support RESTful API integration. Contact
    developersupport@dat.com for portal access.
  version: '1.0-modeled'
  contact:
    name: DAT Developer Support
    url: https://developer.dat.com/
    email: developersupport@dat.com
  x-modeled: true
  x-endpointsModeled: true
servers:
  - url: https://identity.api.dat.com
    description: Identity / token service (modeled host)
  - url: https://freight.api.dat.com
    description: Freight - load board, posting, BookNow, tracking (modeled host)
  - url: https://analytics.api.dat.com
    description: Analytics - RateView rate lookups (modeled host)
security:
  - userToken: []
tags:
  - name: Identity
    description: Two-tier organization and user token issuance.
  - name: Load Board Search
    description: Search available loads and trucks on the DAT One marketplace.
  - name: Freight Posting
    description: Create and manage load and truck postings.
  - name: RateView
    description: Spot and contract freight-rate lookups.
  - name: BookNow
    description: Instant digital load booking.
  - name: Tracking
    description: Shipment location and status visibility.
paths:
  /access/v1/token/organization:
    post:
      operationId: createOrganizationToken
      tags:
        - Identity
      summary: Create an organization token (modeled)
      description: >-
        Exchange service-account (organization) credentials for an organization
        access token used to mint user tokens. MODELED path.
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationTokenRequest'
      responses:
        '200':
          description: An organization access token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /access/v1/token/user:
    post:
      operationId: createUserToken
      tags:
        - Identity
      summary: Create a user token (modeled)
      description: >-
        Exchange an organization token plus a user identity for a user access
        token used on all data requests. MODELED path.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserTokenRequest'
      responses:
        '200':
          description: A user access token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /loadboard/v3/searches:
    post:
      operationId: createLoadSearch
      tags:
        - Load Board Search
      summary: Search loads or trucks (modeled)
      description: >-
        Run a LoadSearch against the DAT One marketplace by lane, equipment
        type, age, and other filters. MODELED path and schema.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoadSearchRequest'
      responses:
        '200':
          description: Matching load or truck postings.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoadSearchResults'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /loadboard/v2/assets:
    get:
      operationId: listAssets
      tags:
        - Freight Posting
      summary: List load and truck postings (modeled)
      description: List the organization's current load and truck postings (assets). MODELED path.
      responses:
        '200':
          description: A list of postings.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Asset'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createAsset
      tags:
        - Freight Posting
      summary: Create a posting (modeled)
      description: Post a load or truck to the DAT One load board. MODELED path.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetInput'
      responses:
        '201':
          description: The created posting.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Asset'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /loadboard/v2/assets/{assetId}:
    parameters:
      - name: assetId
        in: path
        required: true
        schema:
          type: string
    delete:
      operationId: deleteAsset
      tags:
        - Freight Posting
      summary: Remove a posting (modeled)
      description: Remove a load or truck posting. MODELED path.
      responses:
        '204':
          description: Posting removed.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /linehaulrates/v1/lookups:
    post:
      operationId: lookupRates
      tags:
        - RateView
      summary: Look up RateView freight rates (modeled)
      description: >-
        Retrieve RateView spot and contract benchmark rates for one or more
        lanes by origin, destination, and equipment type. Requires a RateView
        Combo Pro or Combo Premium subscription. MODELED path and schema.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RateLookupRequest'
      responses:
        '200':
          description: Rate lookup results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLookupResults'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /booknow/v1/bookings:
    post:
      operationId: createBooking
      tags:
        - BookNow
      summary: Book a load (modeled)
      description: Book a bookable (BookNow) load at its posted rate. MODELED path.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookingRequest'
      responses:
        '201':
          description: The created booking.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Booking'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /tracking/v1/shipments:
    post:
      operationId: registerShipment
      tags:
        - Tracking
      summary: Register a shipment for tracking (modeled)
      description: Register a load for DAT Tracking shipment visibility. MODELED path.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShipmentInput'
      responses:
        '201':
          description: The registered shipment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Shipment'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /tracking/v1/shipments/{shipmentId}:
    parameters:
      - name: shipmentId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getShipment
      tags:
        - Tracking
      summary: Get shipment status (modeled)
      description: Retrieve current location and status for a tracked shipment. MODELED path.
      responses:
        '200':
          description: The shipment tracking record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Shipment'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  securitySchemes:
    userToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        User access token obtained from POST /access/v1/token/user, which itself
        requires an organization token from POST /access/v1/token/organization.
  responses:
    Unauthorized:
      description: Missing or invalid token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    OrganizationTokenRequest:
      type: object
      required:
        - username
        - password
      properties:
        username:
          type: string
          description: Service-account (organization) email.
        password:
          type: string
          description: Service-account password.
    UserTokenRequest:
      type: object
      required:
        - username
      properties:
        username:
          type: string
          description: Email of the user making requests.
    TokenResponse:
      type: object
      properties:
        accessToken:
          type: string
        expiresWhen:
          type: string
          format: date-time
    LoadSearchRequest:
      type: object
      properties:
        origin:
          $ref: '#/components/schemas/Location'
        destination:
          $ref: '#/components/schemas/Location'
        equipmentType:
          type: string
          description: Equipment code, e.g. V (van), R (reefer), F (flatbed).
        maxAgeMinutes:
          type: integer
    LoadSearchResults:
      type: object
      properties:
        matches:
          type: array
          items:
            $ref: '#/components/schemas/Asset'
    Asset:
      type: object
      properties:
        id:
          type: string
        assetType:
          type: string
          enum:
            - LOAD
            - TRUCK
        origin:
          $ref: '#/components/schemas/Location'
        destination:
          $ref: '#/components/schemas/Location'
        equipmentType:
          type: string
        rate:
          type: number
        postedWhen:
          type: string
          format: date-time
    AssetInput:
      type: object
      required:
        - assetType
        - origin
        - equipmentType
      properties:
        assetType:
          type: string
          enum:
            - LOAD
            - TRUCK
        origin:
          $ref: '#/components/schemas/Location'
        destination:
          $ref: '#/components/schemas/Location'
        equipmentType:
          type: string
        rate:
          type: number
    RateLookupRequest:
      type: object
      required:
        - origin
        - destination
        - equipment
      properties:
        origin:
          $ref: '#/components/schemas/Location'
        destination:
          $ref: '#/components/schemas/Location'
        equipment:
          type: string
        rateType:
          type: string
          enum:
            - SPOT
            - CONTRACT
    RateLookupResults:
      type: object
      properties:
        rate:
          type: object
          properties:
            averageRate:
              type: number
            lowRate:
              type: number
            highRate:
              type: number
            currency:
              type: string
              example: USD
            rateType:
              type: string
    BookingRequest:
      type: object
      required:
        - assetId
      properties:
        assetId:
          type: string
        carrierMcNumber:
          type: string
    Booking:
      type: object
      properties:
        id:
          type: string
        assetId:
          type: string
        status:
          type: string
    ShipmentInput:
      type: object
      required:
        - referenceNumber
      properties:
        referenceNumber:
          type: string
        carrierMcNumber:
          type: string
    Shipment:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
        lastLocation:
          $ref: '#/components/schemas/Location'
        updatedWhen:
          type: string
          format: date-time
    Location:
      type: object
      properties:
        city:
          type: string
        stateProvince:
          type: string
        postalCode:
          type: string
        country:
          type: string
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string