Developer Notes 2.0 (beta)
By
on December 19, 2005 in Developer Blog.
Developer Notes for 2.0 Skype release are now available.
The Skype API for Windows 2.0 introduces the following features:
This release also includes the following:
- Other enhancements
- Controlling ringing on PC speakers
- Page scrolling
- Managing echo and gain cancellation
- Contact management
- Managing call status
- Bugfixes
- Deprecations
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 .
- See the cool things people are creating and submit your project to the Skype Extras Gallery .
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)
Make video calls
Skype for Windows 2.0 introduces one-to-one video calls over the internet to members of the Skype community. Skype video enables the user to view a caller in the main Skype window, in a separate window, or in full screen mode. The user can also optionally view the video displayed to the other party in a secondary screen.
The following commands are introduced to support video calling:
- To set the video device to use for video calls:
-> GET VIDEO_IN <- VIDEO_IN <devicename> // if no value is returned, Skype uses the default value -> SET VIDEO_IN <devicename>
-> GET CALL 5921 VIDEO_STATUS
// VIDEO_STATUS can be one of the following values:
VIDEO_NONE
VIDEO_SEND_ENABLED
VIDEO_RECV_ENABLED
VIDEO_BOTH_ENABLED
// Skype responds with the video status for the active call, for example:
<- CALL 5921 VIDEO_STATUS VIDEO_NONE
-> ALTER CALL 5921 { START_VIDEO_SEND | STOP_VIDEO_SEND }
-> ALTER CALL 5921 { START_VIDEO_RECEIVE | STOP_VIDEO_RECEIVE }
-> GET CALL 5921 VIDEO_RECEIVE_STATUS
-> GET CALL 5921 VIDEO_SEND_STATUS
// Skype responds to each of these commands with one of the following values:
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.
// For example, if video is running, Skype returns:
<- CALL 5921 VIDEO_RECEIVE_STATUS RUNNING
<- CALL 5921 VIDEO_SEND_STATUS RUNNING
-> GET USER <username> IS_VIDEO_CAPABLE
<- USER <username> IS_VIDEO_CAPABLE {True|False}
-> OPEN VIDEOTEST
-> OPEN OPTIONS VIDEO
Contents | Video | Groups | Buttons | Personalise | Enhancements | Bugfixes | Deprecations
Group contacts
Skype for Windows 2.0 introduces the ability to arrange contacts by groups, such as friends, colleagues and business contacts. One contact can be in a number of groups, for example a contact can be in an office group and a smaller project group. A user can start conference calls and chats or share files with all members of a group with just one click (subject to the standard limitations on numbers of participants).
The naming conventions in the Skype API and the Skype UI are somewhat different. The following logic is used when discussing contacts:
- Friends are contacts who are in my contactlist.
- Non-friends are contacts who are not in my contactlist.
- Users includes both contacts in my contactlist and users who are not in my contactlist.
Group object
A new GROUP object is added to the Skype API to enable this feature. There are two types of GROUP; custom groups and hardwired groups. Custom groups are user-defined groups, for example Office, Friends, and Family. Hardwire groups are "smart" groups defined and managed by Skype to support group activities. The GROUP object has the following properties:
- TYPE: {CUSTOM | HARDWIRED} // CUSTOM groups are user-defined and HARDWIRED groups are Skype-defined.
- CUSTOM_GROUP_ID // apersistent ID for custom groups which can be empty at the start of group creation.
- DISPLAYNAME // the display name of the group (read-write)
- NROFUSERS // the number of contacts in this group (read-only)
- NROFUSERS_ONLINE // the number of contacts online in this group (read-only)
- USERS // the list of contacts in the group (read-only)
Group commands
The following commands are introduced to support contact grouping:
- To list existing contact groups:
-> SEARCH GROUPS [{ ALL | CUSTOM | HARDWIRED }]
<- GROUPS <id1>, <id2>, <id3>, ...
-> GET GROUP <id> USERS <- GROUP <id> USERS <user1>, <user2>, <user3>
-> GET GROUP <id> VISIBLE
<- GROUP <id> VISIBLE {True|False}
-> GET GROUP EXPANDED
<- GROUP <id> EXPANDED {True|False}
-> GET GROUP <id> DISPLAYNAME <- GROUP <id> DISPLAYNAME <name>
-> SET GROUP <id> DISPLAYNAME <name> <- GROUP <id> DISPLAYNAME <name>
-> GET GROUP <id> TYPE <- GROUP <id> TYPE <contact_group_type>
-> CREATE GROUP <Office> <- CREATE GROUP <Office>
The command triggers a number of GROUP properties events: <- GROUP <234> TYPE CUSTOM_GROUP <- GROUP <234> NROFUSERS 0 <- GROUP <234> NROFUSERS_ONLINE 0 <- GROUP <234> CUSTOM_GROUP_ID <111> <- GROUP <234> DISPLAYNAME <Office> <- GROUP <234> USERS
-> DELETE GROUP <234> <- DELETE GROUP <234>
<- DELETED GROUP <234>
<- GROUP <234> USERS <user1> <user2>...
<- GROUP <234> NROFUSERS y
-> ALTER GROUP <234> ADDUSER <userhandle|PSTN> <- ALTER GROUP <234> ADDUSER <userhandle|PSTN>
-> ALTER GROUP <id> REMOVEUSER <userhandle|PSTN> <- ALTER GROUP <id> REMOVEUSER <userhandle|PSTN>
Note: A contact must exist in a contactlist to be assigned to a group.
Error codes
Contact group commands can generate the following errors:
- ERROR 561, "SEARCH GROUPS: invalid target"
- ERROR 562, "Invalid group id"
- ERROR 563, "Invalid group object"
- ERROR 564, "Invalid group property given"
HARDWIRE type groups are preset by Skype.
- To query a GROUP type:
-> GET GROUP 277 TYPE <- GROUP 277 TYPE ALL_FRIENDS
HARDWIRE GROUPS are described in the following table.
Contact group type |
Description |
|
ALL_USERS |
This group contains all users I know about, including users in my contactlist, users I recently contacted and blocked users. |
|
ALL_FRIENDS |
This group contains all contacts in my contactlist (also known as friends) |
|
SKYPE_FRIENDS |
This group contains Skype contacts in my contactlist. |
|
SKYPEOUT_FRIENDS |
This group contains SkypeOut contacts in my contactlist. |
|
ONLINE_FRIENDS |
This group contains Skype contacts in my contactlist who are online. |
|
UNKNOWN_OR_PENDINGAUTH_FRIENDS |
This group contains contacts in my contactlist who have not yet authorized me. |
|
RECENTLY_CONTACTED_USERS |
This group contains contacts I have conversed with recently, including non-friends. |
|
USERS_WAITING_MY_AUTHORIZATION |
This group contains contacts who are awating my response to an authorisation request, including non-friends. |
|
USERS_AUTHORIZED_BY_ME |
This group contains all contacts I have authorised, including non-friends. |
|
USERS_BLOCKED_BY_ME |
This group contains all contacts I have blocked, including non-friends. |
|
UNGROUPED_FRIENDS |
This group contains all contacts in my contactlist that do not belong to any custom group. |
|
CUSTOM_GROUP |
This group type is reserved for user-defined groups. |
Contents | Video | Groups | Buttons | Personalise | Enhancements | Bugfixes | Deprecations
New buttons and appearance
Download new Skype buttons to use in your applications from: Skype buttons
Personalise Skype
Skype for Windows 2.0 provides a number of enhancements to personalise the Skype user experience:
Change avatars
- To change the avatar picture for a user profile:
-> SET AVATAR <id> <filePath + fileName>[:idx] <- AVATAR <id> <filePath + fileName>
id // avatar ID filePath // path to the avatar file directory fileName:idx // IDX refers to the image ID in the .skype content file
Error codes
The SET AVATAR command can generate the following error codes:
- ERROR 114, Invalid avatar
- ERROR 111, File not found
- ERROR 9901 internal error, The wrong type of file (for example an audio file or a document) is set to avatar.
Contents | Video | Groups | Buttons | Personalise | Enhancements | Bugfixes | Deprecations
Mood messages and timezone
In Skype for Windows 2.0, users can display text messages next to their avatars in the Contacts and Chat windows. As with avatars, users can change these messages to reflect their mood. A user’s profile also displays the timezone offset from GMT. The mood_text and timezone features are properties of the USER object and were introduced in the Skype API version 1.4, but not implemented until the current release.
Currently, the user cannot control when changed mood messages become visible to other users. When a user changes mood_text there can be a small delay before other users see it.
- To enter a mood_text message:
-> SET PROFILE MOOD_TEXT Life is great and then you... <- PROFILE MOOD_TEXT Life is great and then you...
-> GET PROFILE MOOD TEXT <- PROFILE MOOD_TEXT Life is great and then you...
-> GET USER santa MOOD_TEXT <- USER elvis MOOD_TEXT Are you lonesome tonight
-> GET PROFILE TIMEZONE <- PROFILE TIMEZONE 93600
-> GET USER elvis TIMEZONE <- USER elvis TIMEZONE 86400
Contents | Video | Groups | Buttons | Personalise | Enhancements | Bugfixes | Deprecations
Other changes
The Skype for Windows API 2.0 includes a number of additional changes:
- Controlling ringing on PC speakers
- Page scrolling
- Managing echo and gain cancellation
- Contact management
- Managing call status
Controlling ringing on PC speakers
If no speakers are connected to a PC, it is possible to hear incoming Skype calls only when wearing a headset. To overcome this inconvenience, use the following commands to query and/or change the status of the PC speaker:
-> GET PCSPEAKER
<- PCSPEAKER {ON|OFF}
-> SET PCSPEAKER {ON|OFF}
<- PCSPEAKER {ON|OFF}
Contents | Video | Groups | Buttons | Personalise | Enhancements | Bugfixes | Deprecations
Page scrolling
The current version of the Skype API provides the ability to simulate page scrolling through the contactslist from an external device. To simulate page scrolling
BTN_PRESSED {PAGEUP|PAGEDOWN}
BTN_RELEASED {PAGEUP|PAGEDOWN}
Managing gain control and echo cancellation
Skype uses automatic gain control (AGC) to adjust microphone level to the volume the user speaks at. Skype uses automatic echo cancellation (AEC) to eliminate the echo that occurs if a microphone "hears" the other user's voice on the loudspeaker.
IMPORTANT: Disabling these functions can impair call quality and is not recommended in standard implementations. However, some audio devices have in-built AGC/AEC mechanisms and, in these circumstances, it can be necessary to deactivate AGC and AEC on Skype. If you disable AGC/AEC on Skype, ensure that the client defaults to enabled if the audio device is removed.
- To query if AGC and AEC are enabled:
-> GET AGC
<- AGC { ON | OFF }
-> GET AEC
<- AEC { ON | OFF }
-> SET AGC ON <- AGC ON -> SET AEC ON <- AEC ON
Error codes
These commands can generate the following errors:
- ERROR 569, "GET AEC: target not allowed"
- 570, "SET AEC: invalid value"
- 571, "GET AGC: target not allowed"
- 572, "SET AGC: invalid value"
Contents | Video | Groups | Buttons | Personalise | Enhancements | Bugfixes | Deprecations
Improved contact management
- To change the display name for a contact:
SET USER <handle|PSTN> DISPLAYNAME name
OPEN SENDCONTACTS target1 target2 ...
Controlling call status
- Use the ALTER CALL command to control call status:
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> }
Error codes
This command can generate the following errors:
- ERROR 555, "CALL: No proper call ID given"
- ERROR 556, "CALL: Invalid call ID given"
- ERROR 557, "CALL: No action given"
- ERROR 558, "CALL: Missing or invalid arguments"
- ERROR 559, "CALL: Action failed"
- ERROR 560, "CALL: Unknown action"
Note: With the ALTER CALL xxx END FORWARD_CALL command:
- If the user has voicemail enabled and call forwarding is not configured, the call is forwarded to voicemail.
- If user has call forwarding enabled, if the call is not answered it is forwarded on to voicemail.
This command replaces the SET_CALL xxx STATUS command which has been deprecated in this release.
Contents | Video | Groups | Buttons | Personalise | Enhancements | Bugfixes | Deprecations
Bugfixes
In earlier versions of Skype, the following command did not have the desired effect:
SET AUTOAWAY OFF
The issue occured because the command was being executed both at UI level and at framework level. This command is no longer executed at the UI level.
Deprecated commands
The following command is deprecated (but not removed) in this release:
SET CALL xxx STATUS {ONHOLD | INPROGRESS | FINISHED }
Contents | Video | Groups | Buttons | Personalise | Enhancements | Bugfixes | Deprecations







Comments
labas
asmenys3355 | Monday, Dec 19
Because Skype is more secure, I have just switched from MSN Messenger to use Skype chat. Additionally, I feel that Skype offers a more stable and robust application. However, I would like the ability to reduce the glare of the white Skype chat-screen! Any chance?
Other, but less important preferences, I would prefer my messages to be in a different colour to the received messages and I like MSN's ability to show when a message is being typed by the other party.
Regards and thanks.....
noelshaw | Monday, Dec 19
how can i used skype phone after dawen load i cant conacted why?
teddylove473 | Tuesday, Dec 20
No comments on the article I want to know if you can send faxes and if not I think it would be a great feature to have.
gammarayboy | Tuesday, Dec 20
Norton antivirus is not supporting Skype.
I always receive security alert message window, asking me
whether to permit or block Skype. This popup displays the security alert window frequently, even when i select permit.
arshed_15 | Tuesday, Dec 20
HI
my_lovemoh | Tuesday, Dec 20
Hello, I've been using Skype 2.0 Beta for a week or so.
And today I found a really strange problem. It conflicted with my IIS Server. I don't have any idea why Skype was using my port 80. But it was, I had to shut it down, start ISS, and them start SKYPE.
The feedback didn't work...
Thanks;
alvaro.oliveira | Tuesday, Dec 20
Why release 2.0.0.63 doesn't allow videos with Win2K??????
It was allowed in the 2.0.0.43 !!!!! and run perfectly for me !!!!
Don't be so faschist (as MS...), let run the old windows (at our own risk if you want) please !!!
Thanks
samchef | Tuesday, Dec 20
Using Skype through a Saitek 2.0 hub, on adsl, it seems slightly distorted and has a distinct delay on the voice.
What can i do to correct this?
mctours | Wednesday, Dec 21
There's something missing in "Group Command" description of Skype API 2.0:
The following commands are introduced to support contact grouping:
a7f5278b3e727419caaf644a39069bff
...
The HARDWIRE type groups which are preset by Skype are described in the following table.
66ed1bf5bf02770813baf3ac78fe1863
Can you update it?
Thanks.
This was due to faulty html on my part and is now corrected. Thanks for bringing it to my attention.
tommy_sheu | Wednesday, Dec 21
When I call out or get a call in from a landline the other person cannot hear me. My mcrophone is defiantely working but 90% of the time the other person can't hear me at all. Has anyone else experienced this and if so is there a fix?
thanks in advance!
James
linky1976 | Wednesday, Dec 21
Will Skype ever have typing notification?
wojciech.kopras | Wednesday, Dec 21
IT'S VERY COOL SKYPE
mariobross1780 | Wednesday, Dec 21
I've uninstalled the 2.0.0.63 because the video doesn't works on Win2000 with an AMD64 dual core, so it's not a CPU problem.
Meanwhile I've reinstalled the 2.0.0.43 version.
Why did you removed this feature for Windows 2000?
miosotys | Sunday, Dec 25
Why is Skype version 1.2.0.18 the latest version for Linux? I am an avid Linux user and am having some minor issues with chatting with some people when I am listening to internet radio, etc. When will Skype 2.0 Beta be released for Linux. I am a beta tester for many Linux Operating Systems and am disipointed that I cannot for Skype.
rnisly | Tuesday, Dec 27
hi there how can i get in touch with the owners or someone that works with skype
cligiex | Thursday, Dec 29
Hello -
Skype Beta works fine on my laptop, but not on my home computer. Both are fairly new, XP, but on the home computer it doesn't recognize my webcam, then it won't shut down, if shut down with task manager it won't start up again, and the computer takes much longer to shut down, too. Anybody with the same problems, or maybe a fix?
rajuma28 | Friday, Dec 30
Video is great, but calls are interrupted, after a couple of minutes, with unbearable audio interference.
wenstur | Sunday, Jan 1
Hi,
i've got an problem. I installed skype 2.0 BETA yesterday and wanted to add someone in my contact liste. But then there came a failure: No argumentation for format '%1:s' . What does this mean? Please help me.
peter_regner | Monday, Jan 2
Is it only me or others have problem with the touchpad?
I am trying to dial into the conference center of a major telecom company (MOT) and it does not accept my access code. I am pretty sure, it is not the conference center...
Other IVR systems work with Skype - at least they worked that one time I attempted to use them.
Anybody experienced this?
biczok | Tuesday, Jan 3
How can I report bugs in Skype?
E.g.
You dial a skype-out number, and you are unable to add it to your address book.
Or, you add a number to your address book and it never shows up.
Or you try to edit your address-book and it won't let you change the number (you have to delete and create a new).
Or...
biczok | Tuesday, Jan 3
Skype 2.0 absolutely better have the ability to optionally delete a single Chat History.
When the person.html Chat History HTML file gets too long, most all browsers will crash when trying to open the sometimes huge Chat History files, but the browsers of course work fine on the smaller Chat History files.
They appear to be separate HTML files on the users system, hence, Skype 2.0 had better have this capability, as to NOT have it places Skype users at a distinct disadvantage.
Secondly, we presume that Skype 2.0 allows users to easily locate separate Chat History's on their systems, and to backup these Chat History files, separately.
This would only seem to be common-sense.
This Chat History area was a major problem in Skype 1.x, and it would be a shame to see it extend into Skype 2.x as well.
josephrot | Wednesday, Jan 4