Stay tuned, we are relaunching the VAPIX library soon!

Introduction

VAPIX® Network video APIs is a set of application programming interfaces (APIs) for configuration and management of Axis network video products.

Selected functionality:

  • Get video and audio streams.

  • Get information about supported features and current product configuration.

  • Update product configuration.

  • Control pan, tilt and zoom (PTZ) functionality.

  • Control I/O and serial ports with connected external equipment.

  • Subscribe to events and notifications.

  • Record video to edge storage

The network video API documentation describes the different APIs and provides numerous examples how to use the API functions in common scenarios. VAPIX Library contains documentation for VAPIX version 3.

All Axis network cameras and video encoders support VAPIX but most products do not support all APIs and API functions. Use the Properties parameters to check supported APIs. Some network video APIs can also be used for products such as video decoders, audio products, I/O modules and access control products.

Version history

DateUpdates
2024–11–05RAID Management: New events added
Thermometry: Updated to API version 1.1
2024–11–04Virtual input API: Added parameter duration to virtualinput/activate.cgi.
Overlay text action: Added parameter index.
2024–10–25Network settings API: Support for MACsec-PSK functionality added
2024–10–22Removed Integrating AXIS Q6000-E
2024–10–15Optics Control: Added method setRelativeFocus and setRelativeMagnification. Added examples.
2024–09–19Time API: Method maxYearSupported added, updated examples.
2024–09–05Network settings API: Method setGlobalProxyConfiguration added.
Privacy mask API: Upgraded to version 3.
2024–08–01Privacy mask API, Geolocation API: Corrected security levels.
Zipstream API: Corrected security levels for setprofile.cgi and listprofiles.cgi.
Video streaming: Corrected security level for Always multicast.
Guard tour API: Corrected security levels for GuardTour.G# and GuardTour.G#.Tour.T#.
PTZ control API: Corrected security level for NbrOfCameras.
System date and time: Corrected security level for Time.DST.
2024–05–07Network settings API: Methods addVlan and removeVlan added.
2024–05–03Dynamic overlay API: Deprecated scrolling text.
2024–04–26DayNight API: New API
2024–03–14Media stream over HTTP and Rate control: Added fullframerate option to the video bitrate priority sections.
2024–03–06Input and outputs: Added parameters Output.DelayTime and Output.Mode
2024–02–06Light control API: Extended getServiceCapabilities response.
2024–01–03API Discovery service: Updated security levels
2023–12–08RAID Management: New API
Network settings API: Method setWLANConfiguration added
2023–10–13Group View: New API
2023–09–21Pencil privacy filter: New API
2023–09–19Network settings API: Added options for wired link modes.
Overlay API: New parameter added to Dynamic text overlays.
NTP API: Updated getNTPInfo with parameters for min/max poll.
Remote Syslog: Added the syslog format ‘AXIS’.
Light control API: Added error codes.
2023–09–01MQTT client API: Added parameters for HTTP/HTTPS proxy.
2023–08–28Media stream over HTTP: New parameters added to media.cgi.
2023–07–13PTZ driver management API: Deprecated events and methods, updated responses.
2023–06–27Event streaming over WebSocket: New API
Thermometry: New API
2023–05–22Network settings API: Added support for wired MSCHAPv2 802.1x and the parameter useStaticDHCPFallback.
2023–04–24Power settings: Added support for power profiles
Reorganized content list
2023–04–04Z-Wave API: New API
Systemready API: previewmode and uptime parameters added.
2023–02–08PIR sensor configuration: New API
2023–01–02Media stream over HTTP: New API
2022–11–30NVR PoE switch configuration: New API
2022–11–22Analytics Metadata Producer Configuration: New API
2022–11–09Pan/tilt/zoom API: AutoFocusType, QuickZoom and TiltIllumination parameters added to the PTZ control API.
2022–11–07NTP API: Added NTS support information.
Video streaming: Deprecated Bitmap support.
Pan/tilt/zoom API: Added parameter removeallserverpresets.
2022–09–30RTSP Adjustable Live Stream: New API
2022–09–21Pan/tilt/zoom API: SpotFocus parameter added to the PTZ control API.
2022–07–04System settings: Removed date.cgi. The time.cgi, found in Time API should be used instead.
2022–07–01Event and action services: New method
Network settings API: New method
PTZ driver management API: Deprecated methods
Video streaming: New parameters
Zipstream technology: New methods
The Audio API, Call service API and Media clip API have been removed from Network video, but are available in the Audio section.
2022–05–02Signed Video: New API
2022–04–28PTZ control API: New attributes/properties
Supervised I/O: New API version
2022–03–30Network settings API: New parameters
Video streaming: Deprecated parameters
2022–03–09Temperature control: New API
Feature Flag Service: New API
External IP Device Information: New API
Export recording API: New parameters
2022–02–08Certificate management API: Added the example Set HTTPS certificate and Assign a certificate to the IEEE 802.1x configuration
Remote Syslog: Updated example Send syslogs over TLS
2022–01–24Video streaming: New RTSP parameters
Network settings API: Added the method scanWLANNetworks
2021–12–22Stitching: New API
2021–11–30Event and action services: Added examples to LED control.
Input and outputs: Added Output event.
MQTT client API: Split into MQTT client API and MQTT Event Bridge.
MQTT Event Bridge: Split off from MQTT client API and extended with new examples and specifications.
Pan/tilt/zoom API: New parameters added for PTZ.UserBasic and PTZ.UserAdv.
Serial port API: Support for wait added.
2021–11–08Event and action services: Added SHA256 public key support.
Video output API: Removed support for legacy overlays.
2021–10–26MQTT client API: Support for ALPN added
Rate control: ABR stream status example added.
2021–10–12Optics Control: New API
mDNS-SD API: Minor updates
Imaging API: Updated security levels
2021–09–28API Discovery service: New parameter
Imaging API: Minor updates
Network settings: New parameter, minor updates
Parameter management: Minor updates
System settings: Deprecated method, minor updates
Video streaming: Deprecated parameters
2021–08–13Network settings: New parameter
2021–08–04Rate control: Minor updates
mDNS-SD API: New method
2021–07–19Clear view: Minor updates
Thermal imaging: Minor updates
2021–07–09Network settings API: New method
Event and action services: New action template
Media clip API: Minor updates
2021–06–11Capture mode: Minor updates
I/O port management: Minor updates
Media clip API: Minor updates
Overlay API: Minor updates
2021–06–02AXIS Object analytics API : Transferred to Applications
I/O port API: Minor updates
2021–05–21Basic device information: Minor updates
Disk management API: Minor updates
Event and action services: Minor updates
I/O port API: Minor updates
Network settings: Minor updates
PTZ control: Minor updates
2021–04–28Audio API: Minor updates
Event and action services
Media clip API: Minor updates
Rate control: Minor updates
MQTT client API: Minor updates
Video output API: Minor updates
Dynamic overlay API: Minor updates
2021–04–15Clear view: New API
2021–04–09AXIS Object analytics API: New API
Video streaming: Minor updates
2021–03–17Siren and light: New API
Certificate management API: New API
System settings: Minor updates
I/O port API: Minor updates
Queuing API: Minor updates
2021–02–16Introduction: New tutorial API
Light control API: Minor updates
On-screen controls: Minor updates
2021–02–11Event and action services: Minor updates
Video streaming indicator: Minor updates
MQTT client API: Minor updates
Basic device information: Minor updates
2020–12–18Recording group: New API
OAK API: New API
Input and outputs: Minor updates
Edge storage API: Minor updates
Network settings: Minor updates
PTZ control API: Minor updates
2020–11–24Find my device: New API
PTZ Autotracker API: New API
2020–11–10PTZ control API: Minor updates
MQTT client API: Minor updates
Recording API: Minor updates
Basic device information: Minor updates
2020–10–27Event and action services: Minor updates
2020–10–22Network settings: Minor updates
Light control API: Minor updates
2020–10–06Pan/tilt/zoom API: Minor updates.
Power settings: Minor updates.
2020–09–30Overlay modifiers: Minor updates
Event and action services: Minor updates
2020–08–31View Area API: New API
2020–08–26Imaging API: Minor updates
Image source rotation: Minor updates
2020–08–25Remote Syslog: New API
2020–08–05Edge storage API: Minor updates
Media clip API: Minor updates
2020–07–22Custom HTTP header API: New API
2020–07–16MQTT client API: New API
2020–07–14Zipstream technology: Minor updates
Edge storage API: Minor updates
2020–06–16Zipstream technology: Minor updates
2020–06–15Privacy mask API: Minor updates
2020–06–11Media clip API: Minor updates
System settings: Minor updates
Disk management API: Minor updates
2020–06–04Network settings: Minor updates
Network settings API: Minor updates
Image source rotation: Minor updates
Video streaming: Minor updates
2020–05–29Disk properties API: Minor updates.
2020–05–19Disk management API: Minor updates
On-screen controls: Minor updates
2020–05–15QuadView configuration: New API
2020–05–12Stream profiles: New API
NTP API: New API
Privacy mask API: Minor updates
2020–05–04Firmware management API: Minor updates.
2020–04–17Video streaming: Minor updates.
2020–04–02Network settings API: Minor updates, clarified the documentation.
2020–03–13Systemready API: New API.
Export recording API: Minor update, clarified the documentation.
Firmware management API: Minor update.
2020–03–09I/O port management: New API.
SSH: New API.
2020–02–10Power settings: New API.
Light control API : Minor update.
Overlay image API: Minor update.
On-screen controls: Minor update.
2020–01–21Feature discovery: New information.
2020–01–20Deprecated record/play.cgi.
2019–12–20Source-specific multicast: New API.
Regional settings: New API.
2019–12–13Supervised I/O: New API.
2019–11–15Light control API: New API.
2019–11–14On-screen directional indicator: New API.
2019–10–02Call service API: Minor updates.
2019–09–25Event and action services: Minor updates.
2019–09–18Overlay image API: New API.
Image overlay API (Old version): Minor updates.
Rate control: Minor updates.
2019–08–30mDNS-SD API: New API.
2019–08–29Image source rotation: New API.
2019–08–23Rate control: New API.
Guard tour API: Minor update.
2019–08–19Serial port API: Minor update.
Guard tour API: Minor update.
2019–08–09Time API: New API.
System date and time: Minor update.
2019–07–22I/O port API: Minor update.
2019–07–10API versioning: Added information about API versioning.
2019–06–05Video streaming indicator: New API.
2019–06–03Pan/tilt/zoom API: Minor update.
System settings: Minor update.
Firmware management API: Minor update.
2019–05–24Dynamic overlay API: Minor update.
2019–05–02On-screen controls: Clarified the documentation.
2019–04–26Network settings API: New API.
PTZ control API: Minor update.
2019–04–17System settings: Minor updates.
Basic device information: Minor updates.
2019–04–15Scene profile API: Minor updates.
Basic device information: Minor updates.
Server report: Minor updates.
2019–03–19Imaging API: New API.
2019–02–20

Firmware management API: Updated error codes.

N/A: Removed documentation that was not included in the firmware release.

2018–12–20

Scene profile API: Added parameters and clarified the documentation.

Event and action services: Clarified the documentation.

2018–12–14

Capture mode: New API.

API Discovery service: New API.

Basic device information: New API.

2018–10–01

Dewarped views: Added support for additional views.

Edge storage API: Clarified the documentation.

Zipstream technology: Added support for minimum FPS.

2018–09–05

Audio API: Added new Audio compression formats & Audio source parameters.

Video output API: Added support for picture-in-picture.

System settings: Updated Content-type in the Add, modify and delete user accounts examples.

2018–05–18

Privacy mask API: Updated the API and added support for Adaptive mosaic, Polygon and Multi channel products.

2018–04–26

Audio API: Updated the information in the transmit audio data-section.

2018–04–06

Firmware management API: New API.

2018–03–14

On-screen controls: Clarified the documentation.

2018–02–28

Decoder API: New API.

2018–01–19

Dynamic overlay API, Overlay modifiers & Geolocation API: New API:s.

Edge storage API: Corrected an error in the Disk management API parameters table Parameters.

Harmonized content across sections.

2017–10–10

Video output API: New API.

Video streaming: Corrected example with multicast in RTSP SETUP. Also added the parameter FrameSkipMode in Parameter specification RTSP URL.

2017–09–22

Video streaming: Added information about videozfpsmode and videozminfps Parameter specification RTSP URL.

Event and action services: Login examples using ‘Basic’ has been updated to use ‘Digest’ instead. Create web service connections.

2017–09–01

Deprecated zipstream strengths 60–100

2017–07–26

PTZ control API: Corrected example in section PTZ control

2017-05-04

Media clip API update: Added stopclip.cgi and support for MP3.

Call service API update: Added support for IPv6.

2017–04–12On-screen controls: New API.
2017–03–28

Section Applications moved from VAPIX library Network video to VAPIX Library appications.

2017–03–09

Audio Control Service API: Moved to VAPIX library Audio systems.

Audio Relay Service API: Moved to VAPIX library Audio systems.

Auto Speaker Test API: Moved to VAPIX library Audio systems.

Audio API: Corrected example in section .

RTSP API: Added videocodec=h265

VMD4: Preset support for mechanical PTZ cameras.

2017–02–27

Audio Control Service API: New API.

Audio Relay Service API: New API.

2016–12–16

Speed dry API: New API.

2016–12–07

Video Motion Detection 4 API: New API (moved to the Applications folder as of 2017–03–28).

: Updated.

2016–10–18

Scene profile API: New API.

Zipstream technology: Updated API.

2016–10–14

Axis VAPIX library version 2 released.

2016–08–26

Focus recall API: New API.

2016–07–07

Call service API release 1.7: Added encryption and certificate configuration. Added attributes in SIP configuration and SIP accounts. Added calling timeout in SIP configuration.

Pan/Tilt/Zoom API: Corrected PTZ error event topic name and description.

2016–05–27

General purpose I/O service API: New API.

Heartbeat service API: New API.

Trigger data: Deprecated. Replaced by Event data streaming.

2016–01–27

Call service API release 1.6: Added audio codec priority and stream parameter configuration.

Percent encoding: Added list of percent-encoded characters.

2015–11–13

Virtual input API: Improved descriptions.

Applications: All application API:s moved to a single chapter.

2015–06–30

Audio API: Added codec opus and AudioSource.A#.Channel parameters.

Auto speaker test API: New API.

Pan/Tilt/Zoom API: Corrected description of continuousfocusmove in PTZ control API /com/ptz.cgi

2015–05–25

Orientation API: New API.

2015–05–05

Thermal imaging: New API. Includes Color palettes, Isotherm API and Temperature alarm API.

Edge storage API: Added disk encryption in Disk management API and Disk properties API. Supported in firmware 5.80.

Event and action services: Parameter-based motion detection and its events are deprecated in firmware 5.80 in later. Replaced by AXIS Video motion detection 3.

2015–04–24

Call service API: New API.

2015–04–07

Axis Zipstream technology: New API.

2015–03–11

Edge storage API: Added Recording storage limit API and Export recording API.

I/O port API and Virtual input API: Clarified that URI-reserved characters must be percent-encoded.

Event and action services: Added SFTP recipient. Supported in firmware 5.70 and later.

2015–02–16

Shock detection API: New API.

Digital autotracking API: Clarified that image rotation affects small object filter.

Video motion detection 3 API: Clarified that image rotation affects small object filter.

2015–01–08

Digital autotracking API: Added Digital autotracking version 2.

Video motion detection 3 API: Added information about multichannel products.

2014–12–16

Integrating AXIS Q6000-E: New API.

2014–12–02

Parameters Log.System and Log.Access removed in firmware 5.60 and later.

Edge storage API: Removed extra " characters.

Event data streaming: Minor corrections

FTP recipient: Parameter temporary supported from firmware 5.70. Added missing parameter upload_path.

2014–10–30Video Motion Detection 3 API: New API.
2014–10–14Axis VAPIX library. Initial version.

About VAPIX

General abbreviations

The following abbreviations are used throughout the VAPIX® documentation.

CGI

Common Gateway Interface – a standardized method of communication between a client (for example a web browser) and a server (for example a web server).

TBD

To be done/designed – signifies that the referenced section/subsection/entity is intended to be specified, but has not reached a level of maturity to be public at this time.

N/A

Not applicable - the feature/parameter/value is of no use in a specific task.

URL

A Uniform Resource Location (URL) is a compact string representation for a resource available via the Internet. RFC 1738 describes the syntax and semantics for a URL.

URI

A Uniform Resource Identifier (URI) is a compact string of characters for identifying an abstract or physical resource. RFC 3986 describes the generic syntax of URI.

Obsolete and removed CGIs

Obsolete

Some CGI requests, arguments and values in the VAPIX® documentation may be obsolete and are provided for backward compatibility. These might not be supported in the future.

Removed

The HTTP API version 1 (VAPIX 1) is no longer supported.

HTTP status codes

The Axis product returns standard HTTP status codes. See RFC 1945 and RFC 2616.

Percent encoding

HTTP and RTSP VAPIX requests must follow the URI generic syntax defined in RFC 3986. Use character encoding ISO/IEC 8859-1. If a parameter in the request contains characters that are not allowed in a URI, these characters must be percent-encoded. That is, characters such as /, \, :, =, &, ?, etc in a <argument> or a <value> must be replaced by %<ASCII hex>.

Correct:
http://<servername>/axis-cgi/record/continuous/addconfiguration.cgi?diskid=SD_DISK
&options=resolution%3D640x480
Wrong:
http://<servername>/axis-cgi/record/continuous/addconfiguration.cgi?diskid=SD_DISK
&options=resolution=640x480
CharacterPercent encoding
blank space%20
"%22
#%23
%%25
&%26
,%2C
/%2F
:%3A
=%3D
?%3F
\%5C

User access rights

User access rights for CGI requests are determined by group membership.

Security levelDescription
viewerUsers with viewer, operator or admin rights can access this functionality.
operatorUsers with operator or admin rights can access this functionality.
adminUsers with admin rights can access this functionality.

Parameter value convention

In tables defining CGI arguments and supported values, the default value for optional arguments is system configured.

Unknown arguments

If an unknown argument is requested, for example if an argument is misspelled it will be ignored by the built-in server in the Axis product. That means that no response feedback will be given.

XML schemas

In many VAPIX API:s, responses are formatted according to an XML schema. Clients should always retrieve supported schema versions from the Axis product before sending other requests. In subsequent requests, the schema version must be specified. Make sure that the client and the Axis product use the same schema version.

Retrieve schema version example:
http://<servername>/axis-cgi/disks/networkshare/schemaversions.cgi
Subsequent request example:
http://<servername>/axis-cgi/disks/networkshare/list.cgi?schemaversion=1&shareid=all

Axis’ XML Schemas are available at http://www.axis.com/vapix/http_cgi/

XML schema versions

The schema version consists of two numbers; major version and minor version. The major version is the number before the decimal point. The minor version is the number after the decimal point.

Example:
SchemaVersion=1.0

If a schema is updated, the version changes. The major version is changed if the update breaks backward compatibility, for example if a new element is added to the beginning of a sequence. If the major version changes, the schema namespace is also changed and the minor version is set to zero. The minor version is changed if the update does not break backward compatibility, for example if a new attribute is added.

In API requests, the major schema version must be specified. The latest minor version will be used.

In API responses, the root element contains the following attributes:

AttributeDescription
SchemaVersion

The version of the XML schema that the response is formatted according to.

Deprecated

true = The schema version is deprecated and will eventually be removed. Deprecated schema versions should not be used.

false = The schema version is not deprecated.

Note
Old schema versions may be removed without first being marked as deprecated.

Style convention - CGIs

Content to be replaced

In URL syntax and in descriptions of CGI arguments, text in italics within angle brackets denotes content that should be replaced with either a value or a text string. When replacing the text string, the angle brackets must also be replaced. For example, the name of the camera or video encoder is denoted by <servername> in the URL syntax description. In the URL syntax examples <servername> is replaced by the string myserver.

XML responses do not apply to this style convention. For this type of responses a text string within angle brackets (including the brackets) is a tag (start-tag or end-tag). XML response descriptions use text in italics inside square brackets to denote content that is replaced by the server. For example, [int] is replaced by an integer.

CGI requests

CGI requests are written in lower-case. CGI arguments are written in lower-case and as one word. When the CGI request includes internal parameters, the internal parameters must be written exactly as named in the Axis product. For the POST method the parameters must be included in the body of the HTTP request. The CGIs are organized in function-related directories under the axis-cgi directory. The file extension is required.

URL syntax is written with the word "Syntax:" in bold face, followed by a box with the referred syntax, as shown below. The name of the Axis product is written as <servername>. This is intended to be replaced with the name of the actual Axis product. The name can either be a name, for example "thecam" or "thecam.adomain.net" or the associated IP number for the server, for example 10.10.2.139. Text within square brackets denotes content that can be omitted.

Syntax:

http://<servername>/axis-cgi/<subdir>[/<subdir>...]<cgi>.<ext>[?<argument>=<value>[&<argument>=<value>...]]

CGI response

A description of the data response is written with “Response” in bold face, followed by the HTTP status code, header fields and a box with the HTTP body. Carriage Return and Line Feed (CRLF) are not explicitly printed.

Response:

HTTP code

200 OK

Content-type

image/jpeg

Body:
<JPEG image data>
Note
Response examples are examples only. The returned data will differ depending on product model and configuration.

CGI example

URL syntax examples are written with Example n:" in bold face, followed by a short description, “Request:” or “Response:” in bold face and a box with an example.

Request default image

Request:

http://myserver/axis-cgi/jpg/image.cgi

JSON and simplified key-value requests

In some VAPIX API:s, for example the Call service API, requests can be constructed using JSON or using a simplified key-value format.

The simplified key-value format is a flattened structure with key=value strings. Levels in the structure are indicated by underscores (_).

  • Boolean values are encoded as true and false.

  • The NULL value is encoded as null.

  • Strings are URL-encoded and may start and end with quotation marks. Example: "a+string%0A".

  • Array keys are encoded as _index_ where index is an integer starting from 0.

Character sets are not converted or validated. UTF-8 is recommended.

This example from the Call service API shows how to request the current SIP configuration using cURL. The first example shows the JSON syntax, the second example shows the corresponding simplified syntax.

NOTE

When using cURL on Windows, you might need to escape the quote characters for the commands to work, i.e:

-d'{"axcall:GetSIPConfiguration":{}}'

should instead be written as:

-d"{\"axcall:GetSIPConfiguration\":{}}"
JSON request and response:
$ curl --anyauth "http://root:pass@192.168.0.90/vapix/call" -s -d'{"axcall:GetSIPConfiguration":{}}'
{
  "SIPConfiguration": {
    "SIPEnabled": false,
    "TURNServers": [],
    "STUNServers": [],
    "ICEEnabled": false,
    "AllowIncomingCalls": false,
    "TURNEnabled": false,
    "STUNEnabled": false,
    "ApplyUserAuthentication": false,
    "AllowedUsers": [],
    "SIPPort": 5060,
    "SIPTLSPort": 5061,
    "ApplyAllowedURIs": false,
    "AllowedURIs": []
  }
}
Simplified request and response:
$ curl --anyauth "http://root:pass@192.168.0.90/vapix/call?format=simple&action=axcall:GetSIPConfiguration"'
 
SIPConfiguration_SIPEnabled=false
SIPConfiguration_SIPPort=5060
SIPConfiguration_SIPTLSPort=5061
SIPConfiguration_STUNEnabled=false
SIPConfiguration_TURNEnabled=false
SIPConfiguration_ICEEnabled=false
SIPConfiguration_AllowIncomingCalls=false
SIPConfiguration_ApplyUserAuthentication=false
SIPConfiguration_ApplyAllowedURIs=false

This example shows how to retrieve a list of structures in simplified format. The example shows a list of three SIPAccounts. Each key is prefixed with _index_ where index is the index of the element in the list. All keys that share the same prefix correspond to the same element.

Simplified request and response:
$ curl --anyauth "http://root:pass@192.168.0.90/vapix/call?format=simple&action=axcall:GetSIPAccounts"'
 
SIPAccount_0_Id="sip_account_0"
SIPAccount_0_Username="local_account_ipv4_udp"
SIPAccount_0_Password=null
SIPAccount_0_Registrar=null
SIPAccount_0_PublicDomain=null
SIPAccount_0_IsDefault=false
SIPAccount_0_Transport="udp"
SIPAccount_0_CallerId="local_account_ipv4_udp"
SIPAccount_1_Id="sip_account_1"
SIPAccount_1_Username="1234"
SIPAccount_1_Password="password"
SIPAccount_1_Registrar="192.168.0.91"
SIPAccount_1_PublicDomain="exampledomain.com"
SIPAccount_1_IsDefault=true
SIPAccount_1_Transport="udp"
SIPAccount_1_CallerId="Entrance Door"
SIPAccount_1_DTMFConfigurationId="internal_config"
SIPAccount_2_Id="sip_account_2"
SIPAccount_2_Username="987654"
SIPAccount_2_Password="password2"
SIPAccount_2_Registrar=null
SIPAccount_2_PublicDomain="examplesecurity.se"
SIPAccount_2_IsDefault=false
SIPAccount_2_Transport="udp"
SIPAccount_2_CallerId="Entrance Door (Axis)"
SIPAccount_2_DTMFConfigurationId="remote_config"
SIPAccount_3_Id="sip_account_3"
SIPAccount_3_Username="12309"
SIPAccount_3_Password="password3"
SIPAccount_3_Registrar=null
SIPAccount_3_PublicDomain="[fd12:3456:789a:1::90]"
SIPAccount_3_PrioritizeIPv6=true
SIPAccount_3_IsDefault=false
SIPAccount_3_Transport="udp"
SIPAccount_3_CallerId="Entrance Door (Axis)"
SIPAccount_3_DTMFConfigurationId="remote_config"
SIPAccount_4_Id="sip_account_4"
SIPAccount_4_Username="local_account_ipv6_tcp"
SIPAccount_4_Password=null
SIPAccount_4_Registrar=null
SIPAccount_4_PublicDomain=null
SIPAccount_4_PrioritizeIPv6=true
SIPAccount_4_IsDefault=false
SIPAccount_4_Transport="tcp"
SIPAccount_4_CallerId="local_account_ipv6_tcp"

Corresponding request and response in JSON:

JSON request and response:
$ curl --anyauth "http://root:pass@192.168.0.90/vapix/call" -s -d'{"axcall:GetSIPAccounts":{}}'
{
  "SIPAccount": [
    {
      "Username": "local_account_ipv4_udp",
      "PublicDomain": null,
      "CallerId": "local_account_ipv4_udp",
      "Registrar": null,
      "Transport": "udp",
      "Password": null,
      "Id": "sip_account_0",
      "IsDefault": false
    },
    {
      "Username": "1234",
      "PublicDomain": "exampledomain.com",
      "CallerId": "Entrance Door",
      "DTMFConfigurationId": "internal_config",
      "Registrar": "192.168.0.91",
      "Transport": "udp",
      "Password": "password",
      "Id": "sip_account_1",
      "IsDefault": true
    },
    {
      "Username": "987654",
      "PublicDomain": "examplesecurity.se",
      "CallerId": "Entrance Door (Axis)",
      "DTMFConfigurationId": "remote_config",
      "Registrar": null,
      "Transport": "udp",
      "Password": "password2",
      "Id": "sip_account_2",
      "IsDefault": false
    },
    {
      "Username": "12309",
      "Registrar": null,
      "PublicDomain": "[fd12:3456:789a:1::90]",
      "SecondaryRegistrar": "",
      "SecondaryPublicDomain": "",
      "CallerId": "Entrance Door (Axis)",
      "DTMFConfigurationId": "internal_config",
      "Transport": "udp",
      "Password": "password3",
      "Id": "sip_account_3",
      "IsDefault": false
    },
    {
      "Username": "local_account_ipv6_tcp",
      "PublicDomain": null,
      "CallerId": "local_account_ipv6_tcp",
      "Registrar": null,
      "Transport": "tcp",
      "PrioritizeIPv6": true,
      "Password": null,
      "Id": "sip_account_4",
      "IsDefault": false
    }
  ]
}

This example shows a response with fault codes.

JSON request:
$ curl --anyauth "http://root:pass@192.168.0.90/vapix/axast" -s -d'{"axast:PerformSpeakerTest":{}}'

JSON response:

HTTP code

400 Bad Request

{
  "Fault": "env:Receiver",
  "FaultCode": "ter:Action",
  "FaultSubCode": "axast:DeviceNotCalibrated",
  "FaultReason": "The Auto Speaker Test cannot be done without prior calibration.",
  "FaultMsg": null
}
Simplified request:
$ curl --anyauth "http://root:pass@192.168.0.90/vapix/axast?format=simple&action=axast:PerformSpeakerTest"

Simplified response:

HTTP code

400 Bad Request

Fault="env:Receiver"
FaultCode="ter:Action"
FaultSubCode="axast:DeviceNotCalibrated"
FaultReason="The Auto Speaker Test cannot be done without prior calibration."
FaultMsg=null

API versioning

An API includes version numbering that consists of two numbers separated by a dot X.X. The first number represents the major version number of the API while the second represents the minor.

The following example is from an entry in the API Discovery service, where the version number of the API :

{
  "id": "basic-device-info",
  "version": "1.2",
  "docLink": "link to doc",
  "name": "API name as described in the VAPIX documentation."
}

Axis Communications uses both numbers to group new and/or upgraded functions. The numbers will increase for either the major or minor version depending on the change.

The major numbers of an API is changed when the API introduces an update that is backwards incompatible, i.e. when an existing client code ceases to work with the new API unless there are modifications done to it. Example of backwards incompatible changes are function signature changes, removal of a function or making an asynchronous function synchronous. To counter this, the API generally provides multiple sets of itself with different major numbers to make backwards compatibility possible when introducing new features.

The minor version of an API is changed to enhance functionality or fix bugs, which means that the client code should continue to work when there is a minor number change in the API.

As an example, a client implements a code to work with API version 1.0. The next release will then become API version 1.1. This means that the client code should work without any modifications.

A list of available APIs, together with their versions, can be retrieved through the API Discovery service, which makes it possible to retrieve information about APIs supported on a specific Axis product.

Feature discovery

To be able to drive and control a VAPIX® device, a user must first be aware of the features that the device is supporting. A feature discovery can be made by using one of 3 different methods:

  • API Discovery

  • Feature API version

  • Feature API informing capabilities

Note
The order ranges from generic to a more specific feature discovery.

API Discovery

The easiest way to find a certain feature is to look for the existence of a feature API by using the API Discovery service. Through this you will be able to find an API entry with a version number that indicates whether there is support for the feature.

Example

Finding the Temperature control API entry with API Discovery means that the device supports the temperature feature.

Feature API version

The version of the feature API is found by using the API Discovery service and might indicate if features have been added to the API over time.

Example

The Temperature control API might exist on 2 different products and in 2 different versions. The first product might show Temperature control API version 1.0, while the second product has Temperature control API version 1.1. In this case, the documentation will show that the method setTemperatureAlarm was added as part of version 1.1.

Feature API informing capabilities

In some cases, the feature information cannot be obtained unless you first query the feature API. This can be done by invoking the API itself.

Example

You will be able to ask the Temperature control API for the device’s current temperature by calling the method getCurrentTemperature, which will give you the feature information, but only during the runtime of the device.

Legacy feature discovery

If the feature API doesn’t exist on the device, legacy feature detection can be used to search for the required feature as it combines all of the previously mentioned methods.

Example

Legacy features are exposed in the Legacy parameter handling API, where you must query the API Discovery service using the id param-cgi. Doing this will indicate the presence of the Legacy parameter handling API, which is used to discover features.

Connection test: Ping, ports and IP addresses

The following examples will show you how to test your Ping or IP/port-address using the pingtest.cgi and tcptest.cgi.

Ping

To determine if your device is up and running and ready to ping another device or server on the network by searching for either its IP-address or the DNS-hostname, you should use the following URL:

http://<ip-address>/axis-cgi/pingtest.cgi?ip=ip-address

Port

To determine if your device is up and running and ready to reach another IP-address and port, i.e. test if the application itself is up and running on the server, you should use the following URL:

http://<ip-address>/axis-cgi/tcptest.cgi?address=ip-address&port=port