Join MultiplyOpen a Free ShopSign InHelp
MultiplyLogo
SEARCH

API Overview

All API requests are done using a RESTful format. Simply GET or POST to the appropriate endpoint adding the proper name value pairs as documented here. Data is returned as either XML or JSON. By default data is returned as XML. To enable JSON simply append the extension ".json" to your request. The domain of your api request should always include the user you wish to authenticate for.

http://someuser.multiply.com/api/somemethod?password=somepassword&param1=someparam1&...

If you are authenticating via OAuth, the password parameter is not required, however the user must allow your application to access their data. See the Multiply OAuth documentation for details.

Support

Official support, examples and code libraries can be found at the api group site, MultiplyAPI.

Authentication

  • Basic (base64 encode uname:password in HTTP Authentication Header)
  • as RESTful arguments ($uid gleaned from domain, password=$password in query string)
  • OAuth token

Authentication failures will be returned as 401 HTTP_UNAUTHORIZED errors.



Developer Key

All API requests must supply a developer key, which is tied to a particular Multiply user. (Usually the developer of the application.) To retrieve your developer key, visit http://multiply.com/apis/developer-key while logged in as the user whose developer key you would like to retrieve.

Each request should send the application's key as api_key=$developer_key in the query string

Returning data

Data will be formatted as xml or json according to the extension of the query. Additionally json formatted requests can include a “callback=$callback” in the query string to have the data returned as a javascript function with the json string as its argument.

Invalid format requests will be returned with an HTTP_NOT_ACCEPTABLE error.



Errors

Any errors will be reported back to the client with the appropriate non-200 (HTTP_OK) status code as well as a short error message in the body of the document. Provided a valid format is requested, the error message will be encapsulated using xml or json. Due to a limitation with the apache web server the Content-type header associated with error messsages will always be 'text/html'. The actual data returned will have the requested format, however, so api clients should simply ignore this header.

curl -i 'http://foonasty.multiply.com/api/mailbox.xml?password=badpass'

HTTP/1.x 403 Forbidden
Date: Tue, 04 Aug 2009 20:28:31 GMT
Server: Apache/1.3.29 (Unix) mod_perl/1.29
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1

<?xml version="1.0" encoding="utf-8"?>
<response xmlns="http://multiply.com/api/0.1">
<error>username and password do not match</error>
</response>
curl 'http://foonasty.multiply.com/api/mailbox.json?password=badpass'
{"error":"username and password do not match"}




api calls

Note that any functionality that appears in red text is currently restricted to in-house development.

/api/inbox read the inbox
/api/filters get inbox filters
/api/profile get a user's profile
/api/post post content
/api/read?type get a list of a user's content
/api/read?item_key read a specific item
/api/reply post a reply
/api/contacts get a list of contacts; edit contacts
/api/groups get a list of a user's group memberships
/api/invites view and manage invites
/api/relationships map of relationship types available on multiply
/api/exists check if a photo or video exists in user's Media Locker
/api/contact_us send a message to Multiply customer service
/api/faq access Multipy's FAQ
/api/about access general information about Multiply
/api/marketplace get top marketplace listings and featured sellers
/api/categories get a list of marketplace categories
/api/productlistings get a list of product listings
/api/shops get a list of shops
/api/add_to_cart add a product to a user's shopping cart
/api/submit_inquiry create an inquiry on an item for sale
/api/cart view the current user's shopping cart
/api/cart_functions make changes to the current shopping cart
/api/checkout checkout with the current items in the user's shopping cart
/api/invoice perform functions on a particular invoice
/api/register register a new user
/api/obtain_access_token obtain an access token from user entered credentials

/api/inbox

http://foonasty.multiply.com/api/inbox?password=test&filter=recent&start=0

Requests to /api/inbox will return the the first 20 entries of a user's inbox using the user's default filter (as defined by the user on the web site). The type of content returned by /api/inbox may be modified using a “filter” argument. A list of valid filters for a given user may be collected by requesting /api/filters.


Advanced filtering options

Additionaly, mailbox content may be filtered by using any of these filter building blocks:

  • type limit entries by content type. Valid values are journal, photos, video, music, recipes, reviews, market, calendar, notes, guestbook, links or pms.
  • sort leave undefined for default sort. Set to "created" for reverse cronological order.
  • group return only group posts. Set to "all" for all groups or a comma delimited list of groups
  • fof set to 1 to return posts from friends of friends
  • unread set to 1 to return only unread posts
  • replied set to 1 to return only posts to which the user has replied

Paging through results

Requests to /inbox will return the first 25 entries in the inbox that match a given filter as well as a total_matching_filter field that documents the total number of messages available with that filter. To get the next 25 messages, set the start argument in the api request to 26, 51 and so on.



Returned data

Inboxes data is contains two top level nodes: total_matching_filter and messages. The total_matching_filter node has a sinlge interger. The messages node contains up to 25 individual message blocks.

<response>
   <total_matiching_filter>N</total_matching_filter>
    <messages>
         <message>
         ...

</message> </messages> </response>
“total_matching_filter”: N,
    “messages”: [
        {
            “name”:”message”,
            “value”: ...
        },
    ]
}


primary message fields
fielddata typedescription
message_idmultiply content id
$user_id:$type:$sequence_id
unique identifier of the message; used to request full version or to edit
subjecttextsubject of the message
summarytextsummary of the actual message
typejournal, photos, video, music, recipes, reviews, market, calendar, notes, guestbook, links or pmstype of post
htmlhtmlhtml representation of the post


all other message fields
fielddata typedescription
owner_idmultiply user iduser_id of the owner of the content.
author_idmultiply user iduser who authored the post; this might be distinct from the owner in that the owner can be a group
headshoturl100x100 headshot of author
thumbnailurlthumbnail if type is photos or video
content_type_iconurl16x16 gif of the content type's icon
num_photosintegernumber of photos associated with message
num_repliesintegernumber of replies to the message
replies_stringstringnicely formatted string indicated the number of replies, the number since last read, wand who made the reply
is_up_to_date1|0user has read the latest reply to the message
is_read1|0true is the user has read this message
is_subscribed1|0user has subscribed to receive email alerts for this message
is_sticky1|0user has flagged the message
first_unread_content_timestampseconds since epochtimestamp of the first unread content of the post; this could be the post itself or a reply the user has not yet seen
content_forhtmlhuman readable description of who the content is for, provided that the author of the messsage is the requesting uid.

rating1-5only used in reviews; how many stars out of five
last_read_timestampseconds since epochtimestamp when the message was last read by the user
latest_reply_user_idmultiply user iduser that last replied to the message
num_replies_at_last_readintegernumber of replies when the user last read
createdseconds since epochtimestamp when the message was created
start_prettymultiply pretty date formatonly used for calendar events; when the event starts
end_prettymultiply pretty date formatonly used in calendar events; when the event ends



/api/filters

http://foonasty.multiply.com/api/filters?password=test

Returns a list of email filters, each filter having two data nodes: name and label. Use the name node as an argument for the filter paramater when making inbox querries.

Returned data

Inboxes data is contains two top level nodes: total_matching_filter and messages. The total_matching_filter node has a sinlge interger. The messages node contains up to 25 individual message blocks.

<response>
    <filter>
        <name>recent</name>
        <label>Recent
Updates</label>
    </filter>
    ...
</response>
[
    { “name:”,”filter”, “value”: {“name”:”recent”,”label”:”Recent Updates”}},
    ...
]



/api/profile?user_id=$user_id

http://foonasty.multiply.com/api/profile?password=test&user_id=jill

Returns profile information for $user_id. Profile content is actualy dyamic, in that some users choose to share information with other users based on their relationship status.

profile fields
fieldvaluedescription
headshoturlurl for user's headshot
nametextuser's display name
possessive_nametextlocalized string to indicate ownership
relationshiptextrelationship of authenticated user to requested user
emailtextemail address of user
addressstringaddress of user
is_group0|1set to 1 if requested user_id is a group
num_contactsintegernumber of contacts user has
num_calendarintegernumber of calendars posted by user
num_marketintegernumber of market items posted by user
num_photosintergernumber of photo albums posted by user
num_groupsintegernumber of groups user belongs to
num_reviewsintegernumber of reviews posted by user
num_recipesintegernumber of recipes posted by user
num_notesintegernumber of notes posted by user
num_videointegernumber of videos posted by user
num_musicintegernumber of playlists posted by user
num_journalintegernumber or blog entries posted by user
num_linksintegernumber of links posted by user
guestbook_repliesintegernumber of replies in guestbook


<response>
    <num_photos>98</num_photos>
    <relationship>This is You</relationship>
    <num_calendar/>
    <num_market/>
    <num_contacts>1</num_contacts>
    <email>foonasty@mydomain.com</email> 
    <num_groups>7</num_groups>
    <address>Fort Lauderdale, FL </address>
    <num_reviews>1</num_reviews>
    <num_recipes/>
    <headshot> http://foonasty.multiply.com/logo </headshot> 
    <name>foonasty nasty</name>
    <possessive_name>foonasty's</possessive_name>
    <num_notes/>
    <num_video>7</num_video>
    <guestbook_replies>0</guestbook_replies>
    <num_music>37</num_music>
    <num_journal>35</num_journal>
    <num_links/>
</response>
{
    "num_photos":"98",
    "relationship":"This is You",
    "num_calendar":null,
    "num_market":null,
    "num_contacts":"1",
    "email":"foonasty@mydomain.com",
    "num_groups":7,"address":"Fort Lauderdale, FL ",
    "num_reviews":"1",
    "num_recipes":null,
    "headshot":"http://foonasty.multiply.com/logo",
    "name":"foonasty nasty",
    "possessive_name":"foonasty's",
    "num_notes":null,
    "num_video":"7",
    "guestbook_replies":0,
    "num_music":"37",
    "num_journal":"35",
    "num_links":null
}



/api/post

POST http://foonasty.multiply.com/api/post?password=test&type=photos&subject=foo+bar&...
Content-Type: multipart/form-data; boundary="_----------=_124933027215650"

--_----------=_124933027215650
Content-Length: 221080
Content-Type: image/jpeg
Content-Disposition: form-data; name="photo1"; filename="/net/paden/Pictures/IMG00015.JPG"

[PHOTO DATA]

--_----------=_124933046016124
Content-Length: 177515
Content-Type: image/jpeg
Content-Disposition: form-data; name="photo2"; filename="/net/paden/Pictures/IMG00008.JPG"

[PHOTO DATA]


Posting is accomplished by calling /api/post and sending the appropriate parameters for a given content type. If the content type supports attachements (such as photos, videos, cover shots for reviews, etc.), then files may be attached using the multipart/form-data posting method (similar to the upload box used in a web form).

Content type specific paramers are listed in sub-sections below. All content types support the following parameters:

common post parameters
fieldvaluedescription
typejournal, photos, video, music, recipes, reviews, market, calendar, notes, guestbook, links or pmstype of post
subjectfree form text with some limitations on css/javascriptsubject of post
bodyfree form text with some limitations on css/javascriptbody of post
tagscsv listtags
acl"everyone", "network" or "contacts" for posting to user accounts; "group:group-id" to post to a groupaccess control list shortcut for the post. Everyone means the post is public, network means it is for friends and friends of friends, and contacts means only people directly connected to the user will have access to the post. To post to group group-id, set this to group:group-id. Must be a member of the group and group settings must enable posting of the specific content type.
no_replies0|1set to 1 to disallow replies to a post
no_orders0|1do not allow other people to use media in post to place photo print orders
no_message_board0|1set to 1 to prevent post from being published to the message board
cp_facebook0|1if set to 1, will crosspost to user's facebook account
cp_twitter0|1if set to 1 will crosspost to user's twitter account
save"draft"normally undefined, if set to "draft" will put post in draft state


/api/post?type=photos

A successful photo post will return an HTTP status code of 200 as well as the album's item_key.

<response xmlns="http://multiply.com/api/0.1">
<item_key>376</item_key>
</response>
{"value":"377","name":"item_key"}


Photo Album Parameters
fieldvaluedescription
item_keymultiply item_keyunique identifier of item (i.e. foonasty:photos:12)
num_photosinteger; defaults to 20required if uploading more than 20 photos at a time
photoNphoto dataWhere N is an integer greater than 1. Photo data must be attached as a form-data field. It is suggested that user-facing applications upload one photo at a time in order to provide meaningful user feedback. This means a ten album photo album will post one photo with album subject and body information, then nine subsequent posts will add a single photo
photoN_subjectfree form textcaption for photo N
photoN_bodyfree form textdescription of photo N
to_media_lockerbooleanDefault: false. If true, the photo(s) are uploaded to user's Media Locker. If item_key and photoN_body parameters are specified, they are ignored. photoN_subject is used as the name for the photo in Media Locker.
folder_idstringrequired if to_media_locker is true. The folder in which the photo(s) are uploaded to. Similar to a path of a UNIX folder, without the leading / character. If a photo already exists in the Media Locker (as identified by the BASE64-MD5 string, see /api/exists method), the Media Locker folder-id for the photo is updated with the specified value.


/api/post?type=video

A successful video post will return an HTTP status code of 200 as well as the video_id.

<response xmlns="http://multiply.com/api/0.1">
<video_id>376</video_id>
</response>
{"value":"377","name":"video_id"}


Video Parameters
fieldvaluedescription
video_idnumeric video_id; combined with user id is a unique identifier for any given videoif present, the request will edit the subject and body for the video matching video_id.
videovideo dataVideo data must be attached as a form-data field.


/api/post?type=journal

A successful journal post will return an HTTP status code of 200 as well as the item_key.

<response xmlns="http://multiply.com/api/0.1">
<item_key>username:journal:376</item_key>
</response>
{"value":"username:journal:377","name":"item_key"}


journal parameters
fieldvaluedescription
item_idnumeric item_id; combined with user id is a unique identifier for any given journal entryif present, the request will edit the journal matching video_id.
attachment_NFile(s) to attach.Where N is an integer between 0 and 9. Attachments must be attached as a form-data field.
poll_questionfree form textif present, attaches a poll to this journal entry
poll_answer_Nfree form textWhere N is an integer between 0 and 9. If poll_question is defined, defines up to ten poll answers.


/api/post?type=note

A successful quicknote post will return an HTTP status code of 200 as well as the item_key. Please note: The entirety of a quicknote is contained in the "subject" portion. The "body" field is ignored.

<response xmlns="http://multiply.com/api/0.1">
<item_key>username:notes:376</item_key>
</response>
{"value":"username:notes:377","name":"item_key"}





/api/read?type=$type

curl 'http://foonasty.multiply.com/api/read?type=photos&password=test&start=0'
This method returns a listing of items for a specific item type. The type parameter must be present for a valid read request. Read will return the first 100 items in reverse cronological order of their creation dates. The returned data will also include a total number of listings available. If there are more then 100 available the next 100 can be requested by setting the "start" parameter to 101, then 201, etc.

Valid paramters to read are:
  • type - one of journal, photos, video, music, recipes, reviews, market, calendar, notes, guestbook, links or pms
  • item_key - the unique identier for a given item. item_keys are labeled as such in lists returned from reads or inbox queries.
  • start - integer; return reads starting at that offset.


<total_items>N</total_items>
<items><
    <item>
    ...
    </item>
    <item>
    ...
    </item>
    .
    .
    .
</items>


Each item node will be stuctured as follows:
/read type request -- items list
fieldvaluedescription
item_keymultiply item_keyunique identifier of item
subjecttextsubject of the item
summarytextfirst 100 characters of body of post
num_repliesintegernumber of replies to post
num_photosintegernumber of photos available with item
thumbnailsmultiply thumbnail arraysee thumbnails section for complete description; any thumbail image associated with the item, such as a cover photo or first frame of video
tagscsv valuescomma separated list of user defined tags applied to this item





/api/read?item_key=$item_key

curl 'http://foonasty.multiply.com/api/read?item_key=foonasty:photos:1&password=test'


This method returns a detailed description of a specific item. Item_key or type must be present for a valid read request. All item_key requests will return the fields listed below.

/read item_key request
fieldvaluedescription
subjecttextsubject of the item
bodytextbody of the item; if recipe is the description
author_idmultiply user_idauthor_id for the item
author_namelocalized first name, last nameauthor's real name
acl_descriptiontextplain english description for the items access control list
created_datemultiply date formathuman readable creation time for item
created_date_unixunix timestampcreation time in seconds since the epoch
num_repliesintegernumber of replies to post


Depending on the item type, there will be additional fields.

photos

Photos will have an additional "photos" node that will contain an array of photo hashes. Each hash will have the following fields:
photo hash elements
fieldvaluedescription
srcurlurl of the largest available size
item_keymultiply item_keyunique identifier of the photo
heightintegerpixel height of image
widthintegerpixel width of image
captiontextcaption
descriptiontextfull description of photo, often undefined by the user
num_repliesintegernumber of replies to this particular photo
thumbnailsmultiply thumbnail arraysee thumbnails section for complete description; listing of all available sizes of the photo

videos

additional video fields
fieldvaluedescription
thumbnailsmultiply thumbnail arraycover photo for the video, often the first frame.
iphone_srcurlurl for iphone compatible video stream
srcurlurl for video stream
heightintegerpixel height of video
widthintegerpixel width of video

music

Music items will potentially have a pictures array. They will also have an additional "songs" node that will contain an array of song hashes. Each song hash will have the following fields:
song hash elements
fieldvaluedescription
srcurlurl for the song stream
titletextsong title
artisttextsong artist
albumtextsong album

calendar

additional calendar fields
fieldvaluedescription
start_dateyyyymmddstart date for the event
start_timehh:mmstart time for the event
end_dateyyyymmddend date for the event
end_timehh:mmend time for the event
locationtextlocation of the event

reviews

additional review fields
fieldvaluedescription
categorytextcategory - for category "Books" this will be the genre; "Computers & Electronics": Product Type; "Movies": Genre; "Music": Genre; "Restaurants": Cuisine; "Video Games": Genre
consoletextgaming console; only defined for reviews with category "Video Games"
book_authortextbook author; only defined for reviews with category "Books"
artisttextartist; only defined for reviews with category "Music"
manufacturertextmanufacturer of item; only defined for reviews with category "Computers & Electronics"
locationtextlocation of restaurant; only defined for reviews with category "Restaurants"
picturesmultiply picture arraypictures attached by user

links

additional links fields
fieldvaluedescription
urlurlthe link itself
picturesmultiply picture arraypictures attached by user

market

additional market fields
categorytextcategory of item for sale
pricetextprice of item; may be non-numeric
buy_or_sellbuy|sellbuy indicates user wants to buy item described; sell means it is for sale
picturesmultiply picture arraypictures attached by user

recipes

additional recipe fields
categorytextfood type of recipe, i.e. "appetizer", "baking", etc.
styletextstyle of food
special_considerationstextspecial consideration, such as "kosher, "kids", etc.
servingstextnumber of servings, although can be non-numeric
ingredientstextingredients
directionstextdirections
picturesmultiply picture arraypictures attached by user

multiply picture array

A pictures array is optionally included with certain data types. This array will contain one or more picture hashes with the following fields:
picture hash
fieldvaluedescription
srcurlurl of the largest available size
heightintegerpixel height of image
widthintegerpixel width of image
thumbnailsmultiply thumbnail arrayall other available sizes of the image

multiply thumbnail array

A thumbnail array contains one or more thumbnail hashes with the following fields:
thumbnail hash
fieldvaluedescription
srcurlurl of the image
heightintegerpixel height of image
widthintegerpixel width of image



/api/reply

POST http://foonasty.multiply.com/api/reply?password=test \
        &item_key=barnasty:photos:1:2&body=I%20like%20this%20photo&...


Replying to an item is accomplished by calling /api/reply and sending the appropriate parameters for a given content type. Replies may be made to an item itself (An album or an individual photo in the case of photos) or to a reply on an item. Replies contain a body, but no subject. Replies may optionally quote the item they are replying to or a portion thereof, but the quote must be unaltered from the original item body or reply body.

Common Reply Parameters
fieldvaluedescription
item_keymultiply item_keyAll replies must reference an item key
reply_tointegerreply_id this reply is in response to (optional)
bodyfree form text with some limitations on css/javascriptbody of reply
quotetextportion of parent reply or item body to quote


Review Parameters
fieldvaluedescription
ratinginteger 1-5If present, attaches a one to five star rating to this reply.

/api/contacts

http://foonasty.multiply.com/api/contacts?password=test
Returns and array of a users contacts. The array contains one contacts hash for each user.
<response>
    <contacts>
         <contact>
         ...

</contact> </contacts> </response>
    “contacts”: [
        {
            “name”:”contact”,
            “value”: ...
        },
    ]
}
contact hash
fieldvaluedescription
first_namestringfirst name
last_namestringlast name
user_idmultiply user idup to 20 character unique identifier
headshoturlurl to 100x100 gif of user's headshot
user_siteurlurl to user's site

/api/exists

curl 'http://foonasty.multiply.com/api/exists?password=test&base64_md5=BASE64-MD5-STRING-OF-MEDIA&\
          file_size=SIZE-IN-BYTES&folder_id=FOLDER-ID&file_name=FILE-NAME'

This method checks if the photo or video file identified the BASE64-MD5 string and the filesize already exists in the user's Media Locker. The folder_id and file_name parameters are optional. If one or both are specified and are different from the Media Locker info of the existing photo/video, the info in the Media Locker is updated to the specified value(s).

The BASE64-MD5 is calculated by concatenating the first 1000 bytes, middle 1000 bytes [starting at offset ceil(photo_size_in_bytes/2)] and the last 1000 bytes, and then calculating the Base64 encoded string of the MD5 digest (see Digest::MD5::md5_base64, for example)

<response>
   <exists>true-or-false</exists>
</response>

/api/contact_us

POST http://multiply.com/api/contact_us
parameters
fieldvaluedescription
inqtypereport_user, report_group, default, press, sales, bizdevthe inquiry type
issuebilling, marketplace, spam, content, copyright, other, groupsthis field defines what the issue is concerning
subjectfree form textmessage subject
bodyfree form textmessage body
emailemail addressthis field is only required if accessing this page without user credentials. If user credentials are present, this field is ignored in favor of the user's registered email address
group_idmultiply group idthis is used when issue = groups

Returned data

If credentials are present:
<response xmlns="http://multiply.com/api/0.1">
    <item_key>123</item_key>
</response>

If credentials are absent:
<response xmlns="http://multiply.com/api/0.1">
    <success>1</success>
</response>
If credentials are present:
{"value":"123","name":"item_key"}

When credentials are absent:
{"value":"1","name":"success"}

/api/faq

GET http://namesty.multiply.com/api/faq
Keep in mind that the faq will change based on the viewing user as well as whether or not the request contains user credentials.
parameters
fieldvaluedescription
none
<response xmlns="http://multiply.com/api/0.1">
    <faqs>
	<faq>...</faq>
	...
    </faqs>
</response>
{
    "faqs": [
	{
	    "name":"faq",
	    "value": {
		"category":"General",
		"id":"10",
		...
	    }
	}
    ]
}
faq hash
fieldvaluedescription
categorystringcategory of the faq
idnumericnumeric id of the faq
questionstringthe faq
answerstringthe answer to the faq

/api/about

GET http://namesty.multiply.com/api/about
parameters
fieldvaluedescription
none
<response xmlns="http://multiply.com/api/0.1">
    <about>[latest about text]</about>
</response>
{"value":"[latest about text]","name":"about"}

/api/marketplace

GET http://namesty.multiply.com/api/marketplace
parameters
fieldvaluedescription
countryPH, IDRequired when user credentials are absent, optional when they are present. If present and country is not specified, the country will default to the user's country.
<response xmlns="http://multiply.com/api/0.1">
    <productlistings>
	<liteproductlisting>...</liteproductlisting>
	...
    </productlistings>
    <sellers>
	<liteseller>...</liteseller>...
    </sellers>
</response>
{
    "productlistings": [
	{
	    "name":"liteproductlisting",
	    "value": {
		"id":"10005",
		"owner_id":"namesty",
		...
	    },
	    ...
	},
	...
    ],
    "sellers": [
	{
	    "name":"liteseller",
	    "value": {
		"id":"namesty",
		"verified_seller_type":"business",
		...
	    },
	    ...
	},
	...
    ]
}
liteproductlisting hash
fieldvaluedescription
message_idmultiply content id $user_id:$type:$sequence_idunique identifier of the message; used to request full version or to edit
subjecttextsubject of the product listing
owner_idmultiply user idthe owner of the product listing
author_idmultiply user idthe user who authored the product listing. This might be distinct (though at the time of writing, it won't be) in that the owner can be a group.
thumbnailurla 160x120 thumbnail of the product
verified_seller_typebusiness, personal, trusted, nonethe level of verification that this seller has within Multiply's system
headshoturl100x100 headshot of author
content_type_iconurl16x16 gif of the content type's icon
shop_namestringthe shop's name
priceprice hashmultiply price hash. See here for details.
liteseller hash
fieldvaluedescription
idmultiply user idthe seller's multiply id
verified_seller_typebusiness, personal, trusted, nonethe level of verification that this seller has within Multiply's system
headshoturl100x100 headshot of author
shop_namestringthe shop's name
price hash
amountnumberprice amount
currencystringcurrency of the listing
prettystringproperly formatted price

/api/categories

GET http://namesty.multiply.com/api/categories
parameters
fieldvaluedescription
none
<response xmlns="http://multiply.com/api/0.1">
    <categories>
	<category>...</category>
	...
    </categories>
</response> 
{
    "categories":[
	{
	    "name":"category",
	    "value": {
		...
	    }
	},
	...
    ]
}
category hash
fieldvaluedescription
idstringthe category id
numeric_idnumberthe category's numeric id
labelstringthe full category name
subcategoriesarrayarray of subcategories
subcategory hash
fieldvaluedescription
idnumberthe subcategory id
labelstringthe full category name

/api/productlistings

GET http://namesty.multiply.com/api/productlistings
parameters
fieldvaluedescription
category_idnumeric idrequired, the top level numeric category id
familynumeric idoptional family/subcategory id
genrenumeric idoptional genre/subsubcategory id
querystringoptional query string for search purposes
sortdefault_sort desc, date_posted, subject, subject reverseoptional sort preference
trusted_only1, 0optional, specify whether or not to show only trusted sellers (default is to show all)
startnumeric starting pointoptional, specify where to start pagination through results
items_per_pagenumbernumber of items per page
<response xmlns="http://multiply.com/api/0.1">
    <productlistings>
	<liteproductlisting>...</liteproductlisting>
	...
    </productlistings>
</response>
{
    "productlistings": [
	{
	    "name":"liteproductlisting",
	    "value": {
		"id":"10005",
		"owner_id":"namesty",
		...
	    },
	    ...
	},
	...
    ]
}

/api/shops

POST http://namesty.multiply.com/api/shops?password=test
required parameters
fieldvaluedescription
category_idstringrequired, the top level category id
subcategory_idnumeric idoptional subcategory id
querystringoptional query string for search purposes
sortname, name desc, date, verified descoptional sort preference (verified desc is default)
trusted_only1, 0optional, specify whether or not to show only trusted sellers (default is to show all)
startnumeric starting pointoptional, specify where to start pagination through results
<response xmlns="http://multiply.com/api/0.1">
    <sellers>
	<liteseller>...</liteseller>...
    </sellers>
</response>
{
    "sellers": [
	{
	    "name":"liteseller",
	    "value": {
		"id":"namesty",
		"verified_seller_type":"business",
		...
	    },
	    ...
	},
	...
    ]
}

/api/add_to_cart

POST http://namesty.multiply.com/api/add_to_cart?password=test
parameters
fieldvaluedescription
seller_idmultiply user idthe id of the seller
multiply_catalog_idnumeric idthe numeric multiply catalog id
quantitynumberthe quantity to be added to the shopping cart
<response xmlns="http://multiply.com/api/0.1">
    <success>1</success>
</response>
{ "name":"success","value":"1"}

/api/submit_inquiry

Note that after you submit an inquiry, you must call /api/checkout to create the order.
POST http://namesty.multiply.com/api/submit_inquiry?password=test
parameters
fieldvaluedescription
seller_idmultiply user idthe id of the seller
multiply_catalog_idnumeric idthe numeric multiply catalog id
quantitynumberthe quantity to be added to the shopping cart
bodystringmessage to the seller
<response xmlns="http://multiply.com/api/0.1">
    <success>1</success>
</response>
{"name":"success","value":"1"}

/api/cart

GET http://namesty.multiply.com/api/cart?password=test
parameters
fieldvaluedescription
flowcustom, traditionaloptional, defaults to traditional. Custom flow items are added via the submit_inquiry function. Note that there can be only one custom item in the cart at a time. Traditional flow items are added via the add_to_cart function. There can be unlimited traditional items in a cart from any number of Multiply shops.
<response xmlns="http://multiply.com/api/0.1">
    <cart>
	<invoices>
	    <invoice>
		<invoice_items>
		    <invoice_item>
			...
		    </invoice_item>
		    ...
		</invoice_items>
		...
	    </invoice>
	    ...
	</invoices>
	<payment_options>
	    <bank>
		...
	    </bank>
	    ...
	<payment_options>
	<totals>
	    <total>
		...
	    </total>
	    ...
	</totals>
    </cart>
</response>
{
    "cart": {
	"invoices": [
	    "invoice": {
		"invoice_items": [
		    "invoice_item": {
			...
		    },
		    ...
		],
		...
	    },
	    ...
	],
	"payment_options": [
	    "bank": {
		...
	    },
	    ...
	],
	"totals": [
	    "total": {
		...
	    },
	    ...
	]
    }
}
invoice hash
invoice_items array
fieldvaluedescription
item_keymultiply item_keyunique identifier of invoice
statusmultiply invoice statusthe status of the invoice. See here for details.
shipping_optionsshipping options arrayAn array of available shipping options. See here for details on the shipping option hash.
current_shipping_settingsshipping_settingsshipping settings hash.
shipping_addressshipping address hashhash of current address selected for shipping. See here for details.
seller_idmultiply user_idthe id of the seller
shop_namestringseller's shop name
flowtraditional or customthe type of invoice that this is
totalstotals arrayarray of total hash items. See here for details.
invoice_itemsarray of invoice items. See below.
invoice_item hash
fieldvaluedescription
multiply_catalog_idnumeric idnumeric id corresponding to the item's multiply catalog id.
namestringname of the item
option_1_namestringname of option 1 if it exists
option_1_valuestringvalue of option 1 if it exists
option_2_namestringname of option 2 if it exists
option_2_valuestringvalue of option 2 if it exists
quantitynumberthe quantity of this item in the invoice
totalstotals arrayarray of total hash items. See here for details.
parent_keymultiply item_keyunique identifier of the seller's product
listing_keymultiply item_keyunique identifier of the seller's product listing that contains this product
descriptionstringdescription of the item. Usually, only present when dealing with items in a custom flow invoice.
bank hash
fieldvaluedescription
idstringthe id of the bank
namestringthe full name of the bank
short_namestringthe short name of the bank
supported_countriesarray of stringsarray containing country codes (eg 'PH', 'ID') that are supported by the bank
dispersal_enabledbooleanshows whether or not dispersals are enabled
afts_enabledbooleanshow whether or not automatic funds transfer is enabled
digits_in_account_numberarrayan array with 2 elements, the minimum and maximum number of digits allowed in a valid account number
logo_urlurlurl of the bank's logo
total hash
fieldvaluedescription
item_totalprice hashmultiply price hash. See here for details.
shipping_totalprice hashmultiply price hash. See here for details.
other_totalprice hashmultiply price hash. See here for details.
grand_totalprice hashmultiply price hash. See here for details.
shipping option hash Take note that the options shown will not have prices attached when a shipping address is not present. Also note that these are the options that are present for ALL items in a particular invoice.
fieldvaluedescription
namestringThe shipping method name (Courier, Meet-up, International, etc)
idstringThe id of the shipping method (domestic_courier, meetup, international, etc)
has_insurancebooleanshows whether or not this method allows for insurance
insurance_priceprice hashmultiply price hash. See here for details. Not present when has_insurance is false.
priceprice hashmultiply price hash. See here for details. Not present when address is missing.
enabledbooleanIf a shipping address is present and this method supports that shipping address or if a shipping address is not present for this invoice, this will be true. Otherwise, this field is false.
errorstringIf not enabled, this will contain the reason why
shipping address hash
fieldvaluedescription
idnumeric idunique address id for this user
namestringname on the address
address1stringaddress line 1
address2stringoptional address line 2
country_codestring2 character country code
countrystringfull name of the country
citystringcity for the address
statestringstate/province for the address
zipstringzip code
phonestringphone number for the address
invoice status definitions
statusdescription
initAn invoice has this status when it is still in the shopping cart.
openAn invoice has this status when a custom flow order is initially created.
closedOnly orders in an open status, which implies custom flow only, can be closed by the seller in the Stock Room. Note that a new reply (either user or system-generated) added to an Invoice Model order in a Closed status automatically changes the status to open.
payment_invoicedCustom flow order without any pre-order item that has been invoiced.
payment_pendingA traditional flow order, or a custom flow order without any pre-order items, waiting on a bank deposit.
payment_unverifiedEither custom or additional flow order where user has claimed to have made a bank deposit for this invoice. Status will update to payment_complete once Multiply has verified payment.
payment_completeA traditional flow order, or a custom flow order without any pre-order items, where payment is complete.
downpayment_invoicedCustom flow order where down payment has been invoiced.
downpayment_pendingCustom flow order with pre-order items where down payment is waiting on a bank deposit.
downpayment_unverifiedCustom flow order with pre-order where user has claimed to have made a bank deposit for the downpayment on this invoice. Status will update to downpayment_complete once Multiply has verified payment.
downpayment_completeCustom flow order with pre-order items where down payment is complete.
final_payment_invoicedCustom flow order with pre-order items where final payment has been invoiced.
final_payment_pendingCustom flow order with pre-order items where final payment is waiting on bank deposit.
final_payment_unverifiedCustom flow order with pre-order items where user has claimed to have made a bank deposit for the final payment on this invoice. Status will update to final_payment_complete once Multiply has verified payment.
final_payment_completeCustom flow order with pre-order items where final payment is complete.
completeOnly invoices in either payment_complete or final_payment_complete status can be marked as complete by the seller in the Stock Room.
cancelledWhen a seller cancels an order due to lack of payment (i.e., bank deposit is never made) the status is set to cancelled.
abortedA cart where the buyer removes all items and never submits. The seller is never aware of orders in this status.

/api/cart_functions

POST http://namesty.multiply.com/api/cart_functions
required parameters
fieldvaluedescription
cart_functionupdate_quantity, remove_product, fetch_addresses, delete_address, save_address, set_address, set_shipping, set_courier_insurance, set_transaction_processor, verify_checkout, set_jne_insurance, or set_xend_insurancethe name of the function to perform on the shopping cart. See below for explanation of each function.
<response xmlns="http://multiply.com/api/0.1">
    <success>[true or false]</success>
    <error>[reason for failure]</error>
</response>
{
    "success": 0,
    "error": "invalid shipping processor"
}
cart function parameters by function

update_quantity

fieldvaluedescription
invoice_keymultiply item_keykey of the invoice that you are adding to
multiply_catalog_idnumeric idthe numeric multiply catalog id of the product
new_quantitynumberthe new quantity of this product in the cart
response
fieldvaluedescription
successbooleanwhether or not the call was successful
errorstringif success=false, this field will tell you why

remove_product

fieldvaluedescription
invoice_keymultiply item_keykey of the invoice that you are adding to
multiply_catalog_idnumeric idthe numeric multiply catalog id of the product
invoice_keymultiply item keythe unique multiply item key for the invoice that contains the product
response
fieldvaluedescription
successbooleanwhether or not the call was successful
errorstringif success=false, this field will tell you why

fetch_addresses

fieldvaluedescription
invoice_keymultiply item keythe unique multiply item key for the invoice that contains the product
response
fieldvaluedescription
addressesarrayan array of addresses. addresses have the same fields that you pass to the save address function with an additional address_id field

delete_address

fieldvaluedescription
invoice_keymultiply item keythe unique multiply item key for the invoice that contains the product
delete_address_idnumeric idthe id of the address to delete
response
fieldvaluedescription
addressesarrayan array of addresses. addresses have the same fields that you pass to the save address function with an additional address_id field. You will notice that the deleted address is no longer in this list.

save_address

fieldvaluedescription
invoice_keymultiply item keythe unique multiply item key for the invoice that contains the product
address_idnumberoptional numeric address id. If passed as a parameter, the address currently referenced by this id will be overwritten with the new address.
fullnamestringthe full name of the person at this address
address_1stringthe first line of the address
address_2stringoptional second line of the address
country2 character stringvalid country code
citystringaddress city
statestringvalid state or province for the country
zipstringzip code for the address
phonestringphone number for the address
response
fieldvaluedescription
successbooleanwhether or not the call was successful
address_idnumeric_idthe numeric id of the newly created address
errorstringif success=false, this field will tell you why

set_address

fieldvaluedescription
invoice_keymultiply item keythe unique multiply item key for the invoice that contains the product
address_idnumeric idthe id of the address
response
fieldvaluedescription
successbooleanwhether or not the call was successful
errorstringif success=false, this field will tell you why

set_shipping

fieldvaluedescription
invoice_keymultiply item keythe unique multiply item key for the invoice that contains the product
shipping_methodstringthe shipping method id. Valid shipping methods can be found by looking at the shipping options of the invoice.
carrierstringrequired when shipping_method is domestic_mail
response
fieldvaluedescription
successbooleanwhether or not the call was successful
errorstringif success=false, this field will tell you why

set_courier_insurance

fieldvaluedescription
has_insurancebooleanwhether or not courier insurance is set. Only available when shipping_method is domestic_courier and insurance is available or shipping method is jne or shipping method is xend.
response
fieldvaluedescription
successbooleanwhether or not the call was successful
errorstringif success=false, this field will tell you why

set_transaction_processor

fieldvaluedescription
processor_idstringthe id of the bank
response
fieldvaluedescription
successbooleanwhether or not the call was successful
errorstringif success=false, this field will tell you why

verify_checkout

fieldvaluedescription
none
response
fieldvaluedescription
successbooleanwhether or not the call was successful
errorstringif success=false, this field will tell you why

/api/checkout

POST http://namesty.multiply.com/api/checkout?password=test
required parameters
fieldvaluedescription
none
<response xmlns="http://multiply.com/api/0.1">
    <invoice_keys>
	<invoice_key>j54h23</invoice_key>
	...
    </invoice_keys>
</response>
{
    "name":"invoice_keys",
    "value":[
	{"value":"j54h23","name":"invoice_key"},
	...
    ]
}

/api/invoice

POST http://namesty.multiply.com/api/invoice?password=test
required parameters
fieldvaluedescription
invoice_keystringinvoice item key
<response xmlns="http://multiply.com/api/0.1">
    <invoice>
	...
    </invoice>
</response>
{
    "name":"invoice",
    "value": {
	...
    }
}

/api/obtain_access_token

POST https://multiply.com/api/obtain_access_token?password=test
required parameters
fieldvaluedescription
user_idstringthe user's id
passwordstringthe user's password
<response xmlns="http://multiply.com/api/0.1">
    <access_token>[access token string]</access_token>
</response>
{"name":"access_token","value":"[access token string]"}