One of the hidden gems in the Keap suite of software is the API. The Keap API enables third-party applications to communicate with Keap and process, update, and destroy data for a wide variety of uses. You can do things like manage contacts, place orders, send messages, and most other things available for use in the Keap software.
The Keap API uses XML implemented as encoded XML-RPC as its communication method for both sending and receiving requests.
All requests made to the Infusionsoft XML-RPC API will be an HTTP POST to https://api.infusionsoft.com/crm/xmlrpc/v1
You can authenticate your request either with a Personal Access Token/Service Account Key (if a first-party developer) or an OAuth2 Bearer Token (if a third-party integration).
Keap officially supports the PHP library we created in-house. In addition, there are a number of third party helper libraries created by members of the community that may be useful to you. Many of these libraries are open source, so we encourage you to get into contact with their creators if you find bugs or have ideas for feature requests.
See Available Helper Libraries
Additionally, we have created a number of sample files that implement the Keap API in many languages, including ASP, .Net, Java, Perl, PHP, Python, and Ruby. You can try those out for yourself by downloading all samples on Github (zip, 2.5mb)
If you're interested in implementing the API in a custom application, or a language not shown above, we have created documentation to help you create the raw XML calls, and understand the XML replies. In this way Keap API is language agnostic and can tie in with whatever language you'd like to use.
See Available Code Samples
The Keap API uses a fairly standard implementation of OAuth 2.0 in order to provide authentication to all API endpoints. In the past, the Infusionsoft API has relied on a simple token based system; while those tokens will remain active until some date in the future for the XML-RPC API, any new implementations and all requests to the REST API will be required to use OAuth 2.0. Rather than re-explain OAuth again, it is more useful to provide a series of documents that have already been created and demonstrate the OAuth protocol, how to implement it in your code, how to troubleshoot, and how to ease development. Before that, though, it is important to have the authorization destinations and necessary details.
The first step in the OAuth flow is to redirect the user to Keap in order to authorize your application for access. The URL you generate here is where you first send your user in order for them to log in and continue the OAuth flow.
Redirect users to https://signin.infusionsoft.com/app/oauth/authorize
along with the required parameters in order to start the OAuth exchange.
Application client ID. Found in the developer portal
This is the callback URL that Infusionsoft will redirect the users back to after authorization (must be HTTPS). The redirect_uri must be a registered URL in your application. We will not redirect users to any other URLs, so it is important this be properly setup before any authentication attempts.
The desired grant type, as per the OAuth 2.0 spec. The only current valid value is response_type=code Defaults to code
The scopes required by your application. The only current valid value is scope=full Defaults to full
Once the user has logged into their Keap account and authorized your application, they will be redirected back to your application at your specified redirect_uri with a code URL parameter that is used to request an access token.
Using the code
URL parameter returned from the authorization callback, your application can request an access token and refresh token from Keap.
Requesting an access token requires you to POST
to https://api.infusionsoft.com/token
Your application's client ID. Found in the developer portal
Your application's client secret. Found in the developer portal
The code returned when the user was redirected back to your application
The desired grant type, as per the OAuth 2.0 spec. The only current valid value is grant_type=authorization_code Defaults to authorization_code
The redirect URL from the original authorization request
The access_token
is the token you will use to authenticate requests to the Keap API, and it expires after the time in the expires_in
field (in seconds). In order to get a new valid access token after one has expired, you must use the refresh_token
to request a new access token.
After your access token expires, you'll use the refresh token that was provided when your access token was initially granted to request a new access token.
Note: Once a Refresh Token is used to receive a new Access Token, you will be returned a new Refresh Token as well, which will need to be persisted in order to request the next access token.
Refreshing an access token requires you to POST
to https://api.infusionsoft.com/token
The desired grant type, as per the OAuth 2.0 spec. The only current valid value is refresh_token
Defaults to refresh_token
The refresh token provided when the most recent access_token
was granted
The word "Basic" concatenated with a base64 encoded string of your client_id
, a colon, and your client_secret
passed via the Authorization
header.
Example pseudo code: 'Basic ' + base64_encode(CLIENT_ID + ':' + CLIENT_SECRET)
Provides a new access_token
that you will use to authenticate subsequent requests to the Infusionsoft API. Like the originally granted token, this expires after the amount of time in the expires_in
field (in seconds). You must use the newly provided refresh_token
to request a subsequent new access token.
Make sure to also store the new refresh token every time you request and store a new access token.
The Affiliate Service is used to pull commission data and activities for affiliates. With this service, you have access to Clawbacks, Commissions, Payouts, Running Totals, and the Activity Summary. The methods in the Affiliate Service mirror the reports produced inside Infusionsoft. To manage affiliate information (ie Name, Phone, etc.) you will need to use the DataService.
Retrieves all clawed back commissions for a particular affiliate. Claw backs typically occur when an order has been refunded to the customer.
Your Infusionsoft API key
The Id number for the affiliate record you would like the claw backs for
The starting date for the date range which you would like affiliate claw backs for
The ending date for the date range which you would like the affiliate claw backs for
APIAffiliateService.affClawbacks
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIAffiliateService.affClawbacks</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>affiliateId</int></value>
</param>
<param>
<value><dateTime.iso8601>startDate</dateTime.iso8601></value>
</param>
<param>
<value><dateTime.iso8601>endDate</dateTime.iso8601></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><array><data/></array></value>
</param>
</params>
</methodResponse>
Retrieves all commissions for a specific affiliate within a date range.
Your Infusionsoft API key
The Id number for the affiliate record you would like the commissions for
The starting date for the date range which you would like affiliate commissions for
The ending date for the date range which you would like the affiliate commissions for
APIAffiliateService.affCommissions
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIAffiliateService.affCommissions</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>affiliateId</int></value>
</param>
<param>
<value><dateTime.iso8601>startDate</dateTime.iso8601></value>
</param>
<param>
<value><dateTime.iso8601>endDate</dateTime.iso8601></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><array><data/></array></value>
</param>
</params>
</methodResponse>
Retrieves all payments for a specific affiliate within a date range
Your Infusionsoft API key
The Id number for the affiliate record you would like the claw backs for
The starting date for the date range which you would like affiliate payments for
The ending date for the date range which you would like the affiliate payments for
APIAffiliateService.affPayouts
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIAffiliateService.affPayouts</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>affiliateId</int></value>
</param>
<param>
<value><dateTime.iso8601>startDate</dateTime.iso8601></value>
</param>
<param>
<value><dateTime.iso8601>endDate</dateTime.iso8601></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><array><data/></array></value>
</param>
</params>
</methodResponse>
Retrieves a list of the redirect links for the specified Affiliate.
Your Infusionsoft API key
The Id number for the affiliate record you would like the redirect links for
AffiliateService.getRedirectLinksForAffiliate
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>AffiliateService.getRedirectLinksForAffiliate</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>affiliateId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><array><data/></array></value>
</param>
</params>
</methodResponse>
Retrieves a summary of statistics for a list of affiliates.
Your Infusionsoft API key
An array of Affiliate Id numbers you would like stats for
The starting date for the date range which you would like affiliate stats for
The ending date for the date range which you would like the affiliate stats for
APIAffiliateService.affSummary
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIAffiliateService.affSummary</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><array>
<data>
<value><int>affList1</int></value>
<value><int>affList2</int></value>
<value><int>affList3</int></value>
</data>
</array></value>
</param>
<param>
<value><dateTime.iso8601>startDate</dateTime.iso8601></value>
</param>
<param>
<value><dateTime.iso8601>endDate</dateTime.iso8601></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>Clawbacks</name>
<value><double>0.0</double></value>
</member>
<member>
<name>AmountEarned</name>
<value><double>0.0</double></value>
</member>
<member>
<name>Balance</name>
<value>
<double>0.0</double></value>
</member>
<member>
<name>AffiliateId</name>
<value><i4>2</i4></value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>Clawbacks</name>
<value><double>0.0</double></value>
</member>
<member>
<name>AmountEarned</name>
<value><double>0.0</double></value>
</member>
<member>
<name>Balance</name>
<value><double>0.0</double></value>
</member>
<member>
<name>AffiliateId</name>
<value><i4>4</i4></value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>Clawbacks</name>
<value><double>0.0</double></value>
</member>
<member>
<name>AmountEarned</name>
<value><double>0.0</double></value>
</member>
<member>
<name>Balance</name>
<value><double>0.0</double></value>
</member>
<member>
<name>AffiliateId</name>
<value><i4>6</i4></value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
Retrieves the current balances for Amount Earned, Clawbacks, and Running Balance.
Your Infusionsoft API key
An integer array of the affiliate ID numbers that you would like balances for
APIAffiliateService.affRunningTotals
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIAffiliateService.affRunningTotals</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><array>
<data>
<value><int>affList1</int></value>
<value><int>affList2</int></value>
<value><int>affList3</int></value>
</data>
</array></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>Clawbacks</name>
<value><double>0.0</double></value>
</member>
<member>
<name>AmountEarned</name>
<value><double>0.5483</double></value>
</member>
<member>
<name>Payments</name>
<value><double>0.0</double></value>
</member>
<member>
<name>RunningBalance</name>
<value><double>0.5483</double></value>
</member>
<member>
<name>AffiliateId</name>
<value><i4>2</i4></value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>Clawbacks</name>
<value><double>0.0</double></value>
</member>
<member>
<name>AmountEarned</name>
<value><double>0.0</double></value>
</member>
<member>
<name>Payments</name>
<value><double>0.0</double></value>
</member>
<member>
<name>RunningBalance</name>
<value><double>=0.0</double></value>
</member>
<member>
<name>AffiliateId</name>
<value><i4>4</i4></value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>Clawbacks</name>
<value><double>0.0</double></value>
</member>
<member>
<name>AmountEarned</name>
<value><double>0.0</double></value>
</member>
<member>
<name>Payments</name>
<value><double>0.0</double></value>
</member>
<member>
<name>RunningBalance</name>
<value><double>0.0</double></value>
</member>
<member>
<name>AffiliateId</name>
<value><i4>6</i4></value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
The Affiliate Program Service allows access to some of features in the Referral Partner Center
Retrieves a list of all of the Affiliate Programs that are in the application.
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>AffiliateProgramService.getAffiliatePrograms</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<fault>
<value>
<struct>
<member>
</member>
</struct>
</value>
</fault>
</methodResponse>
Retrieves a list of all of the affiliates with their contact data for the specified program. This includes all of the custom fields defined for the contact and affiliate records that are retrieved.
Your Infusionsoft API key
The Referral Partner Commission Program ID
AffiliateProgramService.getAffiliatesByProgram
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>AffiliateProgramService.getAffiliatesByProgram</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>programId</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
</param>
</params>
</methodResponse>
Retrieves a list of all of the Affiliate Programs for the Affiliate specified.
Your Infusionsoft API key
The affiliate you want to get the programs for
AffiliateProgramService.getProgramsForAffiliate
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>AffiliateProgramService.getProgramsForAffiliate</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><i4>affiliateId</i4></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name></name>
<value></value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Retrieves a list of all of the resources that are associated to the Affiliate Program specified.
Your Infusionsoft API key
The commission program you want resources from
AffiliateProgramService.getResourcesForAffiliateProgram
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>AffiliateProgramService.getResourcesForAffiliateProgram</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>programId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
</param>
</params>
</methodResponse>
The Contact service is used to manage contacts. You can add, update and find contacts in addition to managing follow up sequences, tags and action sets.
Searches for a contact by Name or Email Address
Your Infusionsoft API key
The name or email to search by
The number of records you would like returned
The page number of results
ContactService.findByNameOrEmail
<methodCall>
<methodName>ContactService.findByNameOrEmail</methodName>
<params>
<param>
<value><string>dummyKey</string></value>
</param>
<param>
<value><string>name@email.com</string></value>
</param>
<param>
<value><int>10</int></value>
</param>
<param>
<value><int>0</int></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>Email</name>
<value>name@email.com</value>
</member>
<member>
<name>FirstName</name>
<value>thefirstname</value>
</member>
<member>
<name>Id</name>
<value>
<i4>1</i4>
</value>
</member>
<member>
<name>LastName</name>
<value>thelastname</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
Creates a new contact record from the data passed in the associative array.
Your Infusionsoft API key
An associative array of the data for this new contact record. The array key is the field name to store the value within
ContactService.add
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.add</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><struct>
<member><name>FirstName</name>
<value><string>John</string></value>
</member>
<member><name>LastName</name>
<value><string>Doe</string></value>
</member>
<member><name>Email</name>
<value><string>there_he_go@itsjohndoe.com</string></value>
</member>
</struct></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>contactIDNumber</i4></value>
</param>
</params>
</methodResponse>
Adds or updates a contact record based on matching data
Your Infusionsoft API key
An associative array of the data for this new contact record. The array key is the field name to store the value within.
Determines how to consider a duplicate record. Options are: 'Email', 'EmailAndName', or 'EmailAndNameAndCompany'
ContactService.addWithDupCheck
<?xml version="1.0"?>
<methodCall>
<methodName>ContactService.addWithDupCheck</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value>
<struct>
<member>
<name>FirstName</name>
<value><string>John</string></value>
</member>
<member>
<name>LastName</name>
<value><string>Doe</string></value>
</member>
<member>
<name>Email</name>
<value><string>there_he_go@itsjohndoe.com</string></value>
</member>
</struct>
</value>
</param>
<param>
<value><string>EmailAndName</string></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<i4>40</i4>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
The Id number of the contact you would like to load data from
An array of strings where each string is the database field name of the field you would like sent back
ContactService.load
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.load</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactIDNumber</int></value>
</param>
<param>
<value><array>
<data>
<value><string>Id</string></value>
<value><string>FirstName</string></value>
<value><string>LastName</string></value>
</data>
</array></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>FirstName</name>
<value>Ron</value>
</member>
<member>
<name>Id</name>
<value><i4>18</i4></value>
</member>
<member>
<name>LastName</name>
<value>Doe</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Updates a contact's information
Your Infusionsoft API key
The ID of the contact you wish to update
An associate array of the data for this contact. The array keys should be the field names you wish to update.
ContactService.update
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.update</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactIDNumber</int></value>
</param>
<param>
<value><struct>
<member><name>fieldToUpdate1</name>
<value><string>field1</string></value>
</member>
<member><name>fieldToUpdate2</name>
<value><string>field2</string></value>
</member>
</struct></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>contactIDNumber</i4></value>
</param>
</params>
</methodResponse>
Merges two contacts into a single record.
Your Infusionsoft API key
The contact ID number you want to merge into
The contact ID of the duplicate contact you would like to merge
ContactService.merge
<?xml version="1.0"?>
<methodCall>
<methodName>ContactService.merge</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactId</int></value>
</param>
<param>
<value><int>duplicateContactId</int></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<boolean>1</boolean>
</value>
</param>
</params>
</methodResponse>
Retrieves all contacts with the given email address. This searches the Email, Email 2, and Email 3 fields
Your Infusionsoft API key
The email address to search with
The contact fields you would like returned
ContactService.findByEmail
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.findByEmail</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>there_he_go@itsjohndoe.com</string></value>
</param>
<param>
<value><array>
<data>
<value><string>Id</string></value>
<value><string>FirstName</string></value>
<value><string>LastName</string></value>
</data>
</array></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>FirstName</name>
<value>John</value>
</member>
<member>
<name>Id</name>
<value><i4>16</i4></value>
</member>
<member>
<name>LastName</name>
<value>Doe</value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>FirstName</name>
<value>Ron</value>
</member>
<member>
<name>Id</name>
<value><i4>18</i4></value>
</member>
<member>
<name>LastName</name>
<value>Doe</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
Adds a tag to a contact record (tags were originally called "groups").
Your Infusionsoft API key
The ID of the contact you would like to add to a group
The ID of the tag to add to the contact
ContactService.addToGroup
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.addToGroup</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactIDNumber</int></value>
</param>
<param>
<value><int>tagIDNumber</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Removes a tag from a contact (tags were originally called groups).
Your Infusionsoft API key
The Id number of the contact you would like to remove the tag from
The tag ID. This is found on the Setup > Tags menu
ContactService.removeFromGroup
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.removeFromGroup</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactIDNumber</int></value>
</param>
<param>
<value><int>tagIDNumber</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Adds a contact to a follow-up sequence (campaigns were the original name of follow-up sequences).
Your Infusionsoft API key
The ID of the contact you would like to start the follow-up sequence for.
The ID of the follow-up sequence to start the contact on.
ContactService.addToCampaign
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.addToCampaign</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactIDNumber</int></value>
</param>
<param>
<value><int>campaignIDNumber</int></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<boolean>0</boolean>
</value>
</param>
</params>
</methodResponse>
Returns the Id number of the next follow-up sequence step for the given contact
Your Infusionsoft API key
The Id number of the contact record you would like to get the next sequence step for
The follow-up sequence Id number you would like to get the next step for the given contact
ContactService.getNextCampaignStep
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.getNextCampaignStep</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactIDNumber</int></value>
</param>
<param>
<value><int>followUpSequenceId</int></value>
</param>
</params>
</methodCall>
Immediately performs the given follow-up sequence step for the given contacts.
Your Infusionsoft API key
An array of contact Id numbers you would like to reschedule the step for
The ID of the particular sequence step you would like to reschedule
ContactService.rescheduleCampaignStep
<?xml version="1.0"?>
<methodCall>
<methodName>ContactService.rescheduleCampaignStep</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><array>
<data>
<value><int>22</int></value>
<value><int>12</int></value>
<value><int>16</int></value>
</data>
</array></value>
</param>
<param>
<value><int>2</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<i4>
3
</i4>
</value>
</param>
</params>
</methodResponse>
Pauses a follow-up sequence for the given contact record
Your Infusionsoft API key
The Id number of the contact record you are pausing the sequence on
The follow-up sequence Id number
ContactService.pauseCampaign
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.pauseCampaign</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>22</int></value>
</param>
<param>
<value><int>2</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<boolean>
1
</boolean>
</value>
</param>
</params>
</methodResponse>
Resumes a follow-up sequence that has been stopped/paused for a given contact.
Your Infusionsoft API key
The ID of the contact you would like to resume the campaign for
The ID of the follow-up sequence to resume
ContactService.resumeCampaignForContact
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.resumeCampaignForContact</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactIDNumber</int></value>
</param>
<param>
<value><int>sequenceIDNumber</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Removes a follow-up sequence from a contact record
Your Infusionsoft API key
The Id number of the contact you want to remove the sequence from
The ID number of the campaign sequence you would like to remove the contact from
ContactService.removeFromCampaign
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.removeFromCampaign</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactIDNumber</int></value>
</param>
<param>
<value><int>campaignIDNumber</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<boolean>
1
</boolean>
</value>
</param>
</params>
</methodResponse>
This will link 2 contacts together using the specified link type.
Your Infusionsoft API Key
The first contact id to link
The second contact id to link
The link type
ContactService.linkContacts
<?xml version="1.0"?>
<methodCall>
<methodName>ContactService.linkContacts</methodName>
<params>
<param>
<value><string>privatekey</string></value>
</param>
<param>
<value><int>contactId1</int></value>
</param>
<param>
<value><int>contactId2</int></value>
</param>
<param>
<value><int>linkId</int></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><boolean>1</boolean></value></param></params></methodResponse>
Unlink contacts with a specific link type
Your Infusionsoft API Key
The first contact id you want to unlink
The second contact id you want to unlink
The Link type id
ContactService.unlinkContacts
<?xml version="1.0"?>
<methodCall>
<methodName>ContactService.unlinkContacts</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactId1</int></value>
</param>
<param>
<value><int>contactId2</int></value>
</param>
<param>
<value><int>linkTypeId</int></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<boolean>1</boolean>
</value>
</param>
</params>
</methodResponse>
This will list all linked contacts to the given contact id.
Your Infusionsoft API Key
The contact id you want to list all linked contacts for
ContactService.listLinkedContacts
<?xml version="1.0"?>
<methodCall>
<methodName>ContactService.listLinkedContacts</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactId</int></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data/>
</array>
</value>
</param>
</params>
</methodResponse>
Runs an action sequence on a given contact record
Your Infusionsoft API key
The ID of the contact record you want to run the action set on
The Id number of the action set you would like to run. This is found on the Setup > Action Sets menu
ContactService.runActionSequence
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ContactService.runActionSequence</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactIDNumber</int></value>
</param>
<param>
<value><int>1</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>
Action
</name>
<value>
Apply/Remove Tag
</value>
</member>
<member>
<name>
Message
</name>
<value>
tags applied to Contact: Nurture Subscriber
</value>
</member>
<member>
<name>
IsError
</name>
<value>
<boolean>
0
</boolean>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
The Data service is used to manipulate most data in Infusionsoft. It permits you to work on any available tables and has a wide range of uses. To manage affiliate information (i.e. Name, Phone, etc.) you will need to use the Data service.
Usable only with OAuth tokens, this retrieves information about the currently authenticated user.
Information about the authenticated user.
DataService.getUserInfo
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DataService.getUserInfo</methodName>
<params>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>globalUserId</name>
<value>123456</value>
</member>
<member>
<name>localUserId</name>
<value>123</value>
</member>
<member>
<name>appAlias</name>
<value>somealias123</value>
</member>
<member>
<name>appUrl</name>
<value>https://app.infusionsoft.com</value>
</member>
<member>
<name>displayName</name>
<value>Macho Man</value>
</member>
<member>
<name>casUsername</name>
<value>username</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Creates a new record in the specified Infusionsoft data table.
Your Infusionsoft API key
The Infusionsoft database table name
An associative array of data you would like stored in this new row in the table
Returns an integer representing the ID of the new record.
DataService.add
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DataService.add</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>Contact</string></value>
</param>
<param>
<value><struct>
<member><name>FirstName</name>
<value><string>John</string></value>
</member>
<member><name>LastName</name>
<value><string>Doe</string></value>
</member>
<member><name>Email</name>
<value><string>jdoe@email.com</string></value>
</member>
</struct></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>26</i4></value>
</param>
</params>
</methodResponse>
Loads the requested fields from a specified record.
Your Infusionsoft API key
Infusionsoft database table name from which you want to load a record
The unique Id number for the record you would like to load
The fields you would like returned from this row in the database
The specified fields for the given record.
DataService.load
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DataService.load</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>tableName</string></value>
</param>
<param>
<value><int>idNumber</int></value>
</param>
<param>
<value><array>
<data>
<value><string>field1</string></value>
<value><string>field2</string></value>
<value><string>field3</string></value>
</data>
</array></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>field1</name>
<value>field1Value</value>
</member>
<member>
<name>field2</name>
<value>field2Value</value>
</member>
<member>
<name>field3</name>
<value>field3Value</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Retrieves all records in a table that match the given term on a specific field.
Your Infusionsoft API key
The Infusionsoft database table name
The number of records you would like returned. The maximum possible is 1000.
The page of results you would like returned. The first page is page 0 (loop through pages to get more than 1000 records).
The name of the field to search on
The value stored in the field you would like to search on
The fields you would like returned from the table you are searching on
Returns one object per result found. The result will contain all fields specified in the request along with their corresponding value.
DataService.findByField
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DataService.findByField</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>tableName</string></value>
</param>
<param>
<value><int>limit</int></value>
</param>
<param>
<value><int>page</int></value>
</param>
<param>
<value><string>fieldName</string></value>
</param>
<param>
<value><string>fieldValue</string></value>
</param>
<param>
<value><array>
<data>
<value><string>returnField1</string></value>
</data>
</array></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><array><data/></array></value>
</param>
</params>
</methodResponse>
Performs a query across the given table based on the query data.
Your Infusionsoft API key
The table to query on
The number of records to retrieve, a maximum of 1000
Page of data to request (in case there are more than 1000 records).Paging starts with 0.
A struct containing query data. The key is the field to search on, and the value is the data to look for. % is the wild card operator and all searches are case insensitive.
Below is a list of operations you can do.
1. Greater Than ex: LastUpdated => '~>~ 2017-01-01 00:00:00'
2. Greater Than or Equal to ex: LastUpdated => '~>=~ 2017-01-01 00:00:00'
3. Less Than ex: LastUpdated => '~<~ 2017-01-01 00:00:00'
4. Less Than or Equal to ex: LastUpdated => '~<=~ 2017-01-01 00:00:00'
5. Not Equal to ex: Id => '~<>~123'
6. Is Null ex: FirstName => '~null~'
7. IN statement ex: Id => [1,2,3,4]**
*The raw xml, will need be html encoded for '>' and '<'
**IN statements only work on Id fields and are limited to 1000 ids
Fields the query should return
The field which the results should be sorted by
Changes the order of results to ascending instead of descending Defaults to false
Returns an array of objects, one per result found by the query. The object will contain all fields specified by the selected fields along with their corresponding values.
DataService.query
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DataService.query</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>tableName</string></value>
</param>
<param>
<value><int>limit</int></value>
</param>
<param>
<value><int>page</int></value>
</param>
<param>
<value><struct>
<member><name>queryField</name>
<value><string>query</string></value>
</member>
</struct></value>
</param>
<param>
<value><array>
<data>
<value><string>returnField1</string></value>
<value><string>returnField2</string></value>
</data>
</array></value>
</param>
<param>
<value><string>orderBy</string></value>
</param>
<param>
<value><boolean>ascending</boolean></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>FirstName</name>
<value>Chuck</value>
</member>
<member>
<name>Id</name>
<value><i4>22</i4></value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
Updates a specific record in the specified Infusionsoft data table.
Your Infusionsoft API key
The Infusionsoft database table name
The ID of the record to update
An associative array of data to update
Returns an ID of the successfully updated record.
DataService.update
<?xml version="1.0"?>
<methodCall>
<methodName>DataService.update</methodName>
<params>
<param>
<value>
<string>privateKey</string>
</value>
</param>
<param>
<value>
<string>Table</string>
</value>
</param>
<param>
<value>
<int>Id of record</int>
</value>
</param>
<param>
<value>
<struct>
<member>
<name>FieldName</name>
<value>
<string>Value you are updating to</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>26</i4></value>
</param>
</params>
</methodResponse>
Deletes the specified record in the given table from the database
Your Infusionsoft API key
The table you would like to delete the record from
The ID of the record to delete
Returns a boolean true if successful; false otherwise.
DataService.delete
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DataService.delete</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>tableName</string></value>
</param>
<param>
<value><int>idNumberToDelete</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Performs a query across the given table based on the query data and returns the count of records.
Your Infusionsoft API key
The table to count the records on
A struct containing query data. The key is the field to search on, and the value is the data to look for. % is the wild card operator and all searches are case insensitive. If you would like to query for an empty(null) field, use ~null~ in your query parameter, such as ‘FirstName' => ‘~null~'
Returns an integer count of the number of records that match the query.
DataService.count
<?xml version="1.0"?>
<methodCall>
<methodName>DataService.count</methodName>
<params>
<param>
<value>
<string>APIKEY</string>
</value>
</param>
<param>
<value>
<string>Contact</string>
</value>
</param>
<param>
<value>
<struct>
<member>
<name>Email</name>
<value>
<string>test@example.com</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<i4>7</i4>
</value>
</param>
</params>
</methodResponse>
Creates a new custom field
Your Infusionsoft API key
Where the custom field will be used inside Infusionsoft. Options include Contact, Company, Affiliate, ContactAction (used for Task/Appt/Note), Order, Subscription, or Opportunity
The label/name of this new custom field
What type of data this field will support. Text, Select (Used for Dropdown), TextArea, etc.
The ID of the custom field header you want this field to appear under. Customer headers are located on custom tabs.
Returns the ID of the new field
DataService.addCustomField
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DataService.addCustomField</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>contextOfField</string></value>
</param>
<param>
<value><string>displayName</string></value>
</param>
<param>
<value><string>dataType</string></value>
</param>
<param>
<value><int>headerID</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>4</i4></value>
</param>
</params>
</methodResponse>
Updates the value of a custom field. Every field can have it's display name and group id changed, but only certain data types will allow you to actually change values (dropdown, listbox, radio, etc).
Note: Drilldown fields are not supported with this method.
Your Infusionsoft API key
ID number of the custom field you would like to update
The values for the given custom field
Returns a boolean true if successfully updated.
DataService.updateCustomField
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DataService.updateCustomField</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>customFieldId</int></value>
</param>
<param>
<value><struct>
<member><name>contextOfField</name>
<value><string>fieldValue</string></value>
</member>
</struct></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><i4>4</i4></value>
</member>
<member>
<name>faultString</name>
<value>[DatabaseError]Error creating custom field</value>
</member>
</struct>
</value>
</fault>
</methodResponse>
Retrieves the iCalendar file for the specified appointment
Your Infusionsoft API key
The ID of the appointment to retrieve an iCalendar file for
DataService.getAppointmentICal
<?xml version="1.0"?>
<methodCall>
<methodName>DataService.getAppointmentICal</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>appointmentId</int></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>BEGIN:VCALENDAR PRODID:-//Infusionsoft//iCal4j 1.0//EN VERSION:2.0 CALSCALE:GREGORIAN BEGIN:VEVENT DTSTAMP:20120430T235728Z DTSTART:20120430T181500Z DTEND:20120430T184500Z SUMMARY:blah UID:20120430T235728Z-vuurr24@fe80:0:0:0:d6be:d9ff:feaa:f495%3 DESCRIPTION: ORGANIZER;ROLE=REQ-PARTICIPANT;CN=Chris Conrey:mailto:chris@vuurr.com END:VEVENT END:VCALENDAR</value>
</param>
</params>
</methodResponse>
Retrieves the value of a given setting in the current application. In order to find the module and option names, view the HTML field name within the Infusionsoft settings. You will see something such as name="Contact_WebModule0optiontypes". The portion before the underscore is the module name. "Contact" in this example. The portion after the 0 is the setting name, "optiontypes" in this example.
Your Infusionsoft API key
The application module this setting belongs to
The database name of the setting to retrieve
DataService.getAppSetting
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DataService.getAppSetting</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>moduleName</string></value>
</param>
<param>
<value><string>settingName</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>Prospect,Customer,Partner,Personal Contact,Vendor</value>
</param>
</params>
</methodResponse>
The Discount service is used to manage products. You can add, update and find products in addition to managing follow up sequences, tags and action sets.
Your Infusionsoft API key
Description for commission
Boolean of whether to apply the discount to the commission
A value of 1 is for percentage, whereas a value of 0 is for an amount
Value of either "Gross" or "Net" determines how to apply the discount
DiscountService.addOrderTotalDiscount
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.addOrderTotalDiscount</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>name</string></value>
</param>
<param>
<value><string>description</string></value>
</param>
<param>
<value><int>applyDiscountToCommission</int></value>
</param>
<param>
<value><int>PercentOrAmt</int></value>
</param>
<param>
<value><double>amt</double></value>
</param>
<param>
<value><string>payType</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<i4>
3
</i4>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
The ID of the discount to retrieve
DiscountService.getOrderTotalDiscount
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.getOrderTotalDiscount</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>id</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>
amount
</name>
<value>
5.0
</value>
</member>
<member>
<name>
description
</name>
<value>
test
</value>
</member>
<member>
<name>
name
</name>
<value>
discount
</value>
</member>
<member>
<name>
pctOrAmt
</name>
<value>
3
</value>
</member>
<member>
<name>
payType
</name>
<value>
Gross
</value>
</member>
<member>
<name>
applyDiscountToCommission
</name>
<value>
1
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
The name of the free trial
The description for free trial
The number of days free trial last
The option to show or hide price
The ID of the subscription to add the free trial to
Returns a boolean "true" if successful
DiscountService.addFreeTrial
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.addFreeTrial</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>name</string></value>
</param>
<param>
<value><string>description</string></value>
</param>
<param>
<value><int>freeTrialDays</int></value>
</param>
<param>
<value><int>hidePrice</int></value>
</param>
<param>
<value><int>subscriptionPlanId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>1</i4></value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the free trial to retrieve
DiscountService.getFreeTrial
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.getFreeTrial</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>trialId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>freeTrialDays</name>
<value>9</value>
</member>
<member>
<name>subscriptionPlanId</name>
<value>5</value>
</member>
<member>
<name>description</name>
<value>test free trial</value>
</member>
<member>
<name>name</name>
<value>free</value>
</member>
<member>
<name>hidePrice</name>
<value>1</value>
</member>
<member>
<name>applyDiscountToCommission</name>
<value>1</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
Name of the discount
Description of the shipping discount
Integer value of 1 for true and 0 for false
Integer value of 1 for percent and 0 for amount
Amount of the discount
DiscountService.addShippingTotalDiscount
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.addShippingTotalDiscount</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>name</string></value>
</param>
<param>
<value><string>description</string></value>
</param>
<param>
<value><int>applyDiscountToCommission</int></value>
</param>
<param>
<value><int>percentOrAmt</int></value>
</param>
<param>
<value><double>amt</double></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<i4>
9
</i4>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the shipping discount to retrieve
DiscountService.getShippingTotalDiscount
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.getShippingTotalDiscount</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>id</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>
amount
</name>
<value>
1.0
</value>
</member>
<member>
<name>
description
</name>
<value>
Test
</value>
</member>
<member>
<name>
name
</name>
<value>
shipping discount
</value>
</member>
<member>
<name>
pctOrAmt
</name>
<value>
5
</value>
</member>
<member>
<name>
applyDiscountToCommission
</name>
<value>
1
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
The name of the discount
A description of the discount
Boolean whether to apply the discount to any commission on the product
The ID of the product to assign the discount to
Integer defining whether to handle the discount as a percent (1) or flat amount (0)
An integer amount of the discount
DiscountService.addProductTotalDiscount
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.addProductTotalDiscount</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>name</string></value>
</param>
<param>
<value><string>description</string></value>
</param>
<param>
<value><int>applyDiscountToCommission</int></value>
</param>
<param>
<value><int>productId</int></value>
</param>
<param>
<value><int>percentOrAmt</int></value>
</param>
<param>
<value><double>amt</double></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<i4>
7
</i4>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the product discount
DiscountService.getProductTotalDiscount
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.getProductTotalDiscount</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>id</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>
description
</name>
<value>
test
</value>
</member>
<member>
<name>
name
</name>
<value>
prod discount total
</value>
</member>
<member>
<name>
applyDiscountToCommission
</name>
<value>
1
</value>
</member>
<member>
<name>
productId
</name>
<value>
3
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
The category discount name
The description of the category discount
Boolean integer to determine whether or not a discount is applied to commission
The amount of the discount
DiscountService.addCategoryDiscount
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.addCategoryDiscount</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>name</string></value>
</param>
<param>
<value><string>description</string></value>
</param>
<param>
<value><int>applyDiscountToCommission</int></value>
</param>
<param>
<value><double>amt</double></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<i4>
5
</i4>
</value>
</param>
</params>
</methodResponse>
Returns the options and values of the specified category discount ID.
Your Infusionsoft API key
The ID of the category discount to retrieve
DiscountService.getCategoryDiscount
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.getCategoryDiscount</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>id</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>
description
</name>
<value>
test
</value>
</member>
<member>
<name>
name
</name>
<value>
cat discount
</value>
</member>
<member>
<name>
applyDiscountToCommission
</name>
<value>
1
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Retrieves the options and values of the category assignment for category discount passed.
Your Infusionsoft API key
ID of the category discount
DiscountService.getCategoryAssignmentsForCategoryDiscount
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.getCategoryAssignmentsForCategoryDiscount</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>id</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>
id
</name>
<value>
1
</value>
</member>
<member>
<name>
specialItemId
</name>
<value>
5
</value>
</member>
<member>
<name>
productCategoryId
</name>
<value>
3
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
The ID of the category discount
The ID of the product to assign the discount to
DiscountService.addCategoryAssignmentToCategoryDiscount
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>DiscountService.addCategoryAssignmentToCategoryDiscount</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>id</int></value>
</param>
<param>
<value><int>productId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<i4>
1
</i4>
</value>
</param>
</params>
</methodResponse>
The Email service allows you to email your contacts as well as attaching emails sent elsewhere (this lets you send email from multiple services and still see all communications inside of Infusionsoft).
Opts-in an email address. This method only works the first time an email address opts-in.
Your Infusionsoft API key
The email address to opt-in
Why/how this email was opted-in
Returns a boolean true upon successful opt-in.
APIEmailService.optIn
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIEmailService.optIn</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>email</string></value>
</param>
<param>
<value><string>reason</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>0</boolean></value>
</param>
</params>
</methodResponse>
Opts-out an email address. Once an address is opt-out, the API cannot opt it back in.
Your Infusionsoft API key
The email address to opt-out
Reason the address is being opt-out
APIEmailService.optOut
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIEmailService.optOut</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>email</string></value>
</param>
<param>
<value><string>reason</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>0</boolean></value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
The email address you wish to retrieve the status of
Returns an integer value of 0 for opt out/non-marketable/soft bounce/hard bounce, 1 for single opt-in, or 2 for double opt-in.
APIEmailService.getOptStatus
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIEmailService.getOptStatus</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>email</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>0</i4></value>
</param>
</params>
</methodResponse>
Creates a new email template that can be used when sending emails.
Your Infusionsoft API key
The name of the template. This will be displayed within the Infusionsoft template library.
The category to assign this template to
The email address the email should be sent as
The email address this template sends to. In most circumstances, you'll want to set this to "~Contact.Email~" so that the template delivers to the specified contact upon sending.
Any email addresses to CC when an email from this template is sent
Any email addresses to BCC when an email from this template is sent
The subject line of the email template
The content you would like sent in the body of the plain text version of this email template
The content you would like sent in the body of the HTML version of this email template
One of three options - HTML, Text, or Multipart
One of four options - Contact, Opportunity, Invoice, or CreditCard
Returns an ID of the created template.
APIEmailService.addEmailTemplate
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIEmailService.addEmailTemplate</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>title</string></value>
</param>
<param>
<value><string>categories</string></value>
</param>
<param>
<value><string>fromAddress</string></value>
</param>
<param>
<value><string>toAddress</string></value>
</param>
<param>
<value><string>ccAddresses</string></value>
</param>
<param>
<value><string>bccAddresses</string></value>
</param>
<param>
<value><string>subject</string></value>
</param>
<param>
<value><string>textBody</string></value>
</param>
<param>
<value><string>htmlBody</string></value>
</param>
<param>
<value><string>contentType</string></value>
</param>
<param>
<value><string>mergeContext</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>3378</i4></value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
The ID number for the template you wish to retrieve details about
APIEmailService.getEmailTemplate
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIEmailService.getEmailTemplate</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>templateId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>pieceTitle</name>
<value>template API Test</value>
</member>
<member>
<name>categories</name>
<value>API Category</value>
</member>
<member>
<name>fromAddress</name>
<value>from@infusionsoft.com</value>
</member>
<member>
<name>toAddress</name>
<value>~Contact.Email~</value>
</member>
<member>
<name>ccAddress</name>
<value/>
</member>
<member>
<name>bccAddress</name>
<value/>
</member>
<member>
<name>subject</name>
<value>My Fancy Subject Line</value>
</member>
<member>
<name>textBody</name>
<value>This is the text email body</value>
</member>
<member>
<name>htmlBody</name>
<value>This is html body</value>
</member>
<member>
<name>contentType</name>
<value>HTML</value>
</member>
<member>
<name>mergeContext</name>
<value>Contact</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Updates an email template that can be used when sending emails.
Your Infusionsoft API key
The ID number for the template you wish to update
The name of the template. This will be displayed within the Infusionsoft template library.
The category to assign this template to
The email address the email should be sent as
The email address this template sends to. In most circumstances, you'll want to set this to "~Contact.Email~" so that the template delivers to the specified contact upon sending.
Any email addresses to CC when an email from this template is sent
Any email addresses to BCC when an email from this template is sent
The subject line of the email template
The content you would like sent in the body of the plain text version of this email template
The content you would like sent in the body of the HTML version of this email template
One of three options - HTML, Text, or Multipart
One of four options - Contact, Opportunity, Invoice, or CreditCard
Returns an ID of the updated template.
APIEmailService.updateEmailTemplate
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIEmailService.updateEmailTemplate</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>templateId</string></value>
</param>
<param>
<value><string>templateName</string></value>
</param>
<param>
<value><string>categories</string></value>
</param>
<param>
<value><string>fromAddress</string></value>
</param>
<param>
<value><string>toAddress</string></value>
</param>
<param>
<value><string>ccAddresses</string></value>
</param>
<param>
<value><string>bccAddresses</string></value>
</param>
<param>
<value><string>subject</string></value>
</param>
<param>
<value><string>textBody</string></value>
</param>
<param>
<value><string>htmlBody</string></value>
</param>
<param>
<value><string>contentType</string></value>
</param>
<param>
<value><string>mergeContext</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>3378</i4></value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
An integer array of Contact Id numbers you would like to send this email to
The ID of the template to send
APIEmailService.sendEmail
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIEmailService.sendEmail</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><array>
<data>
<value><int>12</int></value>
<value><int>16</int></value>
<value><int>22</int></value>
</data>
</array></value>
</param>
<param>
<value><int>3380</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<boolean>
1
</boolean>
</value>
</param>
</params>
</methodResponse>
Send an email to a list of contacts, as well as records the email in each contacts' email history.
Your Infusionsoft API key
An array of Contact IDs to send this email to
The address the email will be sent from
The address this email will be sent to. This typically should be the merge field "~Contact.Email~"
A comma-separated string of email addresses to CC
A comma-separated string of email addresses to BCC
HTML, Text, or Multipart (case sensitive)
The subject line of the email
The HTML body of the email
The plain text body of the email
Returns boolean true if the email has been successfully sent.
APIEmailService.sendEmail
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIEmailService.sendEmail</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><array>
<data>
<value><int>contactList1</int></value>
<value><int>contactList2</int></value>
<value><int>contactList3</int></value>
</data>
</array></value>
</param>
<param>
<value><string>fromAddress</string></value>
</param>
<param>
<value><string>toAddress</string></value>
</param>
<param>
<value><string>ccAddresses</string></value>
</param>
<param>
<value><string>bccAddresses</string></value>
</param>
<param>
<value><string>contentType</string></value>
</param>
<param>
<value><string>subject</string></value>
</param>
<param>
<value><string>htmlBody</string></value>
</param>
<param>
<value><string>textBody</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
This retrieves all possible merge fields in the provided context - Contact, Opportunity, Invoice, or CreditCard.
Your Infusionsoft API key
Contact, Opportunity, Invoice, or CreditCard
Returns an array of the available merge fields.
This will create an item in the email history for a contact. This does not actually send the email, it only places an item into the email history. Using the API to instruct Infusionsoft to send an email will handle this automatically.
Your Infusionsoft API key
The ID of the contact to add this email history to
The name of the email sender
The address the email was sent from
The address the email was sent to
The addresses the email was CC'd to
The addresses the email was BCC'd to
The content type of the email (Text, HTML, or Multipart)
The subject line of the email
The HTML body of the email
The plain text body of the email
The email header information
The date this email was received. This value determines where the email displays in comparison to other sent messages.
The date the email was sent
A boolean integer value of 1 is used for marking the email as sent inside the contact history and 0 is used for marking the email as received
Returns a boolean true upon success.
APIEmailService.attachEmail
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>APIEmailService.attachEmail</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactId</int></value>
</param>
<param>
<value><string>fromName</string></value>
</param>
<param>
<value><string>fromAddress</string></value>
</param>
<param>
<value><string>toAddress</string></value>
</param>
<param>
<value><string>ccAddress</string></value>
</param>
<param>
<value><string>bccAddress</string></value>
</param>
<param>
<value><string>contentType</string></value>
</param>
<param>
<value><string>subject</string></value>
</param>
<param>
<value><string>htmlBody</string></value>
</param>
<param>
<value><string>textBody</string></value>
</param>
<param>
<value><string>header</string></value>
</param>
<param>
<value><string>receivedDate</string></value>
</param>
<param>
<value><string>sentDate</string></value>
</param>
<param>
<value><int>emailSentType(Set To 1)</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
The FileService methods allow you to create and modify files inside of Infusionsoft.
Uploads a file to Infusionsoft. The optional contactID parameter is used to place the file in a specific contact's filebox.
Your Infusionsoft API key
ID of the Contact to associate the file with
The name of the file to be uploaded
A base64 encoded string of the file data
FileService.uploadFile
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>FileService.uploadFile</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactID</int></value>
</param>
<param>
<value><string>fileName</string></value>
</param>
<param>
<value><string>RGVycE15RGVycA==.......base64EncodedFile</string></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value><i4>482</i4></value>
</param>
</params>
</methodResponse>
Retrieves the file data for the specified file ID.
Your Infusionsoft API key
The ID of the file to return
FileService.getFile
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>FileService.getFile</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>fileUID</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>fileData</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
The ID of the file url to be returned
FileService.getDownloadUrl
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>FileService.getDownloadUrl</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>fileUID</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
https://example.com/123xyz
</value>
</param>
</params>
</methodResponse>
Replaces a file's data.
Your Infusionsoft API key
The Id of the file to be uploaded
A base64 encoded string of the file data
FileService.replaceFile
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>FileService.replaceFile</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>fileId</int></value>
</param>
<param>
<value><string>RGVycE15RGVycA==.......base64EncodedFile</string></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value><i4>482</i4></value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the file to be renamed
New file name
FileService.renameFile
<?xml version="1.0"?>
<methodCall>
<methodName>FileService.renameFile</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>fileUID</int></value>
</param>
<param>
<value><string>fileName</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<boolean>
1
</boolean>
</value>
</param>
</params>
</methodResponse>
The Funnel Service is used to add contacts to marketing sequences.
Your Infusionsoft API key
The integration name of the goal
The call name of the goal
ID of the applicable contact
Returns the result of a goal being achieved.
FunnelService.achieveGoal
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>FunnelService.achieveGoal</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>Integration</string></value>
</param>
<param>
<value><string>CallName</string></value>
</param>
<param>
<value><int>contactId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>success</name>
<value><boolean>1</boolean></value>
</member>
<member>
<name>msg</name>
<value></value>
</member>
<member>
<name>funnelId</name>
<value><i4>175</i4></value>
</member>
<member>
<name>goalId</name>
<value><i4>3</i4></value>
</member>
<member>
<name>flowStart</name>
<value><array><data>
<value>
<struct>
<member>
<name>success</name>
<value><boolean>1</boolean></value>
</member>
<member>
<name>msg</name>
<value></value>
</member>
<member>
<name>flowId</name>
<value><i4>10</i4></value>
</member>
</struct>
</value>
</data>
</array>
</value>
</member>
- <member>
<name>flowStop</name>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>success</name>
<value><boolean>0</boolean></value>
</member>
<member>
<name>msg</name>
<value>No Sequences were configured to be stopped by this Goal.</value>
</member>
<member>
<name>flowId</name>
<value><i4>0</i4></value>
</member>
</struct>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
The Invoice Service allows you to manage Infusionsoft eCommerce transactions.
Creates a blank invoice with no line items that has not yet been paid.
Your Infusionsoft API key
The ID of the contact to be invoiced (0 is not a valid contact id)
The name of the invoice, also used as the link within the Infusionsoft order interface
Date and time of the invoice
ID of the lead affiliate
ID of the sale affiliate
Returns an ID representing the newly created invoice.
InvoiceService.createBlankOrder
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.createBlankOrder</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>22</int></value>
</param>
<param>
<value><string>hello world</string></value>
</param>
<param>
<value><dateTime.iso8601>20080908T00:00:00</dateTime.iso8601></value>
</param>
<param>
<value><int>2</int></value>
</param>
<param>
<value><int>2</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>8</i4></value>
</param>
</params>
</methodResponse>
Charges the specified card the amount currently due on the invoice.
Your Infusionsoft API key
The ID of the invoice to pay
A note about the payment
The ID of the credit card to charge
The ID of the merchant account to use to process the payment
Whether this payment should count towards affiliate commissions Defaults to false
Returns a struct containing payment details.
InvoiceService.chargeInvoice
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.chargeInvoice</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>invoiceId</int></value>
</param>
<param>
<value><string>notes</string></value>
</param>
<param>
<value><int>creditCardId</int></value>
</param>
<param>
<value><int>merchId</int></value>
</param>
<param>
<value><boolean>bypassComm</boolean></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>
Successful
</name>
<value>
<boolean>
0
</boolean>
</value>
</member>
<member>
<name>
Message
</name>
<value>
(TESTMODE)
</value>
</member>
<member>
<name>
RefNum
</name>
<value>
0
</value>
</member>
<member>
<name>
Code
</name>
<value>
ERROR
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the invoice to retrieve payments for
InvoiceService.getPayments
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.getPayments</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>paymentId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>Id</name>
<value><i4>2</i4></value>
</member>
<member>
<name>PayDate</name>
<value><dateTime.iso8601>20120314T00:00:00</dateTime.iso8601></value>
</member>
<member>
<name>UserId</name>
<value><i4>14</i4></value>
</member>
<member>
<name>PayAmt</name>
<value><double>5.0</double></value>
</member>
<member>
<name>PayType</name>
<value>Credit Card (Manual)</value>
</member>
<member>
<name>ContactId</name>
<value><i4>22</i4></value>
</member>
<member>
<name>PayNote</name>
<value/>
</member>
<member>
<name>InvoiceId</name>
<value><i4>6</i4></value>
</member>
<member>
<name>RefundId</name>
<value><i4>0</i4></value>
</member>
<member>
<name>ChargeId</name>
<value><i4>0</i4></value>
</member>
<member>
<name>Synced</name>
<value><i4>0</i4></value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
Retrieves the outstanding amount of an invoice
Your Infusionsoft API key
ID of the invoice to retrieve the amount due on
InvoiceService.calculateAmountOwed
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.calculateAmountOwed</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>invoiceId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><double>41.14</double></value>
</param>
</params>
</methodResponse>
Adds a line item to an Order.
Your Infusionsoft API key
The Id of the Invoice for the Order this line item is to be added to
The Id of the product to add to the Order. For a non-product, set the value to 0.
The order item type as defined below
Type ID | Description |
---|---|
1 | Shipping |
2 | Tax |
3 | Service & Misc |
4 | Product |
5 | Upsell Product |
6 | Finance Charge |
7 | Special |
8 | Program |
9 | Subscription Plan |
10 | Special: Free Trial Days |
11 | Special: Order Total |
12 | Special: Product |
13 | Special: Category |
14 | Special: Shipping |
The price of the Order Item
The quantity of Order Items to be added
A description of the Item
Notes about the Item
Returns "true" upon success.
InvoiceService.addOrderItem
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.addOrderItem</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>invoiceId</int></value>
</param>
<param>
<value><int>productId</int></value>
</param>
<param>
<value><int>type</int></value>
</param>
<param>
<value><double>price</double></value>
</param>
<param>
<value><int>quantity</int></value>
</param>
<param>
<value><string>description</string></value>
</param>
<param>
<value><string>notes</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Adds a payment to an invoice without actually processing a charge through a merchant. This is useful if you accept cash/check, or handle payments outside of Infusionsoft.
Your Infusionsoft API key
ID of the invoice to add the payment to
Amount of payment to add to the invoice
Date the payment is made
What payment type. Example: Credit Card or PayPal
Description of the payment
Whether this payment should count towards affiliate commissions.
Returns true on success.
InvoiceService.addManualPayment
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.addManualPayment</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>invoiceId</int></value>
</param>
<param>
<value><double>amt</double></value>
</param>
<param>
<value><dateTime.iso8601>paymentDate</dateTime.iso8601></value>
</param>
<param>
<value><string>paymentType</string></value>
</param>
<param>
<value><string>paymentDescription</string></value>
</param>
<param>
<value><boolean>bypassCommissions</boolean></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Adds a commission to an existing invoice
Your Infusionsoft API key
ID of the invoice to add the commission to
ID of the affiliate to send the commission to
ID of the product the commission is for
The percentage paid for the product being sold
The amount of the commission
An ID defining how the commission should be earned. A value of "4" will pay the commission up front, and a value of "5" will pay the commission after the customer payment is received.
Description of the commission
Date the commission was generated
Returns true upon success
InvoiceService.addOrderCommissionOverride
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.addOrderCommissionOverride</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>invoiceId</int></value>
</param>
<param>
<value><int>affiliateId</int></value>
</param>
<param>
<value><int>productId</int></value>
</param>
<param>
<value><int>commissionPercentage</int></value>
</param>
<param>
<value><double>amountPaid</double></value>
</param>
<param>
<value><int>payoutType</int></value>
</param>
<param>
<value><string>desc</string></value>
</param>
<param>
<value><dateTime.iso8601>date</dateTime.iso8601></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Calculates tax based on the line items of the invoice, and adds the amount to the invoice.
Your Infusionsoft API key
ID of the invoice to calculate tax on
Returns true upon success
InvoiceService.recalculateTax
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.recalculateTax</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>invoiceId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Deletes an invoice. Also deletes the order within the Job table tied to the invoice.
Your Infusionsoft API key
ID of the invoice to delete
Returns true upon successful deletion.
InvoiceService.deleteInvoice
<?xml version="1.0"?>
<methodCall>
<methodName>InvoiceService.deleteInvoice</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>invoiceID</int></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<boolean>1</boolean>
</value>
</param>
</params>
</methodResponse>
Creates a subscription for a contact. Subscriptions are billed automatically by Infusionsoft within six hours of creation. If you want to bill immediately you will need to then call the InvoiceService.createInvoiceForRecurring and InvoiceService.chargeInvoice methods.
Your Infusionsoft API key
ID of the contact the subscription will be attached to
Allows a duplicate subscription or not
ID of the subscription to attach to the Contact
Quantity of the subscription to add to the contact
Price to charge for the subscription
Whether or not to charge tax on the subscription
ID of the merchant account to use to charge the subscription
ID of the card to charge the subscription to
ID of the sale affiliate. Set to "0" if there is no affiliate on the order.
Number of days the subscription will trial
Returns the ID of the newly created subscription.
InvoiceService.addRecurringOrder
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.addRecurringOrder</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactId</int></value>
</param>
<param>
<value><boolean>allowDup</boolean></value>
</param>
<param>
<value><int>SubscriptionPlanId</int></value>
</param>
<param>
<value><int>qty</int></value>
</param>
<param>
<value><double>price</double></value>
</param>
<param>
<value><boolean>allowTax</boolean></value>
</param>
<param>
<value><int>merchantId</int></value>
</param>
<param>
<value><int>creditCardId</int></value>
</param>
<param>
<value><int>affiliateId</int></value>
</param>
<param>
<value><int>trialPeriod</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>6</i4></value>
</param>
</params>
</methodResponse>
Creates an invoice for all charges due on a subscription. If the subscription has multiple billing cycles due, it will create a single invoice with charges for all charges due.
Your Infusionsoft API key
ID of the subscription to create an invoice for
Returns the ID of the newly created invoice. Returns 0 if no invoices were generated.
InvoiceService.createInvoiceForRecurring
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.createInvoiceForRecurring</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>subscriptionID</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>10</i4></value>
</param>
</params>
</methodResponse>
Changes the next date a subscription is paid
Your Infusionsoft API key
ID of the subscription to update
New billing date
InvoiceService.updateJobRecurringNextBillDate
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.updateJobRecurringNextBillDate</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>recurringOrderId</int></value>
</param>
<param>
<value><dateTime.iso8601>nextBillDate</dateTime.iso8601></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Deletes the specified subscription, as well as all invoices tied to the subscription.
Your Infusionsoft API key
ID of the subscription to delete
Returns true upon success.
InvoiceService.deleteSubscription
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.deleteSubscription</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>subscriptionId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
Credit card type (Visa, American Express, etc)
ID of the contact to own the credit card
The card account number
Two digit card expiration month
Four digit card expiration year
Card security code
InvoiceService.validateCreditCard
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.validateCreditCard</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><struct>
<member><name>CardType</name>
<value><string>Visa</string></value>
</member>
<member><name>ContactId</name>
<value><int>123</int></value>
</member>
<member><name>CardNumber</name>
<value><string>4111111111111111</string></value>
</member>
<member><name>ExpirationMonth</name>
<value><string>12</string></value>
</member>
<member><name>ExpirationYear</name>
<value><string>2009</string></value>
</member>
<member><name>CVV2</name>
<value><string>123</string></value>
</member>
</struct></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>Message</name>
<value>Card has expired</value>
</member>
<member>
<name>Valid</name>
<value>false</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the credit card to validate
InvoiceService.validateCreditCard
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.validateCreditCard</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>cardID</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>Message</name>
<value>Card has expired</value>
</member>
<member>
<name>Valid</name>
<value>false</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Retrieves a credit card for the specified contact
Your Infusionsoft API key
Contact ID to retrieve the credit card for
Last 4 digits of the card to retrieve
Returns the credit card ID on success; 0 upon failure.
InvoiceService.locateExistingCard
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.locateExistingCard</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactId</int></value>
</param>
<param>
<value><string>last4</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>0</i4></value>
</param>
</params>
</methodResponse>
Retrieves all payment types available within the requested Infusionsoft account
InvoiceService.getAllPaymentOptions
<?xml version='1.0' encoding='UTF-8'?>
<methodCall> <methodName>InvoiceService.getAllPaymentOptions</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>Credit Card (Manual)</name>
<value>Credit Card (Manual)</value>
</member>
<member>
<name>Check</name>
<value>Check</value>
</member>
<member>
<name>Cash</name>
<value>Cash</value>
</member>
<member>
<name>Money Order</name>
<value>Money Order</value>
</member>
<member>
<name>Adjustment</name>
<value>Adjustment</value>
</member>
<member>
<name>Credit Card</name>
<value>Credit Card</value>
</member>
<member>
<name>Credit</name>
<value>Credit</value>
</member>
<member>
<name>Refund</name>
<value>Refund</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Creates a custom recurring payment for an invoice.
Your Infusionsoft API key
ID of the invoice to apply the payment plan to
Whether or not the payment plan should automatically charge or not
ID of the card to charge
ID of the merchant account used to process the payment
Number of days to wait before re-attempting a failed payment
Maximum number of attempts to retry a failed payment
Amount of the first charge on the payment plan
Date the first charge should occur
Date the second, and subsequent, charge should occur. Note this does not include the first payment.
The number of payments in the plan, not including the first payment
Number of days between payments, starting with the second payment
Returns true on successful creation
InvoiceService.addPaymentPlan
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>InvoiceService.addPaymentPlan</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>invoiceId</int></value>
</param>
<param>
<value><boolean>autoCharge</boolean></value>
</param>
<param>
<value><int>creditCardId</int></value>
</param>
<param>
<value><int>merchantAccountId</int></value>
</param>
<param>
<value><int>daysRetry</int></value>
</param>
<param>
<value><int>maxRetry</int></value>
</param>
<param>
<value><double>initialPmt</double></value>
</param>
<param>
<value><dateTime.iso8601>initialPmtDate</dateTime.iso8601></value>
</param>
<param>
<value><dateTime.iso8601>planStartDate</dateTime.iso8601></value>
</param>
<param>
<value><int>numPmts</int></value>
</param>
<param>
<value><int>daysBetweenPmts</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<boolean>1</boolean></value>
</param>
</params>
</methodResponse>
The Order Service is used to create and charge an order.
Your Infusionsoft API key
ID of the order's Contact (0 is not a valid contact id)
ID of the credit card to charge. To skip charging a card, set to "0"
ID of the payment plan to use when creating the order. If not specified, the default plan is used.
A list of integers representing the products to be added to the order. This cannot be empty if a subscription is not specified.
A list of integers representing the subscription(s) to be added to the order. This cannot be empty if a productID is not specified.
Whether or not the order should consider discounts that would normally be applied if this order was being placed through the shopping cart.
Promo codes to add to the cart; only used if processing of specials is turned on
ID of the lead affiliate
ID of the sale affiliate
Returns the result of order placement along with IDs of the order and invoice that were created and the status of a credit card charge (if applicable).
OrderService.placeOrder
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>OrderService.placeOrder</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>contactId</int></value>
</param>
<param>
<value><int>creditCardId</int></value>
</param>
<param>
<value><int>payPlanId</int></value>
</param>
<param>
<value><array>
<data>
<value><int>productIds</int></value>
</data>
</array></value>
</param>
<param>
<value><array>
<data>
<value><int>subscriptionPlanIds</int></value>
</data>
</array></value>
</param>
<param>
<value><boolean>processSpecials</boolean></value>
</param>
<param>
<value><array>
<data>
<value><string>promoCodes</string></value>
</data>
</array></value>
</param>
<param>
<value><int>0</int></value>
</param>
<param>
<value><int>0</int></value>
</param>
</params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>Successful</name>
<value>false</value>
</member>
<member>
<name>Message</name>
<value>DECLINE - Response code(200)</value>
</member>
<member>
<name>RefNum</name>
<value>2879922578</value>
</member>
<member>
<name>OrderId</name>
<value>2935</value>
</member>
<member>
<name>InvoiceId</name>
<value>2937</value>
</member>
<member>
<name>Code</name>
<value>None</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
The Product Service is used to manage products stored in Infusionsoft. You can add, update and find products in addition to managing follow up sequences, tags and action sets.
Your Infusionsoft API key
The ID of the product to retrieve inventory levels for
Returns the available inventory for the requested product as an integer.
ProductService.getInventory
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ProductService.getInventory</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>productId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><i4>0</i4></value>
</param>
</params>
</methodResponse>
Increments the specified product's inventory by one unit.
Your Infusionsoft API key
ID of the product to increment inventory on
Returns a boolean true on success.
ProductService.incrementInventory
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ProductService.incrementInventory</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>productId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Decrements the specified product's inventory by one unit.
Your Infusionsoft API key
ID of the product to decrement inventory on
ProductService.decrementInventory
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ProductService.decrementInventory</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>productId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Increases the available inventory for the specified product.
Your Infusionsoft API key
ID of the product to modify inventory of
The amount to increase the product's inventory by
ProductService.increaseInventory
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ProductService.increaseInventory</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>productId</int></value>
</param>
<param>
<value><int>quantity</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Decreases the available inventory for the specified product.
Your Infusionsoft API key
ID of the product to modify inventory of
The amount to decrease the product's inventory by
ProductService.decreaseInventory
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ProductService.decreaseInventory</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>productId</int></value>
</param>
<param>
<value><int>quantity</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the credit card to deactivate
Returns boolean true if the card is successfully deactivated.
ProductService.deactivateCreditCard
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ProductService.deactivateCreditCard</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>creditCardId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodResponse>
The Search Service allows you to retrieve the results of saved searches and reports that have been saved within Infusionsoft. Saved searches/reports are tied to the User that created them. This service also allows you to utilize the quick search function found in the upper right hand corner of your Infusionsoft application. To retrieve the ID for a saved search, you will need to utilize the DataService.query method to query the SavedFilter table based with the ID of the user that created the saved search. Also note that UserId field on the SavedFilter table can contain multiple userId's separated by a comma, so if you are querying for a report created by userId 6, I recommend appending the wildcard to the end of the userId. Something like $query = array( 'UserId' => '6%' );
Your Infusionsoft API key
ID of the saved search to retrieve columns for
ID of the user that created the saved search
Returns an array of the fields available on a saved search/report.
SearchService.getAllReportColumns
<?xml version="1.0"?>
<methodCall>
<methodName>SearchService.getAllReportColumns</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>savedSearchId</int></value>
</param>
<param>
<value><int>userId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>Id</name>
<value>Id</value>
</member>
<member>
<name>FilterId</name>
<value>Filter Id</value>
</member>
<member>
<name>ContactId</name>
<value>Contact Id</value>
</member>
<member>
<name>ContactName</name>
<value>Name</value>
</member>
<member>
<name>ContactName.firstName</name>
<value>First Name</value>
</member>
<member>
<name>ContactName.lastName</name>
<value>Last Name</value>
</member>
...
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the saved search to retrieve
ID of the user that created the saved search
A zero-indexed page of results to return
Returns a struct with all available fields in a saved search
SearchService.getSavedSearchResultsAllFields
<?xml version="1.0"?>
<methodCall>
<methodName>SearchService.getSavedSearchResultsAllFields</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>savedSearchId</int></value>
</param>
<param>
<value><int>userId</int></value>
</param>
<param>
<value><int>pageNumber</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>Id</name>
<value><i4>12</i4></value>
</member>
<member>
<name>ContactName</name>
<value>Andrew Watson</value>
</member>
<member>
<name>Company</name>
<value>Widgets inc</value>
</member>
<member>
<name>PhoneWithExtension1</name>
<value>
</value>
</member>
<member>
<name>Email</name>
<value/>
</member>
<member>
<name>State</name>
<value/>
</member>
</struct>
</value>
...
</data>
</array>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the saved search to retrieve
ID of the user that created the saved search
A zero-indexed page of results to return
An array of field names to return with the report
Returns a struct with the specified fields from a saved search
SearchService.getSavedSearchResults
<?xml version="1.0"?>
<methodCall>
<methodName>SearchService.getSavedSearchResults</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>savedSearchId</int></value>
</param>
<param>
<value><int>userId</int></value>
</param>
<param>
<value><int>pageNumber</int></value>
</param>
<param>
<value><array>
<data>
<value><string>ContactId</string></value>
</data>
</array></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>
ContactId
</name>
<value>
<i4>
12
</i4>
</value>
</member>
</struct>
</value>
...
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the requesting user
Returns a struct of the requesting user's available quick searches.
SearchService.getAvailableQuickSearches
<?xml version="1.0"?>
<methodCall>
<methodName>SearchService.getAvailableQuickSearches</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>14</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>FindPerson</name>
<value>Person</value>
</member>
<member>
<name>FindCompany</name>
<value>Company</value>
</member>
<member>
<name>FindTask</name>
<value>Task/Appt/Note</value>
</member>
<member>
<name>FindOrder</name>
<value>Order</value>
</member>
<member>
<name>FindSubscription</name>
<value>Subscription</value>
</member>
<member>
<name>FindOpportunity</name>
<value>Opportunity</value>
</member>
<member>
<name>FindAffiliate</name>
<value>Affiliate</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the user to retrieve the default search for
Retrieves the requested user's default quick search type
SearchService.getDefaultQuickSearch
<?xml version="1.0"?>
<methodCall>
<methodName>SearchService.getDefaultQuickSearch</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>userId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>null</value>
</param>
</params>
</methodResponse>
Returns a quick search, equivalent to using the search box in the Infusionsoft application.
Your Infusionsoft API key
The type of search you are running. FindPerson, FindOrder, FindOpportunity, FindCompany, FindTask, FindSubscription, or FindAffiliate
ID of the user running the search. Results are returned based upon the specified user's permissions.
Search query
A zero-indexed page of results to return
Number of results to return; maximum of 1000
Returns a struct of report results.
SearchService.quickSearch
<?xml version="1.0"?>
<methodCall>
<methodName>SearchService.quickSearch</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><string>quickSearchType</string></value>
</param>
<param>
<value><int>userId</int></value>
</param>
<param>
<value><string>searchData</string></value>
</param>
<param>
<value><int>page</int></value>
</param>
<param>
<value><int>limit</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><array><data/></array></value>
</param>
</params>
</methodResponse>
The Shipping Service is used to retrieve available shipping options.
ShippingService.getAllShippingOptions
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ShippingService.getAllShippingOptions</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value><array><data/></array></value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the shipping option
Returns the options and values of the requested weight based shipping option.
ShippingService.getWeightBasedShippingOption
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ShippingService.getWeightBasedShippingOption</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>optionId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>id</name>
<value>11</value>
</member>
<member>
<name>description</name>
<value/>
</member>
<member>
<name>name</name>
<value>Ship by Weight</value>
</member>
<member>
<name>orderBased</name>
<value>true</value>
</member>
<member>
<name>international</name>
<value>false</value>
</member>
<member>
<name>active</name>
<value>true</value>
</member>
<member>
<name>type</name>
<value>Weight</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the shipping option to retrieve
ShippingService.getFlatRateShippingOption
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ShippingService.getFlatRateShippingOption</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>optionId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>id</name>
<value>1</value>
</member>
<member>
<name>price</name>
<value>0.0</value>
</member>
<member>
<name>description</name>
<value>test</value>
</member>
<member>
<name>orderBased</name>
<value>false</value>
</member>
<member>
<name>name</name>
<value>Flat Rate Per Order</value>
</member>
<member>
<name>international</name>
<value>false</value>
</member>
<member>
<name>active</name>
<value>true</value>
</member>
<member>
<name>type</name>
<value>Flat</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the requested shipping option
Returns an array of shipping options and values for the requested product shipping option.
ShippingService.getProductBasedShippingOption
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ShippingService.getProductBasedShippingOption</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>optionId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>id</name>
<value>3</value>
</member>
<member>
<name>description</name>
<value/>
</member>
<member>
<name>name</name>
<value>Specific Price Per Product</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the shipping option
Returns an array of options and values for order shipping option.
ShippingService.getOrderTotalShippingOption
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ShippingService.getOrderTotalShippingOption</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>optionId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data/>
</array>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the shipping option
Returns the options and values of the order quantity shipping option provided.
ShippingService.getOrderQuantityShippingOption
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ShippingService.getOrderQuantityShippingOption</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>optionId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>id</name>
<value>7</value>
</member>
<member>
<name>baseShippingPrice</name>
<value>1.0</value>
</member>
<member>
<name>pricePerItem</name>
<value>1.0</value>
</member>
<member>
<name>description</name>
<value/>
</member>
<member>
<name>orderBased</name>
<value>false</value>
</member>
<member>
<name>name</name>
<value>test quan</value>
</member>
<member>
<name>international</name>
<value>false</value>
</member>
<member>
<name>active</name>
<value>true</value>
</member>
<member>
<name>type</name>
<value>Quantity</value>
</member>
<member>
<name>minimumShippingPrice</name>
<value>1.0</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
ID of the requested shipping option
Returns the available values for order shipping ranges based on the requested shipping option.
ShippingService.getOrderTotalShippingRanges
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ShippingService.getOrderTotalShippingRanges</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int>optionId</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<array>
<data/>
</array>
</value>
</param>
</params>
</methodResponse>
Your Infusionsoft API key
The ID of the requested option
Returns the options and values of the requested UPS shipping option.
ShippingService.getUpsShippingOption
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>ShippingService.getUpsShippingOption</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
<param>
<value><int> optionId </int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>deliveryType</name>
<value>01,03,07</value>
</member>
<member>
<name>orderBased</name>
<value>false</value>
</member>
<member>
<name>international</name>
<value>false</value>
</member>
<member>
<name>accessLicenseNumber</name>
<value>niewonfidso</value>
</member>
<member>
<name>type</name>
<value>UPS</value>
</member>
<member>
<name>pickupType</name>
<value>01</value>
</member>
<member>
<name>id</name>
<value>13</value>
</member>
<member>
<name>accountNumber</name>
<value>39208234</value>
</member>
<member>
<name>accessPassword</name>
<value>ronald11</value>
</member>
<member>
<name>destinationType</name>
<value>0</value>
</member>
<member>
<name>description</name>
<value/>
</member>
<member>
<name>packagingType</name>
<value>01</value>
</member>
<member>
<name>name</name>
<value>UPS</value>
</member>
<member>
<name>active</name>
<value>true</value>
</member>
<member>
<name>accessUserId</name>
<value>ron</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
The Webform Service is used to retrieve available web forms created within Keap.
Your Infusionsoft API key
ID of the webform to retrieve
Returns the HTML for the requested webform
WebFormService.getHTML
<?xml version="1.0"?>
<methodCall>
<methodName>WebFormService.getHTML</methodName>
<params>
<param>
<value><string>c94a1f2b395a9ab97d4263b37f7b0923</string></value>
</param>
<param>
<value><int>6</int></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<html style="height:100%; margin:0;
...
</value>
</param>
</params>
</methodResponse>
Returns all of the available webform name and ID pairs
WebFormService.getMap
<?xml version='1.0' encoding='UTF-8'?>
<methodCall>
<methodName>WebFormService.getMap</methodName>
<params>
<param>
<value><string>privateKey</string></value>
</param>
</params>
</methodCall>
<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>
6
</name>
<value>
test
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>