Visteon Phoenix API

The Phoenix API is an automotive-oriented JavaScript interface for building HTML5 applications on Visteon's Phoenix infotainment platform. The API provides access to vehicle cockpit domains including audio playback and volume control, phone call management, media library browsing, navigation routing, screen and display management, remote UI rendering, and vehicle data such as speed, fuel level, and HVAC status. Applications written with the Phoenix API can run across multiple Visteon infotainment hardware platforms including SmartCore and display audio units.

OpenAPI Specification

visteon-phoenix-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Visteon Phoenix API
  description: >-
    The Phoenix API is an automotive-oriented JavaScript interface for building HTML5
    applications on Visteon's Phoenix infotainment platform. The API provides access to
    vehicle cockpit domains including audio playback and volume control, phone call
    management, media library browsing, navigation routing, screen and display management,
    remote UI rendering, and vehicle data such as speed, fuel level, and HVAC status.
    Applications written with the Phoenix API run across Visteon SmartCore and display
    audio infotainment hardware platforms.
  version: '2.0'
  contact:
    name: Visteon Developer Network
    url: https://developer.visteon.com/phoenix/
  license:
    name: Visteon Developer License
    url: https://developer.visteon.com/phoenix/
  termsOfService: https://www.visteon.com/legal/
externalDocs:
  description: Visteon Phoenix API Documentation
  url: https://developer.visteon.com/phoenix/api.html
servers:
  - url: https://developer.visteon.com/phoenix/api
    description: Visteon Phoenix Platform API
tags:
  - name: Audio
    description: Audio playback, volume, and source management
  - name: Phone
    description: Phone call management, contacts, and call history
  - name: Media
    description: Media library browsing, playback, and device management
  - name: Navigation
    description: Route planning, turn-by-turn guidance, and POI search
  - name: Screen Management
    description: Display and screen configuration for multi-screen cockpit
  - name: Vehicle
    description: Vehicle data including speed, fuel, HVAC, and door status
  - name: Remote UI
    description: Remote user interface rendering and interaction
security:
  - ApiKeyAuth: []
paths:
  /audio/status:
    get:
      operationId: getAudioStatus
      summary: Get Audio Status
      description: >-
        Returns the current audio status including playback state, active audio source,
        volume level, and mute state.
      tags:
        - Audio
      responses:
        '200':
          description: Current audio status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AudioStatus'
        '500':
          description: Internal server error
  /audio/volume:
    get:
      operationId: getVolume
      summary: Get Volume
      description: Returns the current master volume level and mute status.
      tags:
        - Audio
      responses:
        '200':
          description: Current volume settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VolumeSettings'
        '500':
          description: Internal server error
    put:
      operationId: setVolume
      summary: Set Volume
      description: Sets the master volume level for the infotainment system.
      tags:
        - Audio
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VolumeUpdate'
      responses:
        '200':
          description: Updated volume settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VolumeSettings'
        '400':
          description: Invalid volume value
        '500':
          description: Internal server error
  /audio/sources:
    get:
      operationId: listAudioSources
      summary: List Audio Sources
      description: >-
        Returns all available audio sources such as FM radio, AM radio, Bluetooth audio,
        USB media, and auxiliary input.
      tags:
        - Audio
      responses:
        '200':
          description: List of audio sources
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AudioSourceList'
        '500':
          description: Internal server error
  /audio/sources/{sourceId}/activate:
    post:
      operationId: activateAudioSource
      summary: Activate Audio Source
      description: Switches the active audio source to the specified source.
      tags:
        - Audio
      parameters:
        - name: sourceId
          in: path
          required: true
          description: Identifier of the audio source to activate
          schema:
            type: string
      responses:
        '200':
          description: Audio source activated
        '404':
          description: Audio source not found
        '500':
          description: Internal server error
  /phone/status:
    get:
      operationId: getPhoneStatus
      summary: Get Phone Status
      description: >-
        Returns the current phone connection status including Bluetooth pairing state,
        signal strength, and active call status.
      tags:
        - Phone
      responses:
        '200':
          description: Phone connection status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhoneStatus'
        '500':
          description: Internal server error
  /phone/calls:
    get:
      operationId: listCalls
      summary: List Active Calls
      description: Returns a list of current active or on-hold phone calls.
      tags:
        - Phone
      responses:
        '200':
          description: List of active calls
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallList'
        '500':
          description: Internal server error
    post:
      operationId: makeCall
      summary: Make Call
      description: Initiates an outgoing phone call to the specified number.
      tags:
        - Phone
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CallRequest'
      responses:
        '201':
          description: Call initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Call'
        '400':
          description: Invalid phone number
        '500':
          description: Internal server error
  /phone/calls/{callId}:
    delete:
      operationId: endCall
      summary: End Call
      description: Terminates an active phone call.
      tags:
        - Phone
      parameters:
        - name: callId
          in: path
          required: true
          description: Identifier of the call to terminate
          schema:
            type: string
      responses:
        '204':
          description: Call ended
        '404':
          description: Call not found
        '500':
          description: Internal server error
  /media/library:
    get:
      operationId: browseMediaLibrary
      summary: Browse Media Library
      description: >-
        Browses the media library returning available media items from connected devices.
        Supports pagination and filtering by media type.
      tags:
        - Media
      parameters:
        - name: type
          in: query
          required: false
          description: Filter by media type (music, video, photos)
          schema:
            type: string
            enum: [music, video, photos]
        - name: offset
          in: query
          required: false
          description: Pagination offset
          schema:
            type: integer
            default: 0
        - name: limit
          in: query
          required: false
          description: Number of items per page
          schema:
            type: integer
            default: 50
      responses:
        '200':
          description: Media library items
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaLibrary'
        '500':
          description: Internal server error
  /media/nowplaying:
    get:
      operationId: getNowPlaying
      summary: Get Now Playing
      description: Returns information about the currently playing media track.
      tags:
        - Media
      responses:
        '200':
          description: Currently playing track
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaTrack'
        '404':
          description: No media currently playing
        '500':
          description: Internal server error
  /navigation/route:
    get:
      operationId: getActiveRoute
      summary: Get Active Route
      description: Returns the currently active navigation route including waypoints and ETA.
      tags:
        - Navigation
      responses:
        '200':
          description: Active navigation route
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NavigationRoute'
        '404':
          description: No active route
        '500':
          description: Internal server error
    post:
      operationId: startNavigation
      summary: Start Navigation
      description: Starts navigation to a specified destination address or coordinates.
      tags:
        - Navigation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NavigationRequest'
      responses:
        '201':
          description: Navigation started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NavigationRoute'
        '400':
          description: Invalid destination
        '500':
          description: Internal server error
    delete:
      operationId: cancelNavigation
      summary: Cancel Navigation
      description: Cancels the currently active navigation route.
      tags:
        - Navigation
      responses:
        '204':
          description: Navigation cancelled
        '404':
          description: No active route
        '500':
          description: Internal server error
  /navigation/search:
    get:
      operationId: searchPOI
      summary: Search Points of Interest
      description: Searches for points of interest near the current vehicle location or a specified coordinate.
      tags:
        - Navigation
      parameters:
        - name: query
          in: query
          required: true
          description: Search query string (e.g. "gas station", "restaurant")
          schema:
            type: string
        - name: lat
          in: query
          required: false
          description: Latitude for search center
          schema:
            type: number
        - name: lon
          in: query
          required: false
          description: Longitude for search center
          schema:
            type: number
        - name: radius
          in: query
          required: false
          description: Search radius in meters
          schema:
            type: integer
            default: 5000
      responses:
        '200':
          description: Points of interest results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/POIResults'
        '400':
          description: Invalid search parameters
        '500':
          description: Internal server error
  /vehicle/data:
    get:
      operationId: getVehicleData
      summary: Get Vehicle Data
      description: >-
        Returns current vehicle telemetry data including speed, fuel level, odometer,
        engine status, and HVAC settings.
      tags:
        - Vehicle
      responses:
        '200':
          description: Vehicle data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VehicleData'
        '500':
          description: Internal server error
  /screen/displays:
    get:
      operationId: listDisplays
      summary: List Displays
      description: >-
        Returns all display screens available in the vehicle cockpit including
        instrument cluster, center stack, and passenger displays.
      tags:
        - Screen Management
      responses:
        '200':
          description: List of displays
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DisplayList'
        '500':
          description: Internal server error
  /screen/displays/{displayId}:
    get:
      operationId: getDisplay
      summary: Get Display
      description: Returns configuration and state of a specific display screen.
      tags:
        - Screen Management
      parameters:
        - name: displayId
          in: path
          required: true
          description: Identifier of the display
          schema:
            type: string
      responses:
        '200':
          description: Display configuration and state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Display'
        '404':
          description: Display not found
        '500':
          description: Internal server error
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Phoenix-API-Key
  schemas:
    AudioStatus:
      type: object
      description: Current audio system status
      properties:
        isPlaying:
          type: boolean
        activeSource:
          type: string
        volume:
          type: integer
          minimum: 0
          maximum: 100
        isMuted:
          type: boolean
    VolumeSettings:
      type: object
      description: Volume configuration
      properties:
        level:
          type: integer
          minimum: 0
          maximum: 100
        isMuted:
          type: boolean
    VolumeUpdate:
      type: object
      description: Volume update request
      properties:
        level:
          type: integer
          minimum: 0
          maximum: 100
        mute:
          type: boolean
    AudioSourceList:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              type:
                type: string
                enum: [fm, am, bluetooth, usb, aux, streaming]
              isActive:
                type: boolean
    PhoneStatus:
      type: object
      description: Phone connection and call status
      properties:
        isConnected:
          type: boolean
        deviceName:
          type: string
        signalStrength:
          type: integer
          minimum: 0
          maximum: 5
        hasActiveCall:
          type: boolean
        batteryLevel:
          type: integer
          minimum: 0
          maximum: 100
    CallList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Call'
    Call:
      type: object
      description: A phone call
      properties:
        id:
          type: string
        number:
          type: string
        contactName:
          type: string
        status:
          type: string
          enum: [active, on-hold, incoming, outgoing]
        duration:
          type: integer
          description: Call duration in seconds
    CallRequest:
      type: object
      required: [number]
      properties:
        number:
          type: string
          description: Phone number to call
    MediaLibrary:
      type: object
      properties:
        total:
          type: integer
        offset:
          type: integer
        limit:
          type: integer
        items:
          type: array
          items:
            $ref: '#/components/schemas/MediaTrack'
    MediaTrack:
      type: object
      description: A media track or item
      properties:
        id:
          type: string
        title:
          type: string
        artist:
          type: string
        album:
          type: string
        duration:
          type: integer
          description: Duration in seconds
        type:
          type: string
          enum: [music, video, photo]
        uri:
          type: string
    NavigationRoute:
      type: object
      description: A navigation route
      properties:
        id:
          type: string
        destination:
          $ref: '#/components/schemas/Location'
        eta:
          type: string
          format: date-time
        distanceRemaining:
          type: number
          description: Distance remaining in meters
        timeRemaining:
          type: integer
          description: Time remaining in seconds
        isActive:
          type: boolean
    NavigationRequest:
      type: object
      description: Navigation start request
      required: [destination]
      properties:
        destination:
          $ref: '#/components/schemas/Location'
        avoidTolls:
          type: boolean
        avoidHighways:
          type: boolean
    Location:
      type: object
      description: A geographic location
      properties:
        address:
          type: string
        latitude:
          type: number
        longitude:
          type: number
        name:
          type: string
    POIResults:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              address:
                type: string
              latitude:
                type: number
              longitude:
                type: number
              distance:
                type: number
                description: Distance from search center in meters
              category:
                type: string
    VehicleData:
      type: object
      description: Vehicle telemetry and status data
      properties:
        speed:
          type: number
          description: Current vehicle speed in km/h
        fuelLevel:
          type: integer
          description: Fuel level as percentage 0-100
        odometer:
          type: number
          description: Odometer reading in kilometers
        engineRunning:
          type: boolean
        gearPosition:
          type: string
          enum: [P, R, N, D, 1, 2, 3, 4, 5, 6]
        hvac:
          type: object
          properties:
            temperature:
              type: number
              description: Set temperature in Celsius
            fanSpeed:
              type: integer
              minimum: 0
              maximum: 7
            isAcOn:
              type: boolean
    DisplayList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Display'
    Display:
      type: object
      description: A cockpit display screen
      properties:
        id:
          type: string
        name:
          type: string
          description: Display name (e.g. Center Stack, Instrument Cluster)
        resolution:
          type: object
          properties:
            width:
              type: integer
            height:
              type: integer
        orientation:
          type: string
          enum: [landscape, portrait]
        isOn:
          type: boolean
        brightness:
          type: integer
          minimum: 0
          maximum: 100