U.S. Department of Transportation TIM API

The TIM API from U.S. Department of Transportation — 2 operation(s) for tim.

Operations 4

POST /tim/query Query an RSU for set TIMs #
PUT /tim Used to update an existing TIM already present on an RSU. #
POST /tim Submit Traveler Information Message (TIM) for broadcast to Connected Vehicles. #
DELETE /tim Delete a TIM message on an RSU. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/us-dot-tim-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

us-dot-tim-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ODE REST TIM API
  description: Description of functions available from the Operational Data Environment (ODE) via RESTful interface. Ranges given follow interval notation, for example (0,1) or (0..1) means 0 < x < 1 and [0,1] or [0..1] means 0 ≤ x ≤ 1.
  version: 0.0.1
servers:
- url: https://yourhostname/
tags:
- name: TIM
paths:
  /tim/query:
    post:
      summary: Query an RSU for set TIMs
      operationId: tim_query
      description: Query an RSU for set TIMs
      tags:
      - TIM
      responses:
        '200':
          description: List of messages in JSON form
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          description: Error in body request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '408':
          description: Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '500':
          description: Misc error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RSU'
        required: true
  /tim:
    put:
      summary: Used to update an existing TIM already present on an RSU.
      operationId: tim_put
      description: Update a Traveler Information Message (TIM) that has already been deposited to an RSU. Parameters and response codes are identical to the POST request. Will also deposit the new message to the SDW, if the SDW field is present.
      tags:
      - TIM
      responses:
        '200':
          description: Traveleer Information Message was submitted successfully. See the response body or ODE User Guide for details.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Status'
        '400':
          description: Bad Request. Issued if request is invalid or failed to be executed. See the response body or ODE User Guide for details.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Status'
        '500':
          description: Internal Server Error. See the response body or ODE User Guide for details.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Status'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelerInputData'
        description: Message containing the parameters for a Traveler Information Message including delivery information.
        required: true
    post:
      summary: Submit Traveler Information Message (TIM) for broadcast to Connected Vehicles.
      operationId: tim_post
      description: Submits a TIM message to ODE for distribution to the specified RSUs and SDW.
      tags:
      - TIM
      responses:
        '200':
          description: Traveleer Information Message was submitted successfully. See the response body or ODE User Guide for details.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Status'
        '400':
          description: Bad Request. Issued if request is invalid or failed to be executed. See the response body or ODE User Guide for details.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Status'
        '500':
          description: Internal Server Error. See the response body or ODE User Guide for details.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Status'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelerInputData'
        description: Message containing the parameters for a Traveler Information Message including delivery information.
        required: true
    delete:
      summary: Delete a TIM message on an RSU.
      operationId: tim_delete
      description: Sets the status of a designated message index on an RSU to 6.
      parameters:
      - name: index
        in: query
        description: Index of message to be deleted
        required: true
        schema:
          type: number
          format: integer
      tags:
      - TIM
      responses:
        '200':
          description: Deleted index
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '400':
          description: Error in body request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '408':
          description: Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
        '500':
          description: Misc error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
components:
  schemas:
    Attribute:
      type: object
      properties:
        localNodes:
          type: array
          items:
            type: integer
        disabledLists:
          type: array
          items:
            type: integer
        enabledLists:
          type: array
          items:
            type: integer
        dataLists:
          type: array
          items:
            $ref: '#/components/schemas/DataList'
        dWidth:
          type: integer
        dEleveation:
          type: integer
    MsgID:
      type: object
      properties:
        roadSignID:
          $ref: '#/components/schemas/RoadSignID'
        furtherInfoID:
          type: string
          description: A link to any other incident information data that may be available in the normal ATIS incident description or other messages, a 4-digit hex string.
    Region:
      type: object
      properties:
        name:
          type: string
        regulatorID:
          type: integer
        segmentId:
          type: integer
        anchor_lat:
          type: integer
        anchor_long:
          type: integer
        anchor_eleveation:
          type: integer
        laneWidth:
          type: number
          description: Lane width measured in meters [0.00..327.67m] in increments of 0.01m.
        directionality:
          type: integer
        closedPath:
          type: string
        direction:
          type: string
        description:
          type: string
          description: Valid values are "path" OR "geometry". oldregion is not supported
        path:
          $ref: '#/components/schemas/Path'
        geometry:
          $ref: '#/components/schemas/Geometry'
        oldRegion:
          $ref: '#/components/schemas/OldRegion'
    TravelerInputData:
      type: object
      properties:
        request:
          $ref: '#/components/schemas/request'
        tim:
          $ref: '#/components/schemas/tim'
    SpeedLimit:
      type: object
      properties:
        type:
          type: integer
          description: SpeedLimitType enumeration integer value [0=unknown,1=maxSpeedInSchoolZone,..,12=vehiclesWithTrailersNightMaxSpeed]
        velocity:
          type: number
          description: Velocity in meters per second [0.00..163.82] in increments of 0.02 m/s.
    ComputedLane:
      type: object
      properties:
        laneID:
          type: integer
          description: LaneID [0..255]
        offsetXaxis:
          type: number
          description: Reference lane offset measured in meters [-327.67..327.67m].
        offsetYaxis:
          type: number
          description: Reference lane offset measured in meters [-327.67..327.67m].
        rotateXY:
          type: number
          description: Lane rotation measured in degrees [0..359.9875].
        scaleXaxis:
          type: number
          description: Scale factor in percent [0..202.35%].
        scaleYaxis:
          type: number
          description: Scale factor in percent [0..202.35%].
    SDW:
      type: object
      properties:
        deliverystart:
          type: string
          description: Optional field, ISO string for message delivery start time. Identical to "deliverystart" field in SNMP for when RSU deposit not desired.
        deliverystop:
          type: string
          description: Optional field, ISO string for message delivery stop time. Identical to "deliverystop" field in SNMP for when RSU deposit not desired.
        groupID:
          type: string
          description: Eight-digit hex code of the groupID to use, for example "A123B456". GroupID is a DSRC.TemporaryID used for message identification.
        recordID:
          type: string
          description: Eight-digit hex code of the recordID to use, for example "A123B456". RecordID is a DSRC.TemporaryID used for message identification.
        ttl:
          type: string
          description: Message time to live.
          enum:
          - oneminute
          - thirtyminutes
          - oneday
          - oneweek
          - onemonth
          - oneyear
        serviceRegion:
          properties:
            nwCorner:
              type: object
              properties:
                latitude:
                  type: string
                longitude:
                  type: string
            seCorner:
              type: object
              properties:
                latitude:
                  type: string
                longitude:
                  type: string
    RSU:
      type: object
      description: Optional field, needed for SNMP deposit to RSU.
      properties:
        rsuIndex:
          type: integer
          description: Index of message storage on RSU.
        rsuTarget:
          type: string
          description: IPv4 address of RSU
        rsuUsername:
          type: string
          description: SNMP username (Not required if value is pre-configured in ODE properties)
        rsuPassword:
          type: string
          description: SNMP password (Not required if value is pre-configured in ODE properties)
        rsuRetries:
          type: integer
          description: Number of retries upon message send failure
        rsuTimeout:
          type: integer
          description: Timeout measured in milliseconds
    request:
      type: object
      properties:
        rsus:
          type: array
          items:
            $ref: '#/components/schemas/RSU'
        snmp:
          $ref: '#/components/schemas/SNMP'
        sdw:
          $ref: '#/components/schemas/SDW'
    Geometry:
      type: object
      description: GeometricProjection data frame is used to describe various geometric spatial areas
      properties:
        direction:
          type: string
          description: HeadingSlice bitstring representing field of view over which this projection applies
        extent:
          type: integer
          description: Extent enumeration integer value [0=useInstantlyOnly,...,15=forever]
        laneWidth:
          type: number
          description: Lane width measured in meters [0.00..327.67m] in increments of 0.01m.
        circle:
          $ref: '#/components/schemas/Circle'
    DataList:
      type: object
      properties:
        pathEndpointAngle:
          type: integer
          description: Final angle in last point of lane path in integer degrees [-150..150].
        laneCrownCenter:
          type: number
          description: RoadwayCrownAngle in degrees [-38.1..38.1] in increments of 0.3.
        laneCrownRight:
          type: number
          description: RoadwayCrownAngle in degrees [-38.1..38.1] in increments of 0.3.
        laneCrownLeft:
          type: number
          description: RoadwayCrownAngle in degrees [-38.1..38.1] in increments of 0.3.
        laneAngle:
          type: number
          description: MergeDivergeNodeAngle in degrees [-240..240] in increments of 1.5.
        speedLimits:
          $ref: '#/components/schemas/SpeedLimit'
    NodeListXY:
      type: object
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/Node'
        computed:
          $ref: '#/components/schemas/ComputedLane'
    ShapePointSet:
      type: object
      properties:
        anchor:
          $ref: '#/components/schemas/OdePosition3D'
        laneWidth:
          type: integer
        directionality:
          type: string
          description: one of ENUMERATED { unavailable (0), -- unknown or NA, not typically used in valid expressions forward (1), -- direction of travel follows node ordering reverse (2), -- direction of travel is the reverse of node ordering both (3) -- direction of travel allowed in both directions
        nodeList:
          $ref: '#/components/schemas/NodeListXY'
    RegionPointSet:
      type: object
      properties:
        position:
          $ref: '#/components/schemas/OdePosition3D'
        zoom:
          type: integer
          description: (OPTIONAL) A zoom scale applied in units of 2^N.
        regionList:
          type: array
          items:
            $ref: '#/components/schemas/RegionList'
    RoadSignID:
      type: object
      properties:
        position:
          $ref: '#/components/schemas/OdePosition3D'
        viewAngle:
          type: string
        mutcdCode:
          type: string
          description: 'One of the following enumeration constats: none,             -- non-MUTCD information regulatory,       -- "R" Regulatory signs warning,          -- "W" warning signs maintenance,      -- "M" Maintenance and construction motoristService,  -- Motorist Services guide,            -- "G" Guide signs rec               -- Recreation and Cultural Interest'
        crc:
          type: string
          description: Message cyclic-redundancy-check code in 4-digit hex string.
    Path:
      type: object
      properties:
        type:
          type: string
        scale:
          type: integer
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/Node'
        computedLane:
          $ref: '#/components/schemas/ComputedLane'
    tim:
      type: object
      properties:
        msgCnt:
          type: integer
          description: Range [0..127], used to provide a sequence number within a stream of messages with the same DSRCmsgID and from the same sender.
        timestamp:
          type: string
          description: ISO 8601 time of message creation, for example "2017-08-03T22:25:36.297Z".
        packetId:
          type: string
          description: Provides a unique message ID, in a 9-digit hex string.
        urlB:
          type: string
          description: Standard URL link to designated resource.
        dataFrames:
          type: array
          items:
            $ref: '#/components/schemas/TravelerDataFrame'
    RegionList:
      type: object
      properties:
        xOffset:
          type: number
          description: OffsetLL-B16 measured in degrees [-0.0032767..0.0032767]
        yOffset:
          type: number
          description: OffsetLL-B16 measured in degrees [-0.0032767..0.0032767]
        zOffset:
          type: number
          description: (OPTIONAL) OffsetLL-B16 measured in degrees [-0.0032767..0.0032767]
    TravelerDataFrame:
      type: object
      required:
      - sspindex
      properties:
        doNotUse1:
          type: integer
          description: A short header information
        frameType:
          type: string
          description: 'One of the following TravelerInfoType enumeration constants: unknown, advisory, roadSignage, commercialSignage'
        msgId:
          $ref: '#/components/schemas/MsgID'
        startDateTime:
          type: string
        durationTime:
          type: integer
          description: Range [0..3200], message duration time, in minutes. A value of 32000 means forever.
        priority:
          type: integer
        doNotUse2:
          type: integer
        sspindex:
          type: integer
          description: The SSP index is used to control the data elements that follow the occurrence of the index. The index relates back to the SSP contents in the CERT used to declare what content is allowed by that CERT. In the absence of a matching index in the message sender’s CERT, the message contents are not valid.
        regions:
          type: array
          items:
            $ref: '#/components/schemas/Region'
        doNotUse4:
          type: integer
        doNotUse3:
          type: integer
        content:
          type: string
          description: Part III content type, one of "advisory", "workZone", "genericSign", "speedLimit", or "exitService".
        items:
          type: array
          items:
            type: string
            description: If the value is purely an integer number, it will be interpreted as ITIS code.  If it is not an integer, it will be interpreted as a text message. If you intend to send an integral value as a literal integer, prefix the number with a single quote ('), for example, "'98765" will be interpreted as literal 98765. The prefix character will be removed before populating  the TIM message One may mix ITIS code and text in the  items array.
    Circle:
      type: object
      properties:
        position:
          $ref: '#/components/schemas/OdePosition3D'
        radius:
          type: integer
        units:
          type: integer
    SNMP:
      type: object
      description: Optional field, needed for SNMP deposit to RSU.
      properties:
        rsuid:
          type: string
        msgid:
          type: string
        mode:
          type: string
        channel:
          type: string
        interval:
          type: string
        deliverystart:
          type: string
          description: ISO string for message delivery start time. Takes priority over "deliverystart" field in SDW.
        deliverystop:
          type: string
          description: ISO string for message delivery stop time. Takes priority over "deliverystop" field in SDW.
        enable:
          type: string
        status:
          type: string
    Node:
      type: object
      properties:
        delta:
          type: string
          description: Valid values for offset values are offset XY values is node-XY. For this delta, x and y must be defined in meters from achor point. Valid values for offset Lat/Lon values is node-LL. For this delta nodeLat and NodeLong must be defined indegrees from anchor point. Valid values for absolute Lat/Lon is node-LatLon. For this delta nodeLat and nodeLong must be defined for each nodenot relative to anchor point.
        nodeLat:
          type: number
          description: Latitude in degrees for node-LL (offset) or node-LatLon
        nodeLong:
          type: number
          description: Longitude in degrees for Node-LL (offset) or node-LatLon
        x:
          type: number
          description: Offset x axis in meters for node-XY delta
        y:
          type: number
          description: Offset y axis in meters for node-XY delta
        attributes:
          $ref: '#/components/schemas/Attribute'
    OdePosition3D:
      type: object
      properties:
        latitude:
          type: number
          description: Latitude in degrees [-90.0..90.0]
        longitude:
          type: number
          description: Longitude in degrees [-90.0..90.0]
        elevation:
          type: number
          description: Elevation in meters [-409.5..6143.9]
    OldRegion:
      type: object
      properties:
        direction:
          type: string
        extent:
          type: integer
        area:
          type: string
        regionPointSet:
          $ref: '#/components/schemas/RegionPointSet'
        circle:
          $ref: '#/components/schemas/Circle'
        shapePointSet:
          $ref: '#/components/schemas/ShapePointSet'
    Status:
      type: object
      properties:
        success:
          type: boolean
        message:
          type: string