SmugMug JSON API 1.2.0 Examples

This section of the document will cover examples of queries to the SmugMug JSON API version 1.2.0 and the responses. In some of the Request and Response sections of the document values may be noted inside of tags, like <API KEY>, this simply indicates a private value that will either need to be provided by the developer or is part of the reply from SmugMug. Values spelled out using all-caps-underscore notation (e.g. INVALID_API_KEY) are literal values that can be used.

It's also important to note that every API call can be sent to either the secure HTTPS URL or the unsecure HTTP URL. For the purposes of examples and best-practices, all user login/logout calls are suggested to be done against the secure HTTPS URL.

Error Codes

This section covers all the error responses that queries to the different API methods can return. The Request values below are just examples used in order to cause the error to occur. For most errors (e.g. invalid session) you can recieve them in many different ways, the examples below do not cover every case.

You can detect any of these errors (and any undocumented) from any of the response implementations in this API or any custom response you choose to implement that extends com.kallasoft.smugmug.api.json.v1_2_0.Response. The implementation of Response will parse the reply message from SmugMug and detect if the stat was "ok" or "fail". If it was a "fail" stat, then the implementation will parse out the error code and message which you can retrieve using the getError().getCode() and getError().getMessage() methods respectively.

Also the existence of an error can be checked easily with isError() on any response instance.

Invalid Login (Code 1)

Request:

https://api.smugmug.com/hack/json/1.2.0/?method=smugmug.login.withPassword&APIKey=<API KEY>&EmailAddress=invalid_username&Password=invalid_password

Response:

{
    "stat":"fail",
    "code":1,
    "message":"invalid login"
}

Invalid Session (Code 3)

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.create&APIKey=<API KEY>&SessionID=<ANONYMOUS SESSION ID>&Title=<ALBUM TITLE>&CategoryID=<CATEGORY ID>

Response:

{
    "stat":"fail",
    "code":3,
    "message":"invalid session"
}

Invalid User (Code 4)

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.users.getTree&APIKey=<API KEY>&SessionID=<SESSION ID>&NickName=badNickName

Response:

{
    "stat":"fail",
    "code":4,
    "message":"invalid user"
}

Invalid Sort Method (Code 12)

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.reSort&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>&By=INVALID_SORT_BY&Direction=<ASC or DESC>

Response:

{
    "stat":"fail",
    "code":12,
    "message":"invalid sort method"
}

Invalid Sort Direction (Code 13)

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.reSort&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>&By=<FileName, Caption or DateTime>&Direction=INVALID_SORT_DIRECTION

Response:

{
    "stat":"fail",
    "code":13,
    "message":"invalid sort direction"
}

Empty Set - No SubCategories Found (Code 15)

Request:

[Any SubCategory get request that results in an empty reply]

Response:

{
    "stat":"fail",
    "code":15,
    "message":"empty set - no subcategories found"
}

Invalid Method (Code 17)

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.INVALID_METHOD

Response:

{
    "stat":"fail",
    "code":17,
    "message":"invalid method"
}

Invalid API Key (Code 18)

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.login.anonymously&APIKey=INVALID_API_KEY

Response:

{
    "stat":"fail",
    "code":18,
    "message":"invalid API key"
}

Methods

The sections following will outline queries and responses from the SmugMug JSON API for the given method.

Each method below has a corresponding class in the kallasoft SmugMug Java API in a package with the same naming structure contained under the com.kallasoft.smugmug.api.json.v1_2_0 parent package. For example, smugmug.login.anonymously is implemented by the class com.kallasoft.smugmug.api.json.v1_2_0.login.Anonymously and the reply from the server is modelled by the com.kallasoft.smugmug.api.json.v1_2_0.login.Anonymously.AnonymouslyResponse Response implementation.

smugmug.login.anonymously

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.login.anonymously&APIKey=<API KEY>

Response:

{
    "stat":"ok",
    "method":"smugmug.login.anonymously",
    "Login":{
        "Session":{
            "id":"<SESSION ID>"
        }
    }
}

smugmug.login.withPassword

Request:

https://api.smugmug.com/hack/json/1.2.0/?method=smugmug.login.withPassword&APIKey=<API KEY>&EmailAddress=<EMAIL ADDRESS>&Password=<PASSWORD>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.login.withPassword",
    "Login" : {
        "User" : {
            "id" : <USER ID>,
            "NickName" : "<NICK NAME>",
            "DisplayName" : "<DISPLAY NAME>"
        },
        "PasswordHash" : "<PASSWORD HASH>",
        "AccountType" : "<ACCOUNT TYPE>",
        "FileSizeLimit" : <FILESIZE LIMIT, 12MB or 25MB in bytes>,
        "Session" : {
            "id" : "<SESSION ID>"
        }
    }


smugmug.login.withHash

Request:

https://api.smugmug.com/hack/json/1.2.0/?method=smugmug.login.withHash&APIKey=<API KEY>&UserID=<USER ID>&PasswordHash=<PASSWORD HASH>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.login.withHash",
    "Login" : {
        "User" : {
            "NickName" : "<NICK NAME>",
            "DisplayName" : "<DISPLAY NAME>"
        },
        "AccountType" : "<ACCOUNT TYPE>",
        "FileSizeLimit" : <FILESIZE LIMIT, 12MB or 25MB in bytes>,
        "Session" : {
            "id" : "<SESSION ID>"
        }
    }
}

smugmug.logout

Request:

https://api.smugmug.com/hack/json/1.2.0/?method=smugmug.logout&APIKey=<API KEY>&SessionID=<SESSION ID>

Response:

{
    "stat":"ok",
    "method":"smugmug.logout",
    "Logout":{
        "Successful":""
    }
}


smugmug.users.getTree

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.users.getTree&APIKey=<API KEY>&SessionID=<SESSION ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.users.getTree",
    "Categories" : [ {
        "id" : 0,
        "Name" : "Other",
        "SubCategories" : [ {
            "id" : <SUBCATEGORY ID>,
            "Name" : "<SUBCATEGORY NAME>",
            "Albums" : [ {
                "id" : <ALBUM ID>,
                "Title" : "<ALBUM TITLE>"
            } ]
        } ],
        "Albums" : [ {
            "id" : <ALBUM ID>,
            "Title" : "<ALBUM TITLE>"
        } ]
    } ]
}

Request (Heavy):

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.users.getTree&APIKey=<API KEY>&SessionID=<SESSION ID>&Heavy=1

Response (Heavy):

{
    "stat" : "ok",
    "method" : "smugmug.users.getTree",
    "Categories" : [ {
        "id" : 0,
        "Name" : "Other",
        "SubCategories" : [ {
            "id" : <SUBCATEGORY ID>,
            "Name" : "<SUBCATEGORY NAME>",
            "Albums" : [ {
                "id" : <ALBUM ID>,
                "Position" : 17,
                "ImageCount" : 24,
                "Title" : "<ALBUM TITLE>",
                "Description" : "<ALBUM DESCRIPTION>",
                "Keywords" : "",
                "Public" : true,
                "Password" : "",
                "PasswordHint" : "",
                "Printable" : true,
                "Filenames" : false,
                "Comments" : true,
                "External" : true,
                "Originals" : true,
                "EXIF" : true,
                "Share" : true,
                "SortMethod" : "Position",
                "SortDirection" : false,
                "LastUpdated" : "2001-01-01 01:01:01",
                "FamilyEdit" : false,
                "FriendEdit" : false,
                "HideOwner" : false,
                "CanRank" : true,
                "Clean" : false,
                "Geography" : true,
                "SmugSearchable" : true,
                "WorldSearchable" : true,
                "Larges" : true,
                "Protected" : false,
                "Watermarking" : false,
                "DefaultColor" : false,
                "ProofDays" : 0,
                "Backprinting" : "",
                "XLarges" : true,
                "X2Larges" : true,
                "X3Larges" : true,
                "Header" : false,
                "UnsharpRadius" : 1,
                "UnsharpSigma" : 1,
                "UnsharpAmount" : 0.2,
                "UnsharpThreshold" : 0.05,
                "Highlight" : {
                    "id" : 0
                },
                "Community" : {
                    "id" : 0
                },
                "Watermark" : {
                    "id" : 0
                },
                "Template" : {
                    "id" : 0
                }
            } ]
        } ],
        "Albums" : [ {
            "id" : <ALBUM ID>,
            "Position" : 3,
            "ImageCount" : 0,
            "Title" : "<ALBUM TITLE>",
            "Description" : "",
            "Keywords" : "",
            "Public" : true,
            "Password" : "",
            "PasswordHint" : "",
            "Printable" : true,
            "Filenames" : false,
            "Comments" : true,
            "External" : true,
            "Originals" : true,
            "EXIF" : true,
            "Share" : true,
            "SortMethod" : "Position",
            "SortDirection" : false,
            "LastUpdated" : "2001-01-01 01:01:01",
            "FamilyEdit" : false,
            "FriendEdit" : false,
            "HideOwner" : false,
            "CanRank" : true,
            "Clean" : false,
            "Geography" : true,
            "SmugSearchable" : true,
            "WorldSearchable" : true,
            "Larges" : true,
            "Protected" : false,
            "Watermarking" : false,
            "DefaultColor" : false,
            "ProofDays" : 0,
            "Backprinting" : "",
            "XLarges" : true,
            "X2Larges" : true,
            "X3Larges" : true,
            "Header" : false,
            "UnsharpRadius" : 1,
            "UnsharpSigma" : 1,
            "UnsharpAmount" : 0.2,
            "UnsharpThreshold" : 0.05,
            "Highlight" : {
                "id" : 0
            },
            "Community" : {
                "id" : 0
            },
            "Watermark" : {
                "id" : 0
            },
            "Template" : {
                "id" : 0
            }
        } ]
    } ]
}

smugmug.users.getTransferStats

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.users.getTransferStats&APIKey=<API KEY>&SessionID=<SESSION ID>&Month=<MONTH, 1-12>&Year=<YEAR>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.users.getTransferStats",
    "Albums" : [ {
        "id" : <ALBUM ID>,
        "Bytes" : 0,
        "Tiny" : 0,
        "Thumb" : 0,
        "Small" : 0,
        "Medium" : 0,
        "Large" : 0,
        "Original" : 0,
        "Images" : [ {
            "id" : <IMAGE ID>,
            "Bytes" : 0,
            "Tiny" : 0,
            "Thumb" : 0,
            "Small" : 0,
            "Medium" : 0,
            "Large" : 0,
            "Original" : 0
        }, {
            "id" : <IMAGE ID>,
            "Bytes" : 0,
            "Tiny" : 0,
            "Thumb" : 0,
            "Small" : 0,
            "Medium" : 0,
            "Large" : 0,
            "Original" : 0
        } ]
    }, {
        "id" : <ALBUM ID>,
        "Bytes" : 0,
        "Tiny" : 0,
        "Thumb" : 0,
        "Small" : 0,
        "Medium" : 0,
        "Large" : 0,
        "Original" : 0,
        "Images" : null
    } ]
}

smugmug.albums.get

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.get&APIKey=<API KEY>&SessionID=<SESSION ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.albums.get",
    "Albums" : [ {
        "id" : <ALBUM ID>,
        "Title" : "<ALBUM TITLE>",
        "Category" : {
            "id" : <CATEGORY ID>,
            "Name" : "<CATEGORY NAME>"
        }
    } ]
}

Request (Heavy):

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.get&APIKey=<API KEY>&SessionID=<SESSION ID>&Heavy=1

Response (Heavy):

{
    "stat" : "ok",
    "method" : "smugmug.albums.get",
    "Albums" : [ {
        "id" : <ALBUM ID>,
        "Category" : {
            "id" : 0,
            "Name" : "Other"
        },
        "SubCategory" : {
            "id" : <SUBCATEGORY ID>,
            "Name" : "<SUBCATEGORY NAME>"
        },
        "Highlight" : {
            "id" : 0
        },
        "Community" : {
            "id" : 0
        },
        "Position" : 17,
        "ImageCount" : 24,
        "Title" : "<ALBUM TITLE>",
        "Description" : "<ALBUM DESCRIPTION>",
        "Keywords" : "",
        "Public" : true,
        "Password" : "",
        "PasswordHint" : "",
        "Printable" : true,
        "Filenames" : false,
        "Comments" : true,
        "External" : true,
        "Originals" : true,
        "EXIF" : true,
        "Share" : true,
        "SortMethod" : "Position",
        "SortDirection" : false,
        "LastUpdated" : "2001-01-01 01:01:01",
        "FamilyEdit" : false,
        "FriendEdit" : false,
        "HideOwner" : false,
        "CanRank" : true,
        "Clean" : false,
        "Geography" : true,
        "SmugSearchable" : true,
        "WorldSearchable" : true,
        "Larges" : true,
        "Protected" : false,
        "Watermarking" : false,
        "Watermark" : {
            "id" : 0
        },
        "DefaultColor" : false,
        "ProofDays" : 0,
        "Backprinting" : "",
        "XLarges" : true,
        "X2Larges" : true,
        "X3Larges" : true,
        "Header" : false,
        "Template" : {
            "id" : 0
        },
        "UnsharpRadius" : 1,
        "UnsharpSigma" : 1,
        "UnsharpAmount" : 0.2,
        "UnsharpThreshold" : 0.05
    } ]
}

smugmug.albums.getInfo

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.getInfo&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.albums.getInfo",
    "Album" : {
        "id" : <ALBUM ID>,
        "Category" : {
            "id" : 37
        },
        "SubCategory" : {
            "id" : 0
        },
        "Highlight" : {
            "id" : 0
        },
        "Community" : {
            "id" : 0
        },
        "Position" : 31,
        "ImageCount" : 224,
        "Title" : "<ALBUM TITLE>",
        "Description" : "",
        "Keywords" : "",
        "Public" : true,
        "Password" : "",
        "PasswordHint" : "",
        "Printable" : true,
        "Filenames" : false,
        "Comments" : true,
        "External" : true,
        "Originals" : true,
        "EXIF" : true,
        "Share" : true,
        "SortMethod" : "Position",
        "SortDirection" : false,
        "LastUpdated" : "2001-01-01 01:01:01",
        "FamilyEdit" : false,
        "FriendEdit" : false,
        "HideOwner" : false,
        "CanRank" : true,
        "Clean" : false,
        "Geography" : true,
        "SmugSearchable" : true,
        "WorldSearchable" : true,
        "Larges" : true,
        "Protected" : false,
        "Watermarking" : false,
        "Watermark" : {
            "id" : 0
        },
        "DefaultColor" : false,
        "ProofDays" : 0,
        "Backprinting" : "",
        "XLarges" : true,
        "X2Larges" : true,
        "X3Larges" : true,
        "Header" : false,
        "Template" : {
            "id" : 0
        },
        "UnsharpRadius" : 1,
        "UnsharpSigma" : 1,
        "UnsharpAmount" : 0.2,
        "UnsharpThreshold" : 0.05
    }
}

Response (from a public album owned by another person):

{
    "stat" : "ok",
    "method" : "smugmug.albums.getInfo",
    "Album" : {
        "id" : <ALBUM ID>,
        "Position" : 7,
        "ImageCount" : 30,
        "Title" : "<TITLE>",
        "Description" : "<DESCRIPTION>",
        "LastUpdated" : "2001-01-01 01:01:01",
        "Highlight" : {
            "id" : <HIGHLIGHT ID>
        },
        "Category" : {
            "id" : <CATEGORY ID>
        },
        "SubCategory" : {
            "id" : <SUBCATEGORY ID>
        }
    }
}

smugmug.albums.create

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.create&APIKey=<API KEY>&SessionID=<SESSION ID>&Title=<ENCODED TITLE>&CategoryID=<CATEGORY ID>

Response:

{
    "stat":"ok",
    "method":"smugmug.albums.create",
    "Album":{
        "id":<ALBUM ID>
    }
}

smugmug.albums.changeSettings

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.changeSettings&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>&Description=<ENCODED DESCRIPTION>

Response:

{
    "stat":"ok",
    "method":"smugmug.albums.changeSettings",
}

smugmug.albums.reSort

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.reSort&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>&By=<FileName, Caption or DateTime>&Direction=<ASC or DESC>

Response:

{
    "stat":"ok",
    "method":"smugmug.albums.reSort",
}

smugmug.albums.delete

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.delete&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>

Response:

{
    "stat":"ok",
    "method":"smugmug.albums.delete",
}

smugmug.albums.getStats

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albums.getStats&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>&Month=<MONTH, 1-12>&Year=<YEAR>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.albums.getStats",
    "Album" : {
        "id" : <ALBUM ID>,
        "Bytes" : 0,
        "Tiny" : 0,
        "Thumb" : 0,
        "Small" : 0,
        "Medium" : 0,
        "Large" : 0,
        "Original" : 0,
        "Images" : [ {
            "id" : <IMAGE ID>,
            "Bytes" : <IMAGE SIZE>,
            "Tiny" : 1,
            "Thumb" : 0,
            "Small" : 0,
            "Medium" : 0,
            "Large" : 0,
            "Original" : 0
        } ]
    }
}

smugmug.albumtemplates.get

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.albumtemplates.get&APIKey=<API KEY>&SessionID=<SESSION ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.albumtemplates.get",
    "AlbumTemplates" : [ {
        "id" : 2,
        "AlbumTemplateName" : "smugmug default",
        "Template" : {
            "id" : 0
        },
        "Community" : {
            "id" : 0
        },
        "SortMethod" : "Position",
        "SortDirection" : false,
        "Public" : true,
        "Password" : "",
        "PasswordHint" : "",
        "Printable" : true,
        "Header" : false,
        "Filenames" : false,
        "Comments" : true,
        "External" : true,
        "Originals" : true,
        "Larges" : true,
        "Clean" : false,
        "EXIF" : true,
        "Share" : true,
        "Protected" : false,
        "Watermarking" : false,
        "Watermark" : {
            "id" : 0
        },
        "FriendEdit" : false,
        "FamilyEdit" : false,
        "HideOwner" : false,
        "DefaultColor" : true,
        "Geography" : true,
        "CanRank" : true,
        "ProofDays" : 0,
        "Backprinting" : "",
        "SmugSearchable" : true,
        "WorldSearchable" : true,
        "XLarges" : true,
        "X2Larges" : true,
        "X3Larges" : true,
        "UnsharpRadius" : 1,
        "UnsharpSigma" : 1,
        "UnsharpAmount" : 0.2,
        "UnsharpThreshold" : 0.05
    } ]
}

smugmug.images.get

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.images.get&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.images.get",
    "Images" : [ {
        "id" : <IMAGE ID>
    } ]
}

Request (Heavy):

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.images.get&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>&Heavy=1

Response (Heavy):

{
    "stat" : "ok",
    "method" : "smugmug.images.get",
    "Images" : [ {
        "id" : <IMAGE ID>,
        "FileName" : "<ORIGINAL FILE NAME>",
        "Caption" : "",
        "Keywords" : "",
        "Position" : 1,
        "Date" : "2001-01-01 01:01:01",
        "Format" : "<FILE FORMAT, e.g. "JPG", "PNG", etc>",
        "Serial" : 1,
        "Watermark" : "0",
        "Size" : 4293593,
        "Width" : 3072,
        "Height" : 2304,
        "MD5Sum" : "<MD5 Sum>",
        "LastUpdated" : "2001-01-01 01:01:01",
        "AlbumURL" : "http://<YOUR SITE>.smugmug.com/gallery/<ALBUM ID>#<IMAGE ID>",
        "TinyURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-Ti-1.jpg",
        "ThumbURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-Th-1.jpg",
        "SmallURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-S-1.jpg",
        "MediumURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-M-1.jpg",
        "LargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-L-1.jpg",
        "XLargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-XL-1.jpg",
        "X2LargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-X2-1.jpg",
        "X3LargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-X3-1.jpg",
        "OriginalURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-O-1.jpg",
        "Album" : {
            "id" : <ALBUM ID>
        }
    } ]
}

smugmug.images.getURLs

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.images.getURLs&APIKey=<API KEY>&SessionID=<SESSION ID>&ImageID=<IMAGE ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.images.getURLs",
    "Image" : {
        "id" : <IMAGE ID>,
        "AlbumURL" : "http://<YOUR SITE>.smugmug.com/gallery/<ALBUM ID>#<IMAGE ID>",
        "TinyURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-Ti-1.jpg",
        "ThumbURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-Th-1.jpg",
        "SmallURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-S-1.jpg",
        "MediumURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-M-1.jpg",
        "LargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-L-1.jpg",
        "XLargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-XL-1.jpg",
        "X2LargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-X2-1.jpg",
        "X3LargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-X3-1.jpg",
        "OriginalURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-O-1.jpg"
    }
}

smugmug.images.getInfo

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.images.getInfo&APIKey=BqPrphSt23shcGtMavNqiXChVYIINIBb&SessionID=e9bd0ccede7a46d1fa30ce8c178b9a19&ImageID=<IMAGE ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.images.getInfo",
    "Image" : {
        "id" : <IMAGE ID>,
        "Album" : {
            "id" : <ALBUM ID>
        },
        "FileName" : "<ORIGINAL IMAGE FILENAME>",
        "Caption" : "",
        "Keywords" : "",
        "Position" : 1,
        "Date" : "2001-01-01 01:01:01",
        "Format" : "<FORMAT, e.g. 'JPG', 'PNG', etc>",
        "Serial" : 1,
        "Watermark" : "0",
        "Size" : <SIZE, IN BYTES>,
        "Width" : 3072,
        "Height" : 2304,
        "MD5Sum" : "<MD5 SUM>",
        "LastUpdated" : "2001-01-01 01:01:01",
        "AlbumURL" : "http://<YOUR SITE>.smugmug.com/gallery/<ALBUM ID>#<IMAGE ID>",
        "TinyURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-Ti-1.jpg",
        "ThumbURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-Th-1.jpg",
        "SmallURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-S-1.jpg",
        "MediumURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-M-1.jpg",
        "LargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-L-1.jpg",
        "XLargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-XL-1.jpg",
        "X2LargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-X2-1.jpg",
        "X3LargeURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-X3-1.jpg",
        "OriginalURL" : "http://<YOUR SITE>.smugmug.com/photos/<IMAGE ID>-O-1.jpg"
    }
}

smugmug.images.getEXIF

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.images.getEXIF&APIKey=<API KEY>&SessionID=<SESSION ID>&ImageID=<IMAGE ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.images.getEXIF",
    "Image" : {
        "id" : <IMAGE ID>,
        "DateTime" : "2001-01-01 01:01:01",
        "DateTimeOriginal" : "2001-01-01 01:01:01",
        "DateTimeDigitized" : "2001-01-01 01:01:01",
        "Make" : "<CAMERA MAKE>",
        "Model" : "<CAMERA MODEL>",
        "ExposureTime" : "1/60",
        "Aperture" : "f/2.8",
        "FocalLength" : "4600/1000",
        "CCDWidth" : "5mm",
        "CompressedBitsPerPixel" : "5/1",
        "Flash" : 89,
        "ExposureBiasValue" : "0/3",
        "ExposureMode" : 0,
        "WhiteBalance" : 0,
        "DigitalZoomRatio" : "3072/3072",
        "SensingMethod" : 2,
        "ColorSpace" : "1"
    }
}

smugmug.images.changeSettings

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.images.changeSettings&APIKey=<API KEY>&SessionID=<SESSION ID>&ImageID=<IMAGE ID>&Caption=<CAPTION>&Keywords=<KEY WORDS, SPACE DELIMITED>

Response:

{
    "stat":"ok",
    "method":"smugmug.images.changeSettings",
}

smugmug.images.changePosition

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.images.changePosition&APIKey=<API KEY>&SessionID=<SESSION ID>&ImageID=<IMAGE ID>&Position=<POSITION>

Response:

{
    "stat":"ok",
    "method":"smugmug.images.changePosition",
}

smugmug.images.upload

Request:

http://upload.smugmug.com/hack/json/1.2.0/?method=smugmug.images.upload&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>&FileName=<FILE NAME>&Data=<BASE64 ENCODED DATA>&ByteCount=<BYTE COUNT>&MD5Sum=<MD5Sum>

Response:

{
    "stat":"ok",
    "method":"smugmug.images.upload",
    "Image":{
        "id":<IMAGE ID>
    }

smugmug.images.uploadFromURL

NOTE: This method's usefulness has not been clarified by SmugMug yet. In order to calculate the ByteCount and MD5Sum, you would have to have downloaded the image. In which case you would just use smugmug.images.upload or a Binary Upload method.

Request:

http://upload.smugmug.com/hack/json/1.2.0/?method=smugmug.images.uploadFromURL&APIKey=<API KEY>&SessionID=<SESSION ID>&AlbumID=<ALBUM ID>&URL=<IMAGE URL>&Keywords=<KEYWORDS>&Latitude=<LATITUDE>&Longitude=<LONGITUDE>&Altitude=<ALTITUDE, in METERS>&ByteCount=<BYTE COUNT>&MD5Sum=<MD5Sum>

Response:

{
    "stat":"ok",
    "method":"smugmug.images.uploadFromURL",
    "result":null
}

Binary Upload: HTTP Put

Request:

Please Refer to Binary Upload: HTTP Put documentation

Response:

{
    "stat":"ok",
    "method":"smugmug.images.upload",
    "Image":{
        "id":201510850
    }
}

smugmug.images.delete

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.images.delete&APIKey=<API KEY>&SessionID=<SESSION ID>&ImageID=<IMAGE ID>

Response:

{
    "stat":"ok",
    "method":"smugmug.images.delete",
}

smugmug.images.getStats

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.images.getStats&APIKey=<API KEY>&SessionID=<SESSION ID>&ImageID=<IMAGE ID>&Month=<MONTH, 1-12)

Response:

{
    "stat" : "ok",
    "method" : "smugmug.images.getStats",
    "Image" : {
        "id" : <IMAGE ID>,
        "Bytes" : 0,
        "Tiny" : 0,
        "Thumb" : 0,
        "Small" : 0,
        "Medium" : 0,
        "Large" : 0,
        "Original" : 0
    }
}

smugmug.categories.get

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.categories.get&APIKey=<API KEY>&SessionID=<SESSION ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.categories.get",
    "Categories" : [ {
        "id" : <CATEGORY ID>,
        "Title" : "<CATEGORY TITLE>"
    } ]
}

smugmug.categories.create

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.categories.create&APIKey=<API KEY>&SessionID=<SESSION ID>&Name=<CATEGORY NAME>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.categories.create",
    "Category" : {
        "id" : <CATEGORY ID>
    }
}

smugmug.categories.delete

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.categories.delete&APIKey=<API KEY>&SessionID=<SESSION ID>&CategoryID=<CATEGORY ID>

Response:

{
    "stat":"ok",
    "method":"smugmug.categories.delete",
}

smugmug.categories.rename

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.categories.delete&APIKey=<API KEY>&SessionID=<SESSION ID>&CategoryID=<CATEGORY ID>&Name=<NEW CATEGORY NAME>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.categories.delete",
}

smugmug.subcategories.get

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.subcategories.get&APIKey=<API KEY>&SessionID=<SESSION ID>&CategoryID=<PARENT CATEGORY ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.subcategories.get",
    "SubCategories" : [ {
        "id" : <SUB CATEGORY ID>,
        "Title" : "<SUB CATEGORY TITLE>"
    } ]
}

smugmug.subcategories.getAll

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.subcategories.getAll&APIKey=<API KEY>&SessionID=<SESSION ID>

Response:

{
    "stat" : "ok",
    "method" : "smugmug.subcategories.getAll",
    "SubCategories" : [ {
        "id" : <SUB CATEGORY ID>,
        "Title" : "<SUB CATEGORY TITLE>",
        "Category" : {
            "id" : <PARENT CATEGORY ID>
        }
    } ]
}

smugmug.subcategories.create

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.subcategories.create&APIKey=<API KEY>&SessionID=<SESSION ID>&Name=<SUB CATEGORY NAME>&CategoryID=<PARENT CATEGORY ID>

Response:

{
    "stat":"ok",
    "method":"smugmug.subcategories.create",
    "SubCategory":{
        "id":<SUB CATEGORY ID>
    }
}

smugmug.subcategories.delete

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.subcategories.delete&APIKey=<API KEY>&SessionID=<SESSION ID>&SubCategoryID=<SUB CATEGORY ID>

Response:

{
    "stat":"ok",
    "method":"smugmug.subcategories.delete",
}

smugmug.subcategories.rename

Request:

http://api.smugmug.com/hack/json/1.2.0/?method=smugmug.subcategories.rename&APIKey=<API KEY>&SessionID=<SESSION ID>&SubCategoryID=<SUB CATEGORY ID>&Name=<NEW SUB CATEGORY NAME>

Response:

{
    "stat":"ok",
    "method":"smugmug.subcategories.rename",
}