This article covers why Keap is deprecating the XML-RPC API, who this affects, the current timeline, and how to migrate your integration to REST v2. This article does not cover the field-by-field method mapping — see the XML-RPC to REST v2 Resource Mapping Guide for that.
In this article:
- Overview
- Why Keap Is Deprecating XML-RPC
- Benefits of Migrating to REST v2
- Who This Affects
- Timeline and Important Dates
- What Happens on March 15, 2027
- How to Migrate: Step-by-Step Instructions
- Software Development Kits (SDKs)
- Getting Help
- Frequently Asked Questions About the Keap XML-RPC API Deprecation
- Additional Resources
Overview
Keap is deprecating the XML-RPC API to provide a better, more secure, and faster API experience. On December 1, 2025, Keap communicated that the XML-RPC API would be permanently sunset on December 31, 2026. Keap has revised that plan. Instead of a full sunset, the XML-RPC API will be deprecated without warranty or support starting March 15, 2027. This guide explains what that means and helps you migrate to REST v2.
Why Keap Is Deprecating XML-RPC
XML-RPC has served Keap well, but technology has evolved significantly since XML-RPC was introduced. Here's why Keap is making this transition:
Technical limitations of XML-RPC:
- Outdated protocol: XML-RPC uses older technology standards that limit performance and security improvements.
- Limited data types: XML-RPC has restricted support for modern data structures and formats.
- Verbose XML: XML-RPC messages are large, which slows down applications.
- Poor error handling: XML-RPC produces less informative error messages, which makes troubleshooting difficult.
Strategic focus: By consolidating engineering efforts on REST v2, Keap can deliver new features faster, provide better security and reliability, offer improved developer tools and documentation, and ensure long-term platform stability.
Benefits of Migrating to REST v2
REST v2 offers concrete improvements over XML-RPC:
- Faster performance: REST v2 uses streamlined JSON responses with significantly reduced payload sizes compared to XML-RPC.
- Modern security: REST v2 supports OAuth 2.0, API keys, and enhanced encryption standards.
- Better developer experience: REST v2 uses clear, predictable URL patterns and has comprehensive documentation.
- Future-proof: REST v2 is built on current web standards with ongoing feature development.
- Enhanced features: REST v2 includes new capabilities that are not available in XML-RPC.
Who This Affects
Anyone with an API connection to or from Keap that uses the XML-RPC protocol is affected by this deprecation, including:
- Customers creating or consuming standard or custom integrations that contain XML-RPC endpoints.
- Internal Keap developers ensuring REST v2 endpoints provide value parity with XML-RPC endpoints.
- Partners creating or consuming integrations that contain XML-RPC endpoints, or whose customers do.
- Developer partners and integrators with integrations or custom builds using XML-RPC.
Timeline and Important Dates
| Date | Milestone | What Happens |
|---|---|---|
| December 1, 2025 | Original sunset announcement | Keap communicated that XML-RPC would be fully sunset on December 31, 2026, and migration resources became available. |
| Plan revised | Sunset changed to deprecation | Keap revised the plan from a full sunset to deprecation without warranty or support, with a new date of March 15, 2027. |
| March 15, 2027 | Deprecation begins | Keap stops providing updates, patches, support tickets, and outage assistance for XML-RPC. Existing XML-RPC integrations continue running. |
Recommended migration phases:
Phase 1: Planning
- Audit your current XML-RPC usage.
- Review the REST v2 documentation.
- Plan your migration approach.
Phase 2: Development
- Implement REST v2 integrations.
- Test in your sandbox environment.
Phase 3: Final transition
- Complete remaining migrations.
- Validate that all systems are using REST v2.
- Remove XML-RPC dependencies.
What Happens on March 15, 2027
Starting March 15, 2027, XML-RPC is deprecated without warranty or support. This is different from a sunset. Here's what changes and what doesn't:
What continues: Your existing XML-RPC integration keeps running past March 15, 2027. Keap is not shutting off access to the XML-RPC API on that date, and your data remains fully accessible through either XML-RPC or REST v2.
What stops: Starting March 15, 2027, Keap no longer provides updates or patches for the XML-RPC API, no longer accepts support tickets related to XML-RPC integrations, and no longer answers questions about XML-RPC integrations. This includes outages related to the XML-RPC API — Keap will not troubleshoot or resolve an XML-RPC outage after March 15, 2027.
The risk: If your XML-RPC integration fails after March 15, 2027, there is no fix coming from Keap. The only path forward at that point is migrating the integration to REST v2.
Plan accordingly:
- Start early: Don't wait until an integration actually fails.
- Test thoroughly: Validate your migration in your sandbox environment before removing XML-RPC dependencies.
- Have backup plans: Prepare for potential issues and have contingency procedures in place.
- Document everything: Keep records of your migration progress and testing results.
How to Migrate: Step-by-Step Instructions
Getting started checklist:
1. Audit your current usage. Search your codebase for XML-RPC references:
grep -rin "xmlrpc" /path/to/your/code/ grep -rin "XML-RPC" /path/to/your/code/ grep -rin "xml" /path/to/your/code/
2. Inventory your integrations. List all applications using XML-RPC, document the specific methods being called, and note the frequency and criticality of each integration.
3. Review your current implementation. Identify the authentication methods in use, document the data structures being sent and received, and note any custom error handling or retry logic.
Basic migration pattern
XML-RPC request (old way):
POST https://api.infusionsoft.com/crm/xmlrpc/v1 HTTP/1.1
Content-Type: text/xml
<?xml version="1.0"?>
<methodCall>
<methodName>ContactService.findByNameOrEmail</methodName>
<params>
<param>
<value><string>anything</string></value>
</param>
<param>
<value><string>John</string></value>
</param>
<param>
<value><int>10</int></value>
</param>
<param>
<value><int>0</int></value>
</param>
</params>
</methodCall>
REST v2 request (new way):
GET https://api.infusionsoft.com/crm/rest/v2/contacts?filter=given_name%3D%3DJohn&page_size=10 HTTP/1.1 Authorization: Bearer YOUR_API_TOKEN Accept: application/json
Common migration examples
List Contacts — XML-RPC (old):
$response = file_get_contents(
"https://api.keap.com/crm/xmlrpc/v1",
false,
stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer zZPzJOLRYwAJDHTt98xmUiyiyQxm\r\n" .
"Content-Type: text/xml\r\n" .
"Accept: text/xml\r\n",
"content" => '
<methodCall>
<methodName>DataService.query</methodName>
<params>
<param><value><string>apiKey</string></value></param>
<param><value><string>Contact</string></value></param>
<param><value><int>1000</int></value></param>
<param><value><int>0</int></value></param>
<param><value><struct></struct></value></param>
<param><value>
<array>
<data>
<value><string>Id</string></value>
<value><string>FirstName</string></value>
</data>
</array>
</value>
</param>
</params>
</methodCall>'
]
])
);
List Contacts — REST v2 (new):
$contacts = file_get_contents(
"https://api.keap.com/crm/rest/v2/contacts/",
false,
stream_context_create([
"http" => [
"method" => "GET",
"header" => "Authorization: Bearer uourToken\r\nAccept: application/json\r\nContent-Type: application/json"
]
])
);
Create Contact — XML-RPC (old):
fetch("https://api.infusionsoft.com/crm/xmlrpc/v1", {
method: "POST",
headers: {
"Authorization": "Bearer zZPzJOLRYwAJDHTt98xmUiyiyQxm",
"Content-Type": "text/xml",
"Accept": "text/xml"
},
body: `<?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>john@doe.com</string></value>
</member>
</struct></value>
</param>
</params>
</methodCall>`
})
.then(res => res.text())
.then(console.log)
.catch(console.error);
Create Contact — REST v2 (new):
fetch("https://api.infusionsoft.com/crm/rest/v2/contacts", {
method: "POST",
headers: {
"Authorization": "Bearer zZPzJOLRYwAJDHTt98xmUiyiyQxm",
"Content-Type": "application/json",
"Accept": "application/json"
},
body: JSON.stringify({
given_name: "Johnsec",
family_name: "Doe",
email_addresses: [
{
email: "john@doe.com",
field: 'EMAIL1'
}
]
})
})
.then(res => res.json())
.then(console.log)
.catch(console.error);
Method mapping reference
| XML-RPC Method | REST v2 Endpoint | HTTP Method |
|---|---|---|
| ContactService.load | /v2/contacts/{id} | GET |
| ContactService.add | /v2/contacts | POST |
| ContactService.update | /v2/contacts/{id} | PATCH |
| DataService.query (contacts) | /v2/contacts | GET |
| DataService.delete (contact) | /v2/contacts/{id} | DELETE |
For the complete method-by-method mapping, see the XML-RPC to REST v2 Resource Mapping Guide and the full migration guide.
Software Development Kits (SDKs)
Keap provides official SDKs to make your migration easier and to help you follow best practices. SDKs are available in C#, Java, JavaScript, PHP, Python, and TypeScript, each including documentation and examples. Find the SDKs and their documentation at github.com/infusionsoft/keap-sdk.
Using an SDK simplifies integration by reducing boilerplate code, ensures consistency across projects and environments, provides optimized methods for faster and more reliable API interactions, makes it easier to update and debug your integration as APIs evolve, and includes detailed guides and examples at every stage.
Getting Help
Migration resources:
Direct support:
- Email the API team at api-requests.keap@thryv.com
- Ask questions in the API Q&A Forum
- Reach out to hire integration resources through the Facebook API Community
- Emergency escalation: +1 866-800-0004 x2
Community resources:
Frequently Asked Questions About the Keap XML-RPC API Deprecation
Why is Keap deprecating XML-RPC? Keap is deprecating XML-RPC to provide improved security, better performance, greater stability, and new features that XML-RPC cannot support.
Has the sunset date changed? Yes. XML-RPC was originally set for a full sunset on December 31, 2026. The date is now March 15, 2027, and the change is from a sunset to a deprecation without warranty or support.
What does "deprecated without warranty or support" mean? Keap keeps the XML-RPC API running past March 15, 2027, but stops maintaining it: no updates, no patches, no support tickets, and no help with outages.
Will my XML-RPC integration stop working on March 15, 2027? Not automatically. Your integration keeps running as-is. The risk is that if your integration breaks after March 15, 2027, there is no fix coming from Keap.
What happens if my integration fails after March 15, 2027? It is not repaired. The only path forward is migrating the integration to REST v2.
Is REST v2 more secure than XML-RPC? Yes. REST v2 supports OAuth 2.0, API keys, and enhanced encryption standards, addressing security limitations known in XML-RPC, including vulnerabilities exploited in older XML-RPC implementations like WordPress's.
Can I use both XML-RPC and REST v2 during migration? Yes. You can gradually migrate your integrations while your existing XML-RPC calls continue working.
Will my existing API credentials work with REST v2? Yes. Your account credentials remain the same; only the method of accessing your data changes.
What happens to my data during migration? Your data is not affected by the API change. Only the method of accessing it changes.
How long should I plan for migration? Most customers complete migration in 2–8 weeks, depending on the complexity of their integrations.
Why does REST v2 use pointer-based pagination instead of offset pagination? REST v2 uses pointer-based (cursor-based) pagination for improved performance and scalability with large datasets. This approach avoids the inefficiencies and inconsistencies that offset pagination can cause when data changes between requests.
Is Keap committed to supporting REST v2 long-term? Yes. Keap is consolidating engineering efforts on REST v2 specifically to deliver new features, better security, and long-term platform stability.
Additional Resources
- Migration Guide – XML-RPC to v2
- XML-RPC to REST v2 Resource Mapping Guide (spreadsheet)
- XML-RPC Endpoints Not Being Converted to REST v2 (spreadsheet)
- Developer Guide
If you are an integrator who would like your application status shared in the Integrator Status Report, email api-requests.keap@thryv.com.
Comments
0 comments