Skype 2.0 API reference
By
on February 9, 2006 in Developer Blog.
The Skype 2.0 API reference is now available. To view a HTML version of the document please click the link below. Or you can download a PDF version from the Skype Learning Zone.
About this guide
This section describes this guide to help you find
what you want quickly. If you are developing for the Skype API,
please read the complete document and understand its technical and
procedural information.
Purpose of this guide
This document describes the public Skype
application programming interface (API), version 2.0 for Windows, the
Skype APIs for Linux and Mac, and provides a reference guide for the
Skype developer community.
Who reads this guide?
Skype's developer community who work with us to
enrich the Skype experience and extend the reach of free telephone
calls on the internet.
What is in this guide?
This document contains the following information:
More information
The Skype websites contain useful information for
developers:
The
Skype Developer Zone
is where to find all the Skype public API docs
(including earlier versions) and where you can download free
examples for Windows, Linux, and Mac platforms.
Share ideas and
information on the
Skype Public API forum
on the Skype websites.
See the cool things people are creating and
submit your project to the
Skype Extras Gallery
site.
Legal information
This document is the property of Skype
Technologies S.A. and its affiliated companies (Skype) and is
protected by copyright and other intellectual property rights laws in
Luxembourg and abroad. Skype makes no representation or warranty as
to the accuracy, completeness, condition, suitability, or performance
of the document or related documents or their content, and shall have
no liability whatsoever to any party resulting from the use of any of
such documents. By using this document and any related documents, the
recipient acknowledges Skype's intellectual property rights thereto
and agrees to the terms above, and shall be liable to Skype for any
breach thereof. For usage restrictions please read the
end user license agreement
(EULA).
Text notation
This document uses
monospace
font to
represent code, file names, commands, objects and parameters. The
following text conventions apply for syntax:
CALL
-
uppercase text indicates a keyword, such as command, notification,
and object.
property
- lowercase text indicates a category of a keyword
<username>
- angle brackets indicate an identifier, such as username or call id
[<target>]
- square brackets identify optional items
*
-
asterisk indicates repetitive items
|
-
vertical bar means "or"
->
-
command issued by client (used in examples)
<-
-
response or notification from Skype (used in examples)
//
- comment line (used in examples)
Overview of the Skype API
The Skype API passes commands in simple text
messages between Skype and client applications and devices. Client
applications can be applications which extend Skype functionality and
devices can be hardware or software devices, such as USB phones. The
Skype API has two main components; the Skype phone API and the Skype
access API.
Skype protocol
The Skype protocol defines communications in
Skype. Skype releases new versions of the protocol periodically to
enable new communication features in Skype. Skype always uses the
correct protocol version to match the protocol version reported by a
connecting device or application. Skype never responds with a higher
protocol than the connecting device or application and the default
protocol it uses is version 1.
Skype phone API
The Skype phone API provides an interface to
connecting devices such as USB phones. The Skype client controls the
API and triggers events on the device (or application) driver. The
connecting device receives abstract events such as:
the green button
is pressed
the handset is
off-hook
the device rings
During installation, Skype detects compatible
audio drivers and installs them. If a new device and driver are added
after Skype installation, Skype detects the new driver but the user
must select the driver manually for it to become operational.
The Skype phone API uses the following commands to
communicate with Skype, substituting values and setting indicators as
appropriate:
NAME
deviceName
PROTOCOL
version
AUDIO_IN
deviceName
AUDIO_OUT
deviceName
HOOK ON|OFF
MUTE ON|OFF
BTN_PRESSED
(0-9,A-Z,#,*,+,UP,DOWN,YES,NO,SKYPE)
BTN_RELEASED ...
The Skype phone API uses the
MUTE ON|OFF
command to control the mute function on a device.
Skype access API
The Skype access API enables external applications
to control certain Skype functions, for example to place a call or to
get a Skype user profile. In the interests of privacy and security,
before an external application can take control, Skype pops up the
name of the application to the user and asks if it is OK to allow
access.
When a client application starts controlling
Skype, Skype switches audio devices to the devices reported by the
controlling client.
The Skype access API has the following
characteristics:
All actions
performed using the API are mirrored on the Skype client.
Multiple
applications can use the Skype access API at the same time.
All times and
dates in the API are in UTC (Coordinated Universal Time)
Transmission over the API is in UTF-8
encoding.
Using the Skype API on
Windows
When developing applications to work with Skype,
follow these general guidelines:
Give intuitive
names to executable files (.exe files) because this name is
displayed to the user for confirmation. If the name is unclear, the
user might not allow the application to access Skype.
Sign applications
with VeriSign's CodeSigning certificate.
The application must support the
NAME
command and publish its name.
Skype for Windows sends and receives API commands
using
WM_COPYDATA
messages. Use the
RegisterWindowMessage
method to register the following messages:
SkypeControlAPIDiscover
SkypeControlAPIAttach
To initiate communication, a client application
broadcasts the
SkypeControlAPIDiscover
message, including
its window name as a
wParam
parameter. Skype responds with a
SkypeControlAPIAttach
message to the specified window name
and indicates the connection status with one of the following values:
SKYPECONTROLAPI_ATTACH_SUCCESS
= 0
- The client is attached and the API window handle is
provided in
wParam
parameter.
SKYPECONTROLAPI_ATTACH_PENDING_AUTHORIZATION
= 1
- Skype acknowledges the connection request and is waiting
for user confirmation. The client is not yet attached and must wait
for the
SKYPECONTROLAPI_ATTACH_SUCCESS
message.
SKYPECONTROLAPI_ATTACH_REFUSED
= 2
- The user has explicitly denied access to client.
SKYPECONTROLAPI_ATTACH_NOT_AVAILABLE = 3
- The API is not available at the moment, for example because no
user is currently logged in. The client must wait for a
SKYPECONTROLAPI_ATTACH_API_AVAILABLE
broadcast before
attempting to connect again.
When the API becomes available, Skype broadcasts
the
SKYPECONTROLAPI_ATTACH_API_AVAILABLE = 0x8001
message to
all application windows in the system. The data exchange uses
commands (or responses), provided as null-terminated UTF-8 strings.
The terminating 0 must be transferred as well. You cannot combine
several messages in one packet. There is no limit to the length of
the transferred string.
Note:
The result of processing
the message must be different from zero (0), otherwise Skype
considers that the connection broken.
If the API client spends more than 1 second
processing a message, the connection is disconnected. Use the
PING
command to test the connection status. To ease debugging during
development, in regedit enter the key
APITimeoutDisabled (DWORD
value, 0 = timeout enabled 1 = timeout disabled)
into the
HKCU\Software\Skype\Phone\UI
file in the registry to
override the 1 second timeout.
To check if Skype is installed, in regedit check
if the following key exists:
HKCU\Software\Skype\Phone,
SkypePath
. This key points to the location of the
skype.exe
file
. If this key does not exist, check if the
HKLM\Software\Skype\Phone, SkypePath
key exists. If the
HKCU
key does not exist but the
HKLM
key is present, Skype has
been installed from an administrator account has but not been used
from the current account.
Download free examples
Using the Skype API on Linux
The Skype API for Linux uses the Skype protocol,
version 1.1.0.3. The API uses the d-bus messaging framework and you
can download the d-bus libraries from
freedesktop.org.
If RPM Package Manager is installed on the Linux
device, the d-bus files are automatically configured. If RPM is not
installed, create a text file named
skype.conf
, and save it
to
/etc/dbus-1/system.d/skype.conf
.
The configuration file enables the Skype API to
use the d-bus framework and contains the following:
<!DOCTYPE busconfig PUBLIC "-//freedesktop//
DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<policy context="default">
<allow own="com.Skype.API"/>
<allow send_destination="com.Skype.API"/>
<allow receive_sender="com.Skype.API"/>
<allow send_path="/com/Skype"/>
</policy>
</busconfig>
To access the Skype API from a client application:
The application
passes its name to Skype:
<- NAME clientApplication
Skype pops up a
confirmation window to the user with the following
response:
ClientApplication wants to talk to Skype. OK?
If OK, protocol messages are exchanged:
-> OK
<- PROTOCOL 1
-> PROTOCOL 1
The Skype protocol manages the subsequent session.
The d-bus service is
com.Skype.API
Two communication paths are used:
for
client-to-Skype commands the path is
/com/Skype
for Skype-to-client commands the path is
/com/Skype/Client
Two methods are used:
use the
Invoke
method with one string parameter for client-to-Skype commands
use the
Notify
method for
Skype-to-client commands and responses
More information and examples
Read the
Skype API for Linux guide
and download free examples for C and for
Python.
Using the Skype API on Mac
The Skype API for Mac uses Skype version 1.3 and
has interfaces for Cocoa, Carbon, and AppleScript. The Cocoa and
Carbon interfaces are implemented in
Skype.framework
. Skype
recommends that you include the Skype framework in your application
as an embedded framework. To do so, copy it into the application
bundle and link it to the application.
Client applications send string commands to
control Skype. The format of these strings commands is described in
the
Skype API reference. If
you are using a Cocoa or Carbon interface, Skype will send
information back to your application by calling asynchronous delegate
functions/methods.
More information and examples:
Read the
Skype API for Mac
guide and download the Skype framework and free
examples.
Skype protocol
The Skype protocol is currently in its fifth
version. Starting with protocol 1 (the first Skype protocol) a new
version is created only when new commands become incompatible with
existing commands. The protocol number does not increase when new
commands are introduced but existing commands remain unchanged.
Protocol 5
Protocol 5 is the current version of the Skype
protocol and is used by the following versions of Skype:
2.0 - Windows
1.4.0.84 - Windows
1.3.0.33 - Windows and Mac
This protocol introduced multiperson chat
commands, one-to-one video calls, call forwarding, and contact
grouping.
Protocol 4
Protocol 4 is used by the following versions of
Skype:
1.2.0.11 - Windows
1.1.0.3 - Windows and Linux
This protocol introduced ISO code prefixes for
language and country.
Protocol 3
Protocol 3 is used by the following version of
Skype:
1.1.0.61 - Windows
This protocol introduced a compatibility layer for
previous versions of instant messaging.
Protocol 2
Protocol 2 is used by the following version of
Skype:
1.0.0.94
This protocol implemented the following changes:
Introduced the
SKYPEME
online status
For calls on hold,
notifies clients with either
LOCALHOLD
or
REMOTEHOLD
.
Protocol 1 simply returned
ONHOLD
.
Introduces the call status,
CANCELLED
.
Protocol 1 and 2 compatibility
If the requested protocol is smaller than 3, all
incoming commands are converted as follows:
SEARCH
MESSAGES
->
SEARCH CHATMESSAGES
SEARCH
MISSEDMESSAGES
->
SEARCH MISSEDCHATMESSAGES
GET MESSAGE
->
GET CHATMESSAGE
SET MESSAGE
->
SET
CHATMESSAGE
The
GET MESSAGE
properties are also
converted:
PARTNER_HANDLE
->
FROM_HANDLE
PARTNER_DISPNAME
->
FROM_DISPNAME
All API notification (including
GET/SET
MESSAGE
) replies are converted:
CHATMESSAGE *
FROM_HANDLE x
->
MESSAGE * PARTNER_HANDLE x
CHATMESSAGE *
FROM_DISPNAME x
->
MESSAGE * FROM_DISPNAME x
CHATMESSAGE * property x
->
MESSAGE * property x
If the protocol is less than 3,
SEARCH
MESSAGES
and
SEARCH MISSEDMESSAGES
commands return
string
MESSAGES
1, 2, 3.
Skype API reference
The Skype API reference is a guide for developers
working with the public Skype API. The reference contains the
following information:
Terminology
The Skype API reference uses the following terms:
The Skype access
API is also known as the Skype control API.
The client
application issues a
command
to control Skype.
In reply to some
commands, Skype returns a synchronous
response. Not
all commands require a response. Responses are documented under
their relevant commands.
Skype
objects
are application, call, chat, chatmessage, profile, user, and
voicemail.
A
notification
is an asynchronous message Skype sends to a client when a change
occurs, for example when a contact comes online or a new chatmessage
is received.
Skype has
general parameters
to control the setup, current user and
connection information.
Connectable users
are online
Skype users who are in the client contact list and also non-contacts
who are in active communication with the client.
Commands
This section provides a reference to the commands
used in Skype, and contains the following:
Commands
>
Reference
>
Contents
Command identifiers
A command identifier is useful to identify a
response to a specific command. A command identifier is supported by
most commands and is included in the response.
Syntax
#<command_id> command
Response
#<command_id> response|error
Parameters
command_id
- client assigned alphanumeric identifier
Errors
all possible errors for a given command
Version
Protocol 4
Notes
A command identifier is not included in asynchronous notification
events initiated by a command.
Asynchronous
commands usually return a synchronous response with the command id.
When the command is processed an asynchronous notification is also
sent
A response may come not directly after the
command because there can other messages can be received between
command and response.
Examples
Simple response to command
-> #AB GET USERSTATUS
<- #AB USERSTATUS ONLINE
Invalid command with reported error
-> #123 GET XZY
<- #123 ERROR 7 GET: invalid WHAT
Command response and notification
-> #cmd11 SET USERSTATUS ONLINE
// this is the response for the command
<- #cmd11 USERSTATUS ONLINE
// this is notification when the command is actually processed
<- USERSTATUS ONLINE
Command response and notification are
asynchronous
-> #50 CALL +18005551234
// note that events can arrive before response
<- CALL 651 STATUS ROUTING
<- #50 CALL 651 STATUS ROUTING
<- CALL 651 PSTN_STATUS 10503 Service Unavailable
// the following events do not have a command id
<- CALL 651 FAILUREREASON 1
<- CALL 651 STATUS FAILED
Notifications can appear between
command-response
-> #50 PING
// note that other events can arrive before command response
<- USER echo123 LASTONLINETIMESTAMP 1105764678
<- USER echo123 FULLNAME Echo Test Service
<- USER test LASTONLINETIMESTAMP 1105487965
// Now comes Skype response to command
<- #50 PONG
Commands
>
Reference
>
Contents
Making and managing voice calls
This section describes the commands for making and
managing voice calls. The commands are:
Use the
CALL
command
to make a call.
Use the
GET
CALL
command
to retrieve call information.
Use the
SET
CALL INPROGRESS
command
to take an incoming call.
Use the
SET
CALL FINISHED
command
to end a call.
Use the
SET
CALL ONHOLD
command
to place a call on hold.
Use the
SET
CALL JOIN CONFERENCE
command
to join a call to a
conference.
Use the
SET
CALL DTMF
command
to set DTMF for a call.
Use the
SET
CALL SEEN
command
to mark a missed call as seen in order to
clear the missed events list.
Use the
ALTER
CALL
command
to control call status.
Refer to
Making and managing video calls
for a description of video call
commands.
Refer to
Call failure reasons
for a list of all reasons for call failure.
Calls
>
Commands
>
Reference
>
Contents
CALL
Syntax
CALL <target>[, <target>]*
Response
CALL <call_ID> <status>
Parameters
<target>
- targets to be called. In case of multiple
targets conference is created. Available target types:
USERNAME
- Skype username, e.g. "pamela",
"echo123"
PSTN
- PSTN phone number, e.g. "+18005551234",
"003725555555"
SPEED DIAL CODE
- 1 or 2 character speeddial code
Errors
ERROR 34 invalid user handle
Target username/number
missing or contains invalid characters
ERROR 39 user blocked
Trying to
call to a blocked user (unblock user in contactlist)
ERROR 73 too many participants
Call
is initiated to more than 4 people
ERROR 92 call error
Call is
initiated to a number that is neither PSTN number nor a speeddial
number
Version
Protocol 1
Notes
The Skype call window is focused when a call is initiated through
the API. It is possible to make speed dial calls via the API.
Example
-> CALL echo123
<- CALL 1402 STATUS ROUTING
<- CALL 1402 SUBJECT
<- CALL 1402 STATUS ROUTING
<- CALL 1402 STATUS RINGING
<- CALL 1402 STATUS INPROGRESS
<- CALL 1402 DURATION 1
<- CALL 1402 STATUS FINISHED
Calls
>
Commands
>
Reference
>
Contents
GET CALL
Syntax
GET CALL <id> property
Response
CALL <id> property <value>
Parameters and response values
refer to the
CALL
object
Errors
ERROR 7 GET: invalid WHAT
Object name missing or
misspelled
ERROR 11 Invalid call id
ID
includes characters other than numeric characters
ERROR 12 Unknown call
Call with
specified ID does not exist in current user's call history
ERROR 13 Invalid PROP
Property
name missing or misspelled
ERROR 71 Invalid conference participant
NO
Conference participant's number is not a number or is too
long
Version
Protocol 1
Calls
>
Commands
>
Reference
>
Contents
SET CALL INPROGRESS
Syntax
SET CALL <id> STATUS INPROGRESS
Parameters
<id>
- call ID (numeric)
Errors
ERROR 19 Invalid call id
ID includes other than numeric
characters
ERROR 20 Unknown call
Call with
specified ID does not exist
ERROR 23 Cannot resume this call at the
moment
Given call is not ringing and therefore can not be
answered.
Calls
>
Commands
>
Reference
>
Contents
SET CALL FINISHED
Syntax
SET CALL <id> STATUS FINISHED
Parameters
<id>
- call ID (numeric)
Errors
ERROR 19 Invalid call id
ID includes other than numeric
characters
ERROR 20 Unknown call
Call with
specified ID does not exist in current user's call history nor is
active.
ERROR 24 Cannot hangup inactive
call
Given call is not in progress and therefore can not be
hung up.
Calls
>
Commands
>
Reference
>
Contents
SET CALL ONHOLD
Syntax
SET CALL <id> STATUS value
Parameters
<id>
- call ID (numeric), possible values:
ONHOLD
-
hold call
INPROGRESS
- resume call
Errors
ERROR 19 Invalid call id
ID includes other than numeric
characters
ERROR 20 Unknown call
The call ID
does not exist in current user's call history nor is it active.
ERROR 22 Cannot hold this call at the
moment
Given call is not in progress and therefore can not
be placed on hold.
ERROR 23 Cannot resume this call at the
moment
Given call is not on hold and therefore can not be
resumed.
Calls
>
Commands
>
Reference
>
Contents
SET CALL JOIN
CONFERENCE
Syntax
SET CALL <joining_id> JOIN_CONFERENCE <master_id>
Response
CALL <id> CONF_ID <conference_id>
Parameters
<joining_id>
- call ID (numeric) to join into;
<master_id>
- master call ID,
where is another call's ID.
Errors
ERROR 19 Invalid call id
ID includes other than numeric
characters
ERROR 20 Unknown call
Call with
specified ID does not exist in current user's call history nor is
active.
ERROR 72 Cannot create
conference
Creating conference, for example "
SET
CALL 65 JOIN_CONFERENCE 66
" fails for some reason.
Note
It is possible to initate a conference with the
CALL target1,
target2
command
Example
// make first call
-> CALL test
<- CALL 1540 STATUS ROUTING
<- CALL 1540 SUBJECT
<- CALL 1540 STATUS ROUTING
<- CALL 1540 STATUS RINGING
<- CALL 1540 STATUS INPROGRESS
// set first call on hold ...
-> SET CALL 1540 STATUS ONHOLD
<- CALL 1540 STATUS INPROGRESS
<- CALL 1540 STATUS ONHOLD
// .. and make another call
-> CALL echo123
<- CALL 1545 STATUS ROUTING
<- CALL 1545 SUBJECT
<- CALL 1545 STATUS ROUTING
<- CALL 1545 STATUS RINGING
<- CALL 1545 STATUS INPROGRESS
// join second call (1545) into conference with first call (1540)
-> SET CALL 1545 JOIN_CONFERENCE 1540
<- CALL 1545 CONF_ID 17930
<- CALL 1545 CONF_ID 17930
<- CALL 1540 CONF_ID 17930
// first call is automatically resumed and joined to conference
<- CALL 1540 STATUS INPROGRESS
// ...
<- CALL 1540 DURATION 53
<- CALL 1540 STATUS FINISHED
<- CALL 1545 DURATION 23
<- CALL 1545 STATUS FINISHED
Calls
>
Commands
>
Reference
>
Contents
SET CALL DTMF
Syntax
SET CALL <id> DTMF <value>
Parameters
<id>
- call ID (numeric)
<value>
- sends value as DTMF.
Permitted symbols in
VALUE
are: {0..9,#,*}.
Notes
DTMF support and quality for PSTN calls depends on terminating
partner.
Errors
ERROR 19 Invalid call id
ID includes other than numeric
characters
ERROR 20 Unknown call
Call with
specified ID does not exist in current user's call history nor is it
active.
ERROR 21 Unknown/disallowed call
prop
DTMF property value is incorrect or misspelled
Calls
>
Commands
>
Reference
>
Contents
SET CALL SEEN
Syntax
SET CALL <id> SEEN
Response
CALL <id> SEEN TRUE
Parameters
<id>
- call ID (numeric)
Errors
ERROR 19 Invalid call id
ID includes other than numeric
characters
ERROR 20 Unknown call
Call with
specified ID does not exist in current user's call history nor is
active.
Example
-> SET CALL 15 SEEN
<- CALL 15 SEEN TRUE
Calls
>
Commands
>
Reference
>
Contents
ALTER CALL
The
ALTER CALL
command controls call
status.
Syntax
ALTER CALL xxx
{ ANSWER
| HOLD
| RESUME
| HANGUP
| END { HANGUP | REDIRECT_TO_VOICEMAIL | FORWARD_CALL } // for an incoming ringing call
| DTMF <0|1|..|9|*|#>
| JOIN_CONFERENCE <callID> }
Version
Protocol 5
Call failure reasons
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Calls
>
Commands
>
Reference
>
Contents
Making and managing video calls
The commands for making and managing video calls
are:
Use the
GET VIDEO_IN
command to retrieve the name of the video device.
Use the
GET CALL VIDEO_STATUS
command to check the status of a video
call.
Use the
ALTER CALL VIDEO_SEND
command to start or stop sending video
during a call.
Use the
ALTER CALL VIDEO_RECEIVE
Use the
GET CALL VIDEO_SEND_STATUS
command to check video send status
for a call.
Use the
GET CALL VIDEO_RECEIVE_STATUS
command to check video receive
status for a call.
Use the
IS_VIDEO_CAPABLE
command to check if a user is video-enabled.
Use the
OPEN VIDEOTEST
command to open the Video Test window.
Use the
OPEN OPTIONS VIDEO
command to open the Video Options window.
GET VIDEO_IN
The
GET VIDEO_IN
command retrieves the
name of the video device to use for a call. If no value is returned,
Skype sets the default value.
Syntax
-> GET VIDEO_IN
Response
<- VIDEO_IN <devicename>
Parameters
<devicename>
- the name of the video device
Note
If no devicename is returned, Skype sets the default value:
->
SET VIDEO_IN <devicename>
Version
Protocol 5
Video
>
Commands
>
Reference
>
Contents
GET CALL
VIDEO_STATUS
To check if a Skype client is video-enabled:
Syntax
-> GET CALL 5921 VIDEO_STATUS
Response
Skype responds with the video status for the active call, for example:
<- CALL 5921 VIDEO_STATUS VIDEO_NONE
Parameters
VIDEO_NONE
VIDEO_SEND_ENABLED
VIDEO_RECV_ENABLED
VIDEO_BOTH_ENABLED
Version
Protocol 5
Video
>
Commands
>
Reference
>
Contents
ALTER CALL
VIDEO_SEND
To start or stop sending video during a call:
Syntax
-> ALTER CALL 5921 { START_VIDEO_SEND | STOP_VIDEO_SEND }
Parameters
START_VIDEO_SEND
TOP_VIDEO_SEND
Version
Protocol 5
Video
>
Commands
>
Reference
>
Contents
ALTER CALL
VIDEO_RECEIVE
To start or stop receiving video during a call:
Syntax
-> ALTER CALL 5921 { START_VIDEO_RECEIVE | STOP_VIDEO_RECEIVE }
Parameters
START_VIDEO_RECEIVE
STOP_VIDEO_RECEIVE
Version
Protocol 5
Video
>
Commands
>
Reference
>
Contents
GET CALL
VIDEO_SEND_STATUS
To check video send status:
Syntax
-> GET CALL 5921 VIDEO_SEND_STATUS
Response
Skype responds with the appropriate parameter.
Parameters
NOT_AVAILABLE
// The client does not have video capability
because video is disabled or a webcam is unplugged).
AVAILABLE
// The client is video-capable but the video is not running (can
occur during a manual send).
STARTING
// The video is
sending but is not yet running at full speed.
REJECTED
// The receiver rejects the video feed (can occur during a manual
receive).
RUNNING
// The video is actively
running.
STOPPING
// The active video is in the process
of stopping but has not halted yet.
PAUSED
// The video
call is placed on hold.
Version
Protocol 5
Video
>
Commands
>
Reference
>
Contents
GET CALL
VIDEO_RECEIVE_STATUS
To check video receive status:
Syntax
-> GET CALL 5921 VIDEO_RECEIVE_STATUS
Response
Skype responds with the appropriate parameter.
Parameters
NOT_AVAILABLE
// The client does not have video capability
because video is disabled or a webcam is unplugged).
AVAILABLE
// The client is video-capable but the video is not running (can
occur during a manual send).
STARTING
// The video is
sending but is not yet running at full speed.
REJECTED
// The receiver rejects the video feed (can occur during a manual
receive).
RUNNING
// The video is actively
running.
STOPPING
// The active video is in the process
of stopping but has not halted yet.
PAUSED
// The video
call is placed on hold.
Version
Protocol 5
Video
>
Commands
>
Reference
>
Contents
IS_VIDEO_CAPABLE
To check if a user is video-capable:
Syntax
-> GET USER <username> IS_VIDEO_CAPABLE
Response
<- USER <username> IS_VIDEO_CAPABLE {True|False}
Version
Protocol 5
Video
>
Commands
>
Reference
>
Contents
OPEN VIDEOTEST
To open the Video Test window to test if video is
working:
Syntax
-> OPEN VIDEOTEST
Version
Protocol 5
Video
>
Commands
>
Reference
>
Contents
OPEN OPTIONS VIDEO
To open the Video Options window:
Syntax
-> OPEN OPTIONS VIDEO
Version
Protocol 5
Video
>
Commands
>
Reference
>
Contents
Leaving and manipulating voicemails
The commands to leave and manipulate voicemails
are:
Use the
VOICEMAIL
command
to leave a voicemail for a target user.
Use the
OPEN
VOICEMAIL
command
to open and listen to voicemails.
Use the
ALTER
VOICEMAIL
command
to manipulate voicemails.
VOICEMAIL
To leave a voicemail:
Syntax
VOICEMAIL <target>
Response
VOICEMAIL <id> STATUS <value>
Parameters
<target>
- Skype username to receive the voicemail
<value>
- Refer to
voicemail object
for a list of available status values
Errors
Version
Protocol 5
Notes
Leaving a voicemail for a target user actually uses two types of
voicemail object:
a greeting type of voicemail object which is
downloaded from the server
an outgoing type of voicemail object which
the user composes
Voicemail
>
Commands
>
Reference
>
Contents
OPEN VOICEMAIL
To open and start playing a voicemail:
Syntax
OPEN VOICEMAIL <id>
Notes
Voicemail is downloaded from server automatically.
The main Skype window comes into focus and
switches to the Call List tab; use the
ALTER
VOICEMAIL
command
to play without a UI response.
See also the
SEARCH VOICEMAILS
command.
Voicemail
>
Commands
>
Reference
>
Contents
ALTER VOICEMAIL
The
ALTER VOICEMAIL
command allows finer
control over the
VOICEMAIL
object.
Syntax
ALTER VOICEMAIL <id> action
Response
ALTER VOICEMAIL action
Parameters
action,
possible values:
STARTPLAYBACK
- starts playing downloaded voicemail
STOPPLAYBACK
- stops voicemail playback
UPLOAD
- uploads recorded voicemail from a local computer
to a server
DOWNLOAD
- downloads voicemail object from a server to a
local computer
STARTRECORDING
- stops playing greeting and starts
recording, the equivalent to a user pressing the green button;
STOPRECORDING
- ends recording, the equivalent to a user
pressing the red button
DELETE
- delete voicemail object
Notes
STARTPLAYBACK
plays voicemail but the window does not
change to the Call List tab as it does with the
OPEN VOICEMAIL
command.
STOPRECORDING
causes automatic message upload to the server.
Voicemails are deleted as a background
process and the elapsed time depends on the server response; during
this period, the
SEARCH VOICEMAILS
command still returns an
ID for the voicemail, but the status is changed to
DELETING
.
Voicemail
>
Commands
>
Reference
>
Contents
Managing call forwarding
The commands to manage call forwarding are:
Use the
GET
PROFILE CALL_APPLY_CF
command
to query if call forwarding
is enabled.
Use the
SET
PROFILE CALL_APPLY_CF
command
to enable or disable call
forwarding.
Use the
GET
PROFILE CALL_FORWARD_RULES
command
to query the rules
defined for call forwarding.
Use the
SET
PROFILE CALL_FORWARD_RULES
command
to set rules for call
forwarding.
Use the
GET
PROFILE CALL_NOANSWER_TIMEOUT
command
to query the number
of times a call rings on a forwarded number before timing out.
Use the
SET
PROFILE CALL_NOANSWER_TIMEOUT
command
to set the number of
times a call rings on a forwarded number before timing out.
Use the
GET
PROFILE CALL_SEND_TO_VM
command
to query if voicemail is
enabled for forwarded calls.
Use the
SET
PROFILE CALL_SEND_TO_VM
command
to enable or disable
voicemail for forwarded calls.
Call forwarding
>
Commands
>
Reference
>
Contents
GET PROFILE
CALL_APPLY_CF
Use the
GET PROFILE CALL_APPLY_CF
command
to query if call forwarding is enabled for a call.
Syntax
-> GET PROFILE CALL_APPLY_CF
Response
<- PROFILE CALL_APPLY_CF {True|False}
Version
Protocol 1.4
Call forwarding
>
Commands
>
Reference
>
Contents
GET PROFILE
CALL_APPLY_CF
Use the
SET PROFILE CALL_APPLY_CF
to
enable or disable call forwarding.
Syntax
-> SET PROFILE CALL_APPLY_CF {True|False}
Response
<- PROFILE CALL_APPLY_CF {True|False}
Version
Protocol 1.4
Call forwarding
>
Commands
>
Reference
>
Contents
GET
PROFILE CALL_FORWARD_RULES
Use the
GET PROFILE CALL_FORWARD_RULES
to
query the rules set for call forwarding.
Syntax
-> GET PROFILE CALL_FORWARD_RULES
Response
<- PROFILE CALL_FORWARD_RULES [<start_time>,<end_time>,{<username>|<+PSTN>}[ <start_time>,<end_time>,{<username>|<+PSTN>}]*]
Parameters
timeout
- in seconds for call forward
start_time
-
in seconds when connecting to this number/user starts
end_time
- in seconds when ringing to this number/user ends
username
- another Skype username to forward calls to
+PSTN - PSTN
number to forward a
call
Note
A call can be forwarded to multiple numbers and the numbers can
overlap in time, with all ringing and the first to pick up the call
takes it.
Version
Protocol 1.4
Call forwarding
>
Commands
>
Reference
>
Contents
SET
PROFILE CALL_FORWARD_RULES
Use the
SET PROFILE CALL_FORWARD_RULES
to
set the rules for call forwarding.
Syntax
-> SET PROFILE CALL_FORWARD_RULES [<start_time>,<end_time>,{<username>|<+PSTN>}[ <start_time>,<end_time>,{<username>|<+PSTN>}]*]
Response
<- PROFILE CALL_FORWARD_RULES [<start_time>,<end_time>,{<username>|<+PSTN>}[ <start_time>,<end_time>,{<username>|<+PSTN>}]*]
Parameters
Default values for rule parameters are:
timeout
- 15 seconds
start_time
- 0,60 seconds
end_time
- 0,60 seconds
Version
Protocol 1.4
Call forwarding
>
Commands
>
Reference
>
Contents
GET
PROFILE CALL_NOANSWER_TIMEOUT
Use the
GET PROFILE CALL_NOANSWER_TIMEOUT
to query the amount of seconds a forwarded call will ring before
timing out.
Syntax
-> GET PROFILE CALL_NOANSWER_TIMEOUT
Response
<- PROFILE CALL_NOANSWER_TIMEOUT 15
Note
15 seconds is the default timeout value.
Version
Protocol 1.4
Call forwarding
>
Commands
>
Reference
>
Contents
SET
PROFILE CALL_NOANSWER_TIMEOUT
Use the
SET PROFILE CALL_NOANSWER_TIMEOUT
to change the amount of seconds a forwarded call will ring before
timing out.
Syntax
-> SET PROFILE CALL_NOANSWER_TIMEOUT 20
Response
<- PROFILE CALL_NOANSWER_TIMEOUT 20
Note
This command replaces the default timeout value of 15 seconds.
Version
Protocol 1.4
Call forwarding
>
Commands
>
Reference
>
Contents
GET PROFILE
CALL_SEND_TO_VM
Use the
GET PROFILE CALL_SEND_TO_VM
to
query if voicemail is enabled for forwarded calls.
Syntax
-> GET PROFILE CALL_SEND_TO_VM
Response
<- PROFILE CALL_SEND_TO_VM {True|False}
Version
Protocol 1.4
Call forwarding
>
Commands
>
Reference
>
Contents
SET PROFILE
CALL_SEND_TO_VM
Use the
SET PROFILE CALL_SEND_TO_VM
to
enable (or disable) voicemail for forwarded calls.
Syntax
-> SET PROFILE CALL_SEND_TO_VM True
Response
<- PROFILE CALL_SEND_TO_VM True
Version
Protocol 1.4
Call forwarding
>
Commands
>
Reference
>
Contents
Creating chats and sending messages
The commands for creating chats and sending
messages are:
Use the
CHAT
CREATE
command
to create a chat.
Use the
CHATMESSAGE
command
to send a chat message.
Use the
ALTER
CHAT SETTOPIC
command
to set the topic for a chat.
Use the
ALTER
CHAT ADDMEMBERS
command
to add members to a chat.
Use the
ALTER
CHAT LEAVE
command
to leave a chat.
Use the
GET
CHAT CHATMESSAGES
command
to retrieve the message
identifiers for a chat.
Use the
GET
CHAT RECENTCHATMESSAGES
command
to retrieve recent chat
messages.
Use the
SET
CHATMESSAGE SEEN
command
to mark a chat message as seen.
The
SET
MESSAGE SEEN
command
is obsolete.
The
MESSAGE
command
is obsolete.
Chat
>
Commands
>
Reference
>
Contents
CHAT CREATE
Syntax
CHAT CREATE <target>[, <target>]*
Response
CHAT <chat_id> STATUS <value>
Version
Protocol 5
Parameters
<target>
- username(s) with whom to create a chat
<chat_id>
- chat identifier; string (usually looks like
"#me/$target;012345679012345")
<value>
- depends on the type
of chat created:
DIALOG
for a 1:1 chat;
MULTI_SUBSCRIBED
for a chat with multiple participants
Notes
The
CHAT CREATE
command does not open a chat window; use
the
OPEN CHAT
command to do so.
Chat
>
Commands
>
Reference
>
Contents
CHATMESSAGE
Syntax
CHATMESSAGE <chat_id> <message>
Response
CHATMESSAGE <id> STATUS SENDING
Parameters
<chat_id>
- chat identifier
<message>
- message text body to send
<id>
- chatmessage identifier
Version
Protocol 5
Errors
ERROR 510 Invalid/unknown chat name given
Chat with
<chat_id> does not exist
ERROR 511 Sending a message to chat
fails
Could not send message to chat (eg. not a member)
Chat
>
Commands
>
Reference
>
Contents
ALTER CHAT SETTOPIC
Syntax
ALTER CHAT <chat_id> SETTOPIC <topic>
Response
ALTER CHAT SETTOPIC
Version
Protocol 5
Errors
ERROR 501 CHAT: No chat found for given chat
Chat with
<id> does not exist
Chat
>
Commands
>
Reference
>
Contents
ALTER CHAT
ADDMEMBERS
Syntax
ALTER CHAT <chat_id> ADDMEMBERS <target>[,
<target>]*
Response
ALTER CHAT ADDMEMBERS
Version
Protocol 5
Errors
ERROR 501 CHAT: No chat found for given chat
Chat with
<chat_id> does not exist
ERROR 504 CHAT: Action failed
Could
not add members into chat (eg <target> is already a member;
you have left chat)
Chat
>
Commands
>
Reference
>
Contents
ALTER CHAT LEAVE
Syntax
ALTER CHAT <chat_id> LEAVE
Response
ALTER CHAT LEAVE
Errors
ERROR 501 CHAT: No chat found for given chat
Chat with
<chat_id> does not exist
ERROR 504 CHAT: Action failed
Could
not leave chat (for example if the user has already left this chat)
Chat
>
Commands
>
Reference
>
Contents
GET CHAT
CHATMESSAGES
Syntax
GET CHAT <chat_id> CHATMESSAGES
Response
CHAT <chat_id> CHATMESSAGES <id>[, <id>]*
Version
Protocol 5
Errors
ERROR 501 CHAT: No chat found for given chat
Chat with
<chat_id> does not exist
