RSS 2.0 Feed
RSS 2.0

Atom 1.0 Feed
Atom 1.0

  Solving problems through programming...and why the Skype API sucks 


I love to take the approach of solving computing problems through programming. Sometimes it backfires and I over-complicate the problem (I have been known to prematurely generalize from time to time). But usually I bask in the greatness of being a programmer and having the skills to make my life easier and remove redundant or tedious tasks programically.

I read a post from Scott Hanselman where he discusses some great things about Skype and a big issue that Skype has. I am also a big Skype user. I use it daily for communicating with people I work with that live in other parts of the country. Skype is great. It is one of those programs that “just works” and exceeds my expectations for VoIP software. Scott's gripe with Skype is one that I share. It being that you have no way to store your contact's remotely. If you use Skype on more than one computer then you are forced to set up each Skype installation independently. You have to add your contacts to each install and go through the whole process of getting authorization from them each time. Well that just sucks. Scott mentioned how Skype stores it's contact information as a binary file. Not XML or something. I am sure it does that to prevent editing of the file allowing people to possibly spoof authorization or get around other rules of use.

If you've ever worked with the Skype API before then you know one thing. It sucks. It is a message based API. You communicate with Skype (and Skype with you) via SendMessage and WM_COPYDATA commands. Not only that but it is slower than you can imagine. Simple things like getting a list of the contacts and showing their online status is painfully slow. No fun at all. I mean, for such great software they sure did fall short on their API. But none the less, they do have an API and I decided to take a stab at solving some of the limitations of Skype with it. This time, instead of fighting through sending messages, I found a COM wrapper built by carcass (with C++ source) that wraps the required messaging, exposing enumerations, events, and nicely wrapped objects. Although easier to work with, still does not account for the crappy Skype API (but thanks carcass!)

Well, things didn't turn out so well. While it is easy enough to read data from Skype, place & answer calls, send messages etc with the Skype API, there is no way to programatically add a contact to the list. So what was going to be my Skype Backup/Restore utility turned out to be a “Export Only” utility. Well at least it is something.

Not what I set out to solve, but at least now I can get a list of all my Skype contacts (and calls if I need them). This way when I reformat my computer or set up Skype on a new computer I don't have to lookup all my contacts since I'll have my list. At least that is something, right?


Leave a comment below.


  1. David's Blog 1/26/2005 8:19 PM
  2. David's Blog 1/26/2005 8:20 PM
  3. BERYL GOSNEY 2/5/2005 3:27 PM
    Ryan, has anyone ever told you that you look exactly like BUCKY JACOBSEN on the Seattle Mariners??????

    I am not sure where you're at to know this but I am a staunch Mariner fan...hahaha

    Anyway, plain and simple, I love everything about SKYPE as a layman user...I despise the feedbacxk problem I am having however...and I believe it is in my system....probably a bad ground as when I turn up the speaker volume at a moderate level, I can hear myself in the speakers when I talk.....

    On my system at the office I dont have that problem??????

    Any ideas?

    BERYL -
  4. Ryan Farley 2/5/2005 4:02 PM
    Hi Beryl,

    No, actually, I've not heard that one. I don't follow sports much, and live in Arizona where you don't hear much Mariners talk down here ;-)

    For Skype, I use a Plantronics DSP headset. It connects via USB and installs itself as a second audio device. In Skype you can set the headset audio device as the one Skype uses (So it is different than the main windows audio device - I can talk on Skype and still listen to Winamp at the same time - both through different audio devices). I've never had any problems with it and the sound quality is amazing (I wish I would get such clear sound on my land-line phone).

  5. 2/7/2005 10:24 AM
    i can hear people but they can not hear me , i reset many times and checked recorder and it works, tried microphone on different computer and it worked, tried working head phones, no go, called skype many times
    got nothing reinstalled skype, to new one i am still trying, if anyone can help plz patty
  6. Andrew 2/9/2005 1:18 PM
    Gravatar Has an online uploader that stores your contacts in a directory, it is free as well.

    For those that are so inclined.

  7. Ryan Farley 2/15/2005 9:03 AM
    Thanks Andrew. I've looked at Jyve before. Doesn't look too bad, but it really goes too far beyond what I'm looking for. But still worth a look.

  8. chinese man 2/21/2005 1:02 AM
    can you mail skype api to me?
    i am a chinese man. i like skype and want to develop form using skype api.
    thank you

    my mail is
  9. Ryan Farley 2/21/2005 6:43 AM
    chinese man,

    You can get the Skype API by installing Skype (See If ou want to use the COM wrapper I mentioned in the article, first download and install Skype, then download & registrer the COM DLL from

  10. Chris 2/25/2005 6:51 PM
    Does anyone out there know how to send play a wav file through Skype? I'm looking to call someone on Skype and play the .wav file. Thanks.

  11. João Leite 3/16/2005 4:10 AM
    Hey man, u know where my contact list was saved !?!!??!

  12. Ryan Farley 3/16/2005 7:06 AM
    João Leite,

    The export dialog allows you to select the location to save the file. The default location is where the application itself was installed.

  13. Joshua 3/25/2005 9:19 AM
    Looks like Skype 1.2 now offers centrally stored contacts list... Check it out:
  14. Yul Agbay 6/19/2005 8:21 PM
    Dear Ryan,

    I downloaded your Skype Export Utlity, installed and found very usefull. I exported my call list as CSV and found that the first line is truncated to the headers. I use excell 2000. Hope this feedback helps.

  15. Michael Möller 7/8/2005 1:02 PM
    I tried the download today. It failed miserably getting the contact list. On the other hand I have just upgraded to the latest Skype Oh well, I'll try something else. I'm just trying to run Skype alternatly on my main machine and on my portable, and looking for some way to keep the contact lists in synch
  16. Ryan Farley 7/8/2005 1:39 PM

    I just tested it with version and it works for me. What exactly was the error you received? You did catch that the .NET 1.1 Framework is required to run this (but not included in the install), right?

    BTW, you can now export contacts to a vCard and then import them in again - built in to Skype. It also now has the ability (again, built in) to store contacts centrally.

  17. Nance 7/19/2005 3:15 PM
    same as No one can hear me when I call. Please help me someone!!
  18. Ryan Farley 7/19/2005 3:22 PM

    Try visiting the Skype Forums ( and post your issue there. You'll have much better luck and getting a response.

    Good Luck,

  19. Yul Agbay 7/29/2005 4:36 PM
    Hi Ryan,

    Any plan for updating this nice utility? What I found that the csv format contains some extra delimiter that will give one space before the data as viewed in MS excell.

  20. Ryan Farley 7/29/2005 8:52 PM

    I fixed that - just for you ;-)

    Download the install again and reinstall. The extra space is now gone and everything looks as it should in Excel.

  21. darren 11/23/2005 3:01 AM
    only partially works for me, on skype version

    imported my calls, but the formating for duration is messed up. longer calls of 25:35 (25 minutes, 35 seconds) came out 25:35:00

    didn't import my contacts at all.

    u need to mention that it requires the .Net 1.1 framework

    get that here :

    looks promising, good start.
  22. Yul Agbay 12/7/2005 4:24 AM
    Dear Ryan

    >>I fixed that - just for you ;-)

    Sorry, I was away for a while. Confirm that the extra delimiter in csv are gone. Thank you for this very usefull utility, I use it for monitoring my calls.

    I hope you can spare more time as the other (previous) bug (Can I call it :-)) was still there. What I mean is that the 1st line of the call list is truncated to the header. I wish I can send you my csv file for this one.

    The other item I noted is that the conversion of the call duration has some random error i.e. the 25:15 (tweenty five minutes and fifteen seconds) is converted as 25:15:00 (tweenty five hours, 15 minutes and zero second). Still in the exported csv, actually I am only using the csv format also so I can not relate with the other (xml) exported format.

    I hope you can take a look in to the code very soon.

  23. Karika 1/30/2006 1:31 AM
    Hey Ryan,

    In the Ruby application, I need to the contact list of the currently logged-in Skype user.
    Can you suggest me appropriate Skype API for the same that I can use
    and incorporate in Ruby on Rails client application?

    Thanks and Regards,
  24. jan geirnaert 3/12/2006 2:40 AM
    hi. interesting utility. is anything like a skype "importer" too ?


  25. Frank 3/23/2006 1:10 PM
    Here are the results with Skype in Windows 2000 Server
    I start Skype, then start Skype Exporter,
    - Skype throws a dialog "Another program wants to use Skype...
    Name: RF.Utility.SkypeExport.exe, Publisher: Ryan Farley -"
    - I check "Allow this program to use SKype, but ask again in the future." I wait a few seconds. (If I wait too long, two more "Another program..." dialogs appear... I close the extra dialogs and click "OK". )

    The API Access Control icon appears at the bottom of the Skype window (opposing arrows).

    The Skype Exporter progress bar zips from left to right.
    Nothing appears in the Skype Exporter dialog box.

    I click Reload, and Skype Exporter throws up this:

    "An unhandled exception has occurred...

    See the end of this message for details on invoking
    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.Threading.ThreadStateException: Thread is running or terminated; it can not restart.
    at System.Threading.Thread.StartInternal(IPrincipal principal, StackCrawlMark& stackMark)
    at System.Threading.Thread.Start()
    at RF.Utility.SkypeExport.MainForm.btnReloadContacts_Click(Object sender, EventArgs e)
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.ButtonBase.WndProc(Message& m)
    at System.Windows.Forms.Button.WndProc(Message& m)
    at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
    at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Loaded Assemblies **************
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.2032
    CodeBase: file:///c:/winnt/
    Assembly Version: 1.0.2036.39155
    Win32 Version: 1.0.2036.39155
    CodeBase: file:///C:/Program%20Files/Skype%20Exporter/RF.Utility.SkypeExport.exe
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.2032
    CodeBase: file:///c:/winnt/assembly/gac/
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.2032
    CodeBase: file:///c:/winnt/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.2032
    CodeBase: file:///c:/winnt/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Skype%20Exporter/Skybound.VisualStyles.DLL
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Skype%20Exporter/Interop.SKYPEAPILib.DLL
    Assembly Version: 1.0.5000.0
    Win32 Version: 1.1.4322.573
    CodeBase: file:///c:/winnt/assembly/gac/custommarshalers/1.0.5000.0__b03f5f7f11d50a3a/custommarshalers.dll

    ************** JIT Debugging **************
    To enable just in time (JIT) debugging, the config file for this
    application or machine (machine.config) must have the
    jitDebugging value set in the section.
    The application must also be compiled with debugging

    For example:

    < jitDebugging="true" />

    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the machine
    rather than being handled by this dialog.

  26. cresha 4/13/2006 9:22 AM
    hi...can someone help me. well i live in the country of Belize and for a long time now they have been trying to ban skype here. i thing they have done so through the dial up service and i use the broadband/cable service. i don't know if they banned skype through there yet but i've been trying to download it but when ever it reaches 60percent or so it brings up a message saying '' setup files are corrupt'' and it doesn't download at all. PLEASE HELP!! if there is a solution to this
  27. sebi 4/19/2006 11:09 AM
    People, I am using Skype and I never bought credits. But I need the call list that is stored in my computer!!! All the calls that imade and do I do that. IT IS URGENT!!! I need it for my immigration file to canada. PLEASE!!!

    Thank you very much.
  28. Steve B - Ops in Afghanistan 6/30/2006 5:57 AM

    My wife has had 7 attempts in down loading skype 2.5 from the website. The step by step features are easy to follow but the snag is when the download is complete, nothing else happens. It should then go to install but doesn't. Can anyone help her?
  29. Xul 8/31/2006 6:11 PM
    Umm. Once the file is d/led... just double click it to run install.
  30. fioricet 9/11/2006 5:27 AM
    I downloaded your Skype Export Utlity, installed and found very useful !
    Thanks a lot. By the way , did anyone use FireFly for VoiP communications.
    All advices may be helpful. Thanks.
  31. michaela 9/17/2006 6:19 AM
    evertime i try to downlad skype it keeps saying your setup files are corrupted
  32. Frank 10/30/2006 2:23 AM
    1. In Exporter's Contact List, the Contact List remains EMPTY, even as the progress bar keeps moving.
    In Call List, all call history is fully extracted and can be x

    2. When the Contact List progress bar stops, the Contact List remains empty. Attempting a "Reload" produces an exception which allows "continue". Clicking Continue shows a smaller progress bar in the wrong place on the screen, and extracts no contacts.

    3. Please add a "Please install .NET 1.1" error message at startup or installation, either will do.

    4. Please add a GROUP column in Exporter's Contact List window.

    Question: My Skype Contact List has 300 contacts in 4 groups (All Contacts, other-misc, SkypeOut, UnGrouped). Does the db size, or number of Groups, or group naming characters affect Exporter's ability to fetch contacts?

  33. forrest 7/13/2007 7:13 PM
    Ask for help here: I need to print out my skype chat history for immigration purpose. I exported the film in XML format, and it looks like the following:

    <?xml version="1.0" encoding="utf-8" ?>
    - <!-- Skype user: forrest75 - Skype version:
    - <SkypeCalls>
    - <Contact>
    <Timestamp>7/13/2007 7:39:59 AM</Timestamp>
    <Subject />
    <PSTN_Number />

    I need to print out the file that looks neat and simple, just as what the exporter page shows, and present this file to the visa officer. Does anybody have an idea how to do this? Thanks a lot!

  34. Juliet 11/27/2007 7:33 AM
    I have the same problem as the previous poster. I also need to print my call history(for free skype to skype calls) for a marriage immigration visa. Additionally, i have a Mac, and it would not even open the Exporter download to begin installing. Sadly without this list and because i only use Skype to talk to my fiance, it looks like we hardly know each other! If anyone has any advice, please help!
  35. Jason Foster 12/7/2007 10:32 AM
    To the poster who needs his skype call list to show his phone log - In the worst case, you could always take screenshots of each page as it is displayed in Skype, and then print the screenshots out and deliver this with your immigration visa application....
  36. Ken 12/10/2007 2:33 AM
    I am going through immigration proceedings for my wife and it was exactly what I needed. Happy holidays!
  37. Jan 1/12/2008 10:59 AM
    Didn't work for me using Skype with Vista. Call List worked, but Contact List takes forever to load (>20 min to be exact).
  38. Rana 2/17/2008 8:04 AM
    Does skype provides APIs so that i can use them to build an application to run on the office LAN?

    i want to develop an application alike to skype that would run on my office LAN and the employees of different departments could talk to each other and could see each other without requiring internet and skype...

    is it possible?? and if there r such APIs then from where i should get them?
    I m a java developer...
  39. Robin 3/22/2008 6:54 AM
    Hi Ryan:

    I'm using Windows XP and Skype (both latest versions) and installed your export utility. When I run the utility it is only exporting contacts with a Skype account versus the ordinary phone numbers added as a Skype Out contact. Is there any way to export ALL of the contacts? Thank you very much, Robin
  40. Mike 6/10/2008 5:21 AM
    D'loaded the Skype Exporter but when I run it, I only get the heading, no call list.
    I am using Skype Ver.

    Do you have a new version?

    Does Skype have to be running to use the utility?


  41. Tony Lin 7/10/2008 7:19 PM
    Thank you
  42. Alex 7/11/2008 11:32 AM
    Exactly what I need, but may not be 64 Bit compliant
  43. Declan 8/6/2008 1:21 AM
    Thanks application - I am using XP and the latest version of Skype but it will not load the contacts - any advice? And I did download the .Net 1.1 also. Regards
  44. koko 11/12/2008 8:48 AM
    Hi all.I am using skype 3.8 on win Vista Home 64bit,the problem is that when I log in,my contact list loads but all contacts appear as offline.I have tried multiple times with no result,changing my status don't work.I don't have that problem on my friend's pc running Windows XP,and the internet connection is same.Any solutions?
  45. Peter Goldsworthy 2/10/2009 1:45 AM
    My skype won't allow me to call because it says I already have a call in progres. This is not true. It appears that a previous call has not disconnected....I think? How do I solve this?
  46. Bluetooth Headset 3/12/2009 2:54 PM
    i had the same problem like koko. after a new installation the problem was solved. i don't know why.
  47. Sherri 11/26/2009 7:49 PM
    When I restart my computer, an error message comes up that says the Skype call back window. I have never installed Skype. I found it during a search and it was installed in 2007. I can't delete it. Should I be concerned and how did it get installed? Thanks for your help!
  48. 11/23/2011 8:22 AM
    Save Your Skype Contacts
Comments have been closed on this topic.



Also see my CRM Developer blog