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¶m1=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
field data type description
message_id multiply content id $user_id:$type:$sequence_id unique identifier of the message; used to request full version or to edit
subject text subject of the message
summary text summary of the actual message
type journal, photos, video, music, recipes, reviews, market, calendar, notes, guestbook, links or pms type of post
html html html representation of the post
all other message fields
field data type description
owner_id multiply user id user_id of the owner of the content.
author_id multiply user id user who authored the post; this might be distinct from the owner in that the owner can be a group
headshot url 100x100 headshot of author
thumbnail url thumbnail if type is photos or video
content_type_icon url 16x16 gif of the content type's icon
num_photos integer number of photos associated with message
num_replies integer number of replies to the message
replies_string string nicely formatted string indicated the number of replies, the number since last read, wand who made the reply
is_up_to_date 1|0 user has read the latest reply to the message
is_read 1|0 true is the user has read this message
is_subscribed 1|0 user has subscribed to receive email alerts for this message
is_sticky 1|0 user has flagged the message
first_unread_content_timestamp seconds since epoch timestamp of the first unread content of the post; this could be the post itself or a reply the user has not yet seen
content_for html human readable description of who the content is for, provided that the author of the messsage is the requesting uid.
rating 1-5 only used in reviews; how many stars out of five
last_read_timestamp seconds since epoch timestamp when the message was last read by the user
latest_reply_user_id multiply user id user that last replied to the message
num_replies_at_last_read integer number of replies when the user last read
created seconds since epoch timestamp when the message was created
start_pretty multiply pretty date format only used for calendar events; when the event starts
end_pretty multiply pretty date format only 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
field value description
headshot url url for user's headshot
name text user's display name
possessive_name text localized string to indicate ownership
relationship text relationship of authenticated user to requested user
email text email address of user
address string address of user
is_group 0|1 set to 1 if requested user_id is a group
num_contacts integer number of contacts user has
num_calendar integer number of calendars posted by user
num_market integer number of market items posted by user
num_photos interger number of photo albums posted by user
num_groups integer number of groups user belongs to
num_reviews integer number of reviews posted by user
num_recipes integer number of recipes posted by user
num_notes integer number of notes posted by user
num_video integer number of videos posted by user
num_music integer number of playlists posted by user
num_journal integer number or blog entries posted by user
num_links integer number of links posted by user
guestbook_replies integer number 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
field value description
type journal, photos, video, music, recipes, reviews, market, calendar, notes, guestbook, links or pms type of post
subject free form text with some limitations on css/javascript subject of post
body free form text with some limitations on css/javascript body of post
tags csv list tags
acl "everyone", "network" or "contacts" for posting to user accounts; "group:group-id " to post to a group access 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_replies 0|1 set to 1 to disallow replies to a post
no_orders 0|1 do not allow other people to use media in post to place photo print orders
no_message_board 0|1 set to 1 to prevent post from being published to the message board
cp_facebook 0|1 if set to 1, will crosspost to user's facebook account
cp_twitter 0|1 if 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
field value description
item_key multiply item_key unique identifier of item (i.e. foonasty:photos:12)
num_photos integer; defaults to 20 required if uploading more than 20 photos at a time
photoN photo data Where 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_subject free form text caption for photo N
photoN_body free form text description of photo N
to_media_locker boolean Default: 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_id string required 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
field value description
video_id numeric video_id; combined with user id is a unique identifier for any given video if present, the request will edit the subject and body for the video matching video_id.
video video data Video 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
field value description
item_id numeric item_id; combined with user id is a unique identifier for any given journal entry if present, the request will edit the journal matching video_id.
attachment_N File(s) to attach. Where N is an integer between 0 and 9. Attachments must be attached as a form-data field.
poll_question free form text if present, attaches a poll to this journal entry
poll_answer_N free form text Where 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
field value description
item_key multiply item_key unique identifier of item
subject text subject of the item
summary text first 100 characters of body of post
num_replies integer number of replies to post
num_photos integer number of photos available with item
thumbnails multiply thumbnail array see thumbnails section for complete description; any thumbail image associated with the item, such as a cover photo or first frame of video
tags csv values comma 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
field value description
subject text subject of the item
body text body of the item; if recipe is the description
author_id multiply user_id author_id for the item
author_name localized first name, last name author's real name
acl_description text plain english description for the items access control list
created_date multiply date format human readable creation time for item
created_date_unix unix timestamp creation time in seconds since the epoch
num_replies integer number 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
field value description
src url url of the largest available size
item_key multiply item_key unique identifier of the photo
height integer pixel height of image
width integer pixel width of image
caption text caption
description text full description of photo, often undefined by the user
num_replies integer number of replies to this particular photo
thumbnails multiply thumbnail array see thumbnails section for complete description; listing of all available sizes of the photo
videos
additional video fields
field value description
thumbnails multiply thumbnail array cover photo for the video, often the first frame.
iphone_src url url for iphone compatible video stream
src url url for video stream
height integer pixel height of video
width integer pixel 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
field value description
src url url for the song stream
title text song title
artist text song artist
album text song album
calendar
additional calendar fields
field value description
start_date yyyymmdd start date for the event
start_time hh:mm start time for the event
end_date yyyymmdd end date for the event
end_time hh:mm end time for the event
location text location of the event
reviews
additional review fields
field value description
category text category - for category "Books" this will be the genre; "Computers & Electronics": Product Type; "Movies": Genre; "Music": Genre; "Restaurants": Cuisine; "Video Games": Genre
console text gaming console; only defined for reviews with category "Video Games"
book_author text book author; only defined for reviews with category "Books"
artist text artist; only defined for reviews with category "Music"
manufacturer text manufacturer of item; only defined for reviews with category "Computers & Electronics"
location text location of restaurant; only defined for reviews with category "Restaurants"
pictures multiply picture array pictures attached by user
links
additional links fields
market
additional market fields
category text category of item for sale
price text price of item; may be non-numeric
buy_or_sell buy|sell buy indicates user wants to buy item described; sell means it is for sale
pictures multiply picture array pictures attached by user
recipes
additional recipe fields
category text food type of recipe, i.e. "appetizer", "baking", etc.
style text style of food
special_considerations text special consideration, such as "kosher, "kids", etc.
servings text number of servings, although can be non-numeric
ingredients text ingredients
directions text directions
pictures multiply picture array pictures 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
field value description
src url url of the largest available size
height integer pixel height of image
width integer pixel width of image
thumbnails multiply thumbnail array all other available sizes of the image
multiply thumbnail array
A thumbnail array contains one or more thumbnail hashes with the following fields:
thumbnail hash
field value description
src url url of the image
height integer pixel height of image
width integer pixel 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
field value description
item_key multiply item_key All replies must reference an item key
reply_to integer reply_id this reply is in response to (optional)
body free form text with some limitations on css/javascript body of reply
quote text portion of parent reply or item body to quote
Review Parameters
field value description
rating integer 1-5 If 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
field value description
first_name string first name
last_name string last name
user_id multiply user id up to 20 character unique identifier
headshot url url to 100x100 gif of user's headshot
user_site url url 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
field value description
inqtype report_user, report_group, default, press, sales, bizdev the inquiry type
issue billing, marketplace, spam, content, copyright, other, groups this field defines what the issue is concerning
subject free form text message subject
body free form text message body
email email address this 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_id multiply group id this 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
field value description
none
<response xmlns="http://multiply.com/api/0.1">
<faqs>
<faq>...</faq>
...
</faqs>
</response>
{
"faqs": [
{
"name":"faq",
"value": {
"category":"General",
"id":"10",
...
}
}
]
}
faq hash
field value description
category string category of the faq
id numeric numeric id of the faq
question string the faq
answer string the answer to the faq
/api/about
GET http://namesty.multiply.com/api/about
parameters
field value description
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
field value description
country PH, ID Required 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
field value description
message_id multiply content id $user_id:$type:$sequence_id unique identifier of the message; used to request full version or to edit
subject text subject of the product listing
owner_id multiply user id the owner of the product listing
author_id multiply user id the 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.
thumbnail url a 160x120 thumbnail of the product
verified_seller_type business, personal, trusted, none the level of verification that this seller has within Multiply's system
headshot url 100x100 headshot of author
content_type_icon url 16x16 gif of the content type's icon
shop_name string the shop's name
price price hash multiply price hash. See here for details.
liteseller hash
field value description
id multiply user id the seller's multiply id
verified_seller_type business, personal, trusted, none the level of verification that this seller has within Multiply's system
headshot url 100x100 headshot of author
shop_name string the shop's name
price hash
amount number price amount
currency string currency of the listing
pretty string properly formatted price
/api/categories
GET http://namesty.multiply.com/api/categories
parameters
field value description
none
<response xmlns="http://multiply.com/api/0.1">
<categories>
<category>...</category>
...
</categories>
</response>
{
"categories":[
{
"name":"category",
"value": {
...
}
},
...
]
}
category hash
field value description
id string the category id
numeric_id number the category's numeric id
label string the full category name
subcategories array array of subcategories
subcategory hash
field value description
id number the subcategory id
label string the full category name
/api/productlistings
GET http://namesty.multiply.com/api/productlistings
parameters
field value description
category_id numeric id required, the top level numeric category id
family numeric id optional family/subcategory id
genre numeric id optional genre/subsubcategory id
query string optional query string for search purposes
sort default_sort desc, date_posted, subject, subject reverse optional sort preference
trusted_only 1, 0 optional, specify whether or not to show only trusted sellers (default is to show all)
start numeric starting point optional, specify where to start pagination through results
items_per_page number number 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
field value description
category_id string required, the top level category id
subcategory_id numeric id optional subcategory id
query string optional query string for search purposes
sort name, name desc, date, verified desc optional sort preference (verified desc is default)
trusted_only 1, 0 optional, specify whether or not to show only trusted sellers (default is to show all)
start numeric starting point optional, 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
field value description
seller_id multiply user id the id of the seller
multiply_catalog_id numeric id the numeric multiply catalog id
quantity number the 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
field value description
seller_id multiply user id the id of the seller
multiply_catalog_id numeric id the numeric multiply catalog id
quantity number the quantity to be added to the shopping cart
body string message 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
field value description
flow custom, traditional optional, 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
field value description
item_key multiply item_key unique identifier of invoice
status multiply invoice status the status of the invoice. See here for details.
shipping_options shipping options array An array of available shipping options. See here for details on the shipping option hash.
current_shipping_settings shipping_settings shipping settings hash.
shipping_address shipping address hash hash of current address selected for shipping. See here for details.
seller_id multiply user_id the id of the seller
shop_name string seller's shop name
flow traditional or custom the type of invoice that this is
totals totals array array of total hash items. See here for details.
invoice_items invoice_items arrayarray of invoice items. See below.
invoice_item hash
field value description
multiply_catalog_id numeric id numeric id corresponding to the item's multiply catalog id.
name string name of the item
option_1_name string name of option 1 if it exists
option_1_value string value of option 1 if it exists
option_2_name string name of option 2 if it exists
option_2_value string value of option 2 if it exists
quantity number the quantity of this item in the invoice
totals totals array array of total hash items. See here for details.
parent_key multiply item_key unique identifier of the seller's product
listing_key multiply item_key unique identifier of the seller's product listing that contains this product
description string description of the item. Usually, only present when dealing with items in a custom flow invoice.
bank hash
field value description
id string the id of the bank
name string the full name of the bank
short_name string the short name of the bank
supported_countries array of strings array containing country codes (eg 'PH', 'ID') that are supported by the bank
dispersal_enabled boolean shows whether or not dispersals are enabled
afts_enabled boolean show whether or not automatic funds transfer is enabled
digits_in_account_number array an array with 2 elements, the minimum and maximum number of digits allowed in a valid account number
logo_url url url of the bank's logo
total hash
field value description
item_total price hash multiply price hash. See here for details.
shipping_total price hash multiply price hash. See here for details.
other_total price hash multiply price hash. See here for details.
grand_total price hash multiply 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.
field value description
name string The shipping method name (Courier, Meet-up, International, etc)
id string The id of the shipping method (domestic_courier, meetup, international, etc)
has_insurance boolean shows whether or not this method allows for insurance
insurance_price price hash multiply price hash. See here for details. Not present when has_insurance is false.
price price hash multiply price hash. See here for details. Not present when address is missing.
enabled boolean If 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.
error string If not enabled, this will contain the reason why
shipping address hash
field value description
id numeric id unique address id for this user
name string name on the address
address1 string address line 1
address2 string optional address line 2
country_code string 2 character country code
country string full name of the country
city string city for the address
state string state/province for the address
zip string zip code
phone string phone number for the address
invoice status definitions
status description
init An invoice has this status when it is still in the shopping cart.
open An invoice has this status when a custom flow order is initially created.
closed Only 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_invoiced Custom flow order without any pre-order item that has been invoiced.
payment_pending A traditional flow order, or a custom flow order without any pre-order items, waiting on a bank deposit.
payment_unverified Either 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_complete A traditional flow order, or a custom flow order without any pre-order items, where payment is complete.
downpayment_invoiced Custom flow order where down payment has been invoiced.
downpayment_pending Custom flow order with pre-order items where down payment is waiting on a bank deposit.
downpayment_unverified Custom 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_complete Custom flow order with pre-order items where down payment is complete.
final_payment_invoiced Custom flow order with pre-order items where final payment has been invoiced.
final_payment_pending Custom flow order with pre-order items where final payment is waiting on bank deposit.
final_payment_unverified Custom 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_complete Custom flow order with pre-order items where final payment is complete.
complete Only invoices in either payment_complete or final_payment_complete status can be marked as complete by the seller in the Stock Room.
cancelled When a seller cancels an order due to lack of payment (i.e., bank deposit is never made) the status is set to cancelled.
aborted A 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
field value description
cart_function update_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_insurance the 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
field value description
invoice_key multiply item_key key of the invoice that you are adding to
multiply_catalog_id numeric id the numeric multiply catalog id of the product
new_quantity number the new quantity of this product in the cart
response
field value description
success boolean whether or not the call was successful
error string if success=false, this field will tell you why
remove_product
field value description
invoice_key multiply item_key key of the invoice that you are adding to
multiply_catalog_id numeric id the numeric multiply catalog id of the product
invoice_key multiply item key the unique multiply item key for the invoice that contains the product
response
field value description
success boolean whether or not the call was successful
error string if success=false, this field will tell you why
fetch_addresses
field value description
invoice_key multiply item key the unique multiply item key for the invoice that contains the product
response
field value description
addresses array an array of addresses. addresses have the same fields that you pass to the save address function with an additional address_id field
delete_address
field value description
invoice_key multiply item key the unique multiply item key for the invoice that contains the product
delete_address_id numeric id the id of the address to delete
response
field value description
addresses array an 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
field value description
invoice_key multiply item key the unique multiply item key for the invoice that contains the product
address_id number optional numeric address id. If passed as a parameter, the address currently referenced by this id will be overwritten with the new address.
fullname string the full name of the person at this address
address_1 string the first line of the address
address_2 string optional second line of the address
country 2 character string valid country code
city string address city
state string valid state or province for the country
zip string zip code for the address
phone string phone number for the address
response
field value description
success boolean whether or not the call was successful
address_id numeric_id the numeric id of the newly created address
error string if success=false, this field will tell you why
set_address
field value description
invoice_key multiply item key the unique multiply item key for the invoice that contains the product
address_id numeric id the id of the address
response
field value description
success boolean whether or not the call was successful
error string if success=false, this field will tell you why
set_shipping
field value description
invoice_key multiply item key the unique multiply item key for the invoice that contains the product
shipping_method string the shipping method id. Valid shipping methods can be found by looking at the shipping options of the invoice.
carrier string required when shipping_method is domestic_mail
response
field value description
success boolean whether or not the call was successful
error string if success=false, this field will tell you why
set_courier_insurance
field value description
has_insurance boolean whether 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
field value description
success boolean whether or not the call was successful
error string if success=false, this field will tell you why
set_transaction_processor
field value description
processor_id string the id of the bank
response
field value description
success boolean whether or not the call was successful
error string if success=false, this field will tell you why
verify_checkout
field value description
none
response
field value description
success boolean whether or not the call was successful
error string if success=false, this field will tell you why
/api/checkout
POST http://namesty.multiply.com/api/checkout?password=test
required parameters
field value description
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
field value description
invoice_key string invoice 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
field value description
user_id string the user's id
password string the 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]"}