Skype Logo Take a deep breath™.
Buy Skype Credit · Help ·
  • Download
  • Use Skype
  • Business
  • Shop
  • Account

Skype 2.0 API reference

By My status  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:






  • Overview of the Skype API





  • Using the Skype API on Windows





  • Using the Skype API on Linux





  • Using the Skype API on Mac





  • Skype protocol





  • Skype reference





    • Terminology




    • Commands




    • Objects





    • Object properties





    • General parameters




    • Notifications





    • Error codes






  • Skype URI





  • Skype release notes



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)




Contents






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.




Contents
>
Overview






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






  • Examplecode for C++




Contents
>
Windows






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.



Contents
>
Linux






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.



Contents
>
Mac






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.



Contents
>
Protocol






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




  • Commands




  • Objects





  • Object properties





  • General parameters




  • Notifications




  • Error codes





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.




Reference
>
Contents






Commands



This section provides a reference to the commands
used in Skype, and contains the following:






  • Description of command identifiers





  • Commands for making and managing voice calls





  • Commands for making and managing video calls





  • Commandsfor leaving and manipulating voicemails





  • Call forwarding





  • Commands for creating chats and sending messages





  • Commands for managing contacts and groups





  • Commands to personalise Skype





  • Search commands





  • Commands for managing history





  • Commands for controlling the Skype user interface





  • Application to application commands





  • Testing connections




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










































































Code




Description




Possible reason




1





CALL 181 FAILUREREASON 1




Miscellaneous error




2





CALL 181 FAILUREREASON 2




User or phone number does not exist. Check
that a prefix is entered for the phone number, either in the form
003725555555 or +3725555555; the form 3725555555 is incorrect.




3





CALL 181 FAILUREREASON 3




User is offline




4





CALL 181 FAILUREREASON 4




No proxy found




5





CALL 181 FAILUREREASON 5




Session terminated.




6





CALL 181 FAILUREREASON 6




No common codec found.




7





CALL 181 FAILUREREASON 7




Sound I/O error.




8





CALL 181 FAILUREREASON 8




Problem with remote sound device.




9





CALL 181 FAILUREREASON 9




Call blocked by recipient.




10





CALL 181 FAILUREREASON 10




Recipient not a friend.




11





CALL 181 FAILUREREASON 11




Current user not authorized by recipient.




12





CALL 181 FAILUREREASON 12




Sound recording error.




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




Chat
>
Commands
>
Reference
>