Latest 0.1.0
License MIT
Platforms ios 5.0, osx 10.7, requires ARC
Dependencies AFNetworking, SSKeychain, Reachability

This is an Instapaper API client that allows queuing of URLs to be saved later in the event that the user’s connection lets them down. KSInstapaper handles the networking using AFNetworking, the user’s password storage using SSKeychain and the networking reachability using Tony Million’s Reachability


There are Mac and iOS example projects included in this repo but just to show you how simple it is.

To authorize and store a user simply call:

[[KSInstapaperAPI sharedClient] authorizeUsername:username
                                  withReturnBlock:^(BOOL authorized, NSError *error)
    if (authorized) {
        // Do stuff
    } else {
        // Do failed stuff

        if (error.code == KSInstapaperInvalidCredentials) {
            // User entered invalid credentails

To save a URL with the newly stored credentials:

[[KSInstapaperAPI sharedClient] sendInstapaperURL:url
                                      withReturnBlock:^(BOOL sent, NSError *error)
    if (sent) {
        // Sent successfully
    } else {
        if (error.code == KSInstapaperUnreachableURLQueued) {
            // Queued URL 

Also I recommend you add [[KSInstapaperAPI sharedClient] sendQueuedURLsToInstapaper]; to some early point within your application. This way KSInstapaperAPI is allocated and if there are left over URLs that were queued during the user’s last session within your application they will be immediately sent (assuming good network connetivity). You can also call it at any time to forceable send queued URLs. Although assuming everything works correctly that should never be necessary.

If for some reason you don’t want to queue URLs when they cannot be added simple call [[KSInstapaperAPI sharedClient] queueInstapaperURLs:false]. Note that this may be overridden if you already have queued URLs. But assuming you call it before doing any sends it won’t be an issue.

There are also some handly helper methods like:

- (BOOL)hasStoredAccount;
- (NSString *)getAccountUsernameWithError:(NSError **)error;
- (BOOL)deleteStoredAccountWithError:(NSError **)error;

Also everything in KSInstapaperAPI.h is documented thouroughly.


As mentioned before KSInstapaperAPI relies on AFNetworking, SSKeychain and Reachability you could add all these frameworks seperately but I suggest you use CocoaPods

Simply add:

pod 'KSInstapaperAPI', '~> 0.1.0'

To your Podfile to install it and all it’s dependiencies. Then just #import "KSInstapaperAPI.h" and you’re good to go.


Please submit any issues you find through Github and I will look at them immediately. Also if you feel like improving up KSInstapaperAPI that would be awesome and I’ll gladly accept pull requests.

Latest podspec

    "name": "KSInstapaperAPI",
    "version": "0.1.0",
    "summary": "An Instapaper API controller with the ability to queue URLs when the network is down.",
    "homepage": "",
    "license": "MIT",
    "authors": {
        "Keith Smiley": "[email protected]"
    "source": {
        "git": "",
        "tag": "0.1.0"
    "platforms": {
        "ios": "5.0",
        "osx": "10.7"
    "source_files": "*.{h,m}",
    "requires_arc": true,
    "dependencies": {
        "AFNetworking": [
            "~> 1.0.1"
        "SSKeychain": [
            "~> 0.1.4"
        "Reachability": [
            "~> 3.1.0"

Pin It on Pinterest

Share This