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