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–03–14 and : Added fullframerate option to the video bitrate priority sections.
2024–03–06: Added parameters Output.DelayTime and Output.Mode
2024–02–06: Extended getServiceCapabilities response.
2024–01–03: Updated security levels
2023–12–08: New API
: Method setWLANConfiguration added
2023–10–13: New API
2023–09–21: New API
2023–09–19: Added options for wired link modes.
: New parameter added to Dynamic text overlays.
: Updated getNTPInfo with parameters for min/max poll.
: Added the syslog format ‘AXIS’.
: Added error codes.
2023–09–01: Added parameters for HTTP/HTTPS proxy.
2023–08–28: New parameters added to media.cgi.
2023–07–13: Deprecated events and methods, updated responses.
2023–06–27: New API
: New API
2023–05–22: Added support for wired MSCHAPv2 802.1x and the parameter useStaticDHCPFallback.
2023–04–24: Added support for power profiles
Reorganized content list
2023–04–04: New API
: previewmode and uptime parameters added.
2023–02–08: New API
2023–01–02: New API
2022–11–30: New API
2022–11–22: New API
2022–11–09: AutoFocusType, QuickZoom and TiltIllumination parameters added to the PTZ control API.
2022–11–07: Added NTS support information.
: Deprecated Bitmap support.
: Added parameter removeallserverpresets.
2022–09–30: New API
2022–09–21: SpotFocus parameter added to the PTZ control API.
2022–07–04: Removed date.cgi. The time.cgi, found in should be used instead.
2022–07–01: New method
: New method
: Deprecated methods
: New parameters
: 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–02: New API
2022–04–28: New attributes/properties
: New API version
2022–03–30: New parameters
: Deprecated parameters
2022–03–09: New API
: New API
: New API
: New parameters
2022–02–08: Added the example Set HTTPS certificate and Assign a certificate to the IEEE 802.1x configuration
: Updated example Send syslogs over TLS
2022–01–24: New RTSP parameters
: Added the method scanWLANNetworks
2021–12–22: New API
2021–11–30: Added examples to LED control.
: Added Output event.
: Split into MQTT client API and MQTT Event Bridge.
: Split off from MQTT client API and extended with new examples and specifications.
: New parameters added for PTZ.UserBasic and PTZ.UserAdv.
: Support for wait added.
2021–11–08: Added SHA256 public key support.
: Removed support for legacy overlays.
2021–10–26: Support for ALPN added
: ABR stream status example added.
2021–10–12: New API
: Minor updates
: Updated security levels
2021–09–28: New parameter
: Minor updates
: New parameter, minor updates
: Minor updates
: Deprecated method, minor updates
: Deprecated parameters
2021–08–13: New parameter
2021–08–04: Minor updates
: New method
2021–07–19: Minor updates
: Minor updates
2021–07–09: New method
: New action template
: Minor updates
2021–06–11: Minor updates
: Minor updates
: Minor updates
: Minor updates
2021–06–02AXIS Object analytics API : Transferred to Applications
: Minor updates
2021–05–21: Minor updates
: Minor updates
: Minor updates
: Minor updates
: Minor updates
: Minor updates
2021–04–28: Minor updates

: Minor updates
: Minor updates
: Minor updates
: Minor updates
: Minor updates
2021–04–15: New API
2021–04–09: New API
: Minor updates
2021–03–17: New API
: New API
: Minor updates
: Minor updates
: Minor updates
2021–02–16: New tutorial API
: Minor updates
: Minor updates
2021–02–11: Minor updates
: Minor updates
: Minor updates
: Minor updates
2020–12–18: New API
: New API
: Minor updates
: Minor updates
: Minor updates
: Minor updates
2020–11–24: New API
: New API
2020–11–10: Minor updates
: Minor updates
: Minor updates
: Minor updates
2020–10–27: Minor updates
2020–10–22: Minor updates
: Minor updates
2020–10–06: Minor updates.
: Minor updates.
2020–09–30: Minor updates
: Minor updates
2020–08–31: New API
2020–08–26: Minor updates
: Minor updates
2020–08–25: New API
2020–08–05: Minor updates
: Minor updates
2020–07–22: New API
2020–07–16: New API
2020–07–14: Minor updates
: Minor updates
2020–06–16: Minor updates
2020–06–15: Minor updates
2020–06–11: Minor updates
: Minor updates
: Minor updates
2020–06–04: Minor updates
: Minor updates
: Minor updates
: Minor updates
2020–05–29: Minor updates.
2020–05–19: Minor updates
: Minor updates
2020–05–15: New API
2020–05–12: New API
: New API
: Minor updates
2020–05–04: Minor updates.
2020–04–17: Minor updates.
2020–04–02: Minor updates, clarified the documentation.
2020–03–13: New API.
: Minor update, clarified the documentation.
: Minor update.
2020–03–09: New API.
: New API.
2020–02–10: New API.
: Minor update.
: Minor update.
: Minor update.
2020–01–21: New information.
2020–01–20Deprecated record/play.cgi.
2019–12–20: New API.
: New API.
2019–12–13: New API.
2019–11–15: New API.
2019–11–14: New API.
2019–10–02: Minor updates.
2019–09–25: Minor updates.
2019–09–18: New API.
: Minor updates.
: Minor updates.
2019–08–30: New API.
2019–08–29: New API.
2019–08–23: New API.
: Minor update.
2019–08–19: Minor update.
: Minor update.
2019–08–09: New API.
: Minor update.
2019–07–22: Minor update.
2019–07–10: Added information about API versioning.
2019–06–05: New API.
2019–06–03: Minor update.
: Minor update.
: Minor update.
2019–05–24: Minor update.
2019–05–02: Clarified the documentation.
2019–04–26: New API.
: Minor update.
2019–04–17: Minor updates.
: Minor updates.
2019–04–15: Minor updates.
: Minor updates.
: Minor updates.
2019–03–19: 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

: New API.

: New API.

: 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 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

: New API.

2018–03–14

On-screen controls: Clarified the documentation.

2018–02–28

: New API.

2018–01–19

, & : New API:s.

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

Harmonized content across sections.

2017–10–10

: New API.

Video streaming: Corrected example with multicast in . Also added the parameter FrameSkipMode in .

2017–09–22

Video streaming: Added information about videozfpsmode and videozminfps .

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

2017–09–01

Deprecated zipstream strengths 60–100

2017–07–26

PTZ control API: Corrected example in section

2017-05-04

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

Call service API update: Added support for IPv6.

2017–04–12: 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

: 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

: New API.

: 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

The differences between VAPIX version 2 and VAPIX version 3 are described in the Migration Guide available at Partner Pages and at http://www.axis.com/techsup/cam_servers/dev/cam_http_api_index.php.

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 , 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