# API Q&A

**URL:** https://integration.keap.com/c/api/5.md

[Latest](https://integration.keap.com/latest.md) · [Categories](https://integration.keap.com/categories.md) · [Tags](https://integration.keap.com/tags.md)

---

## [About the API Q&A category](https://integration.keap.com/t/about-the-api-q-a-category/11)

<div class="topic-metadata">

**Author:** [@martinc](https://integration.keap.com/u/martinc)\
**Replies:** 0\
**Last updated:** [January 5, 2017, 7:43pm UTC](https://integration.keap.com/t/about-the-api-q-a-category/11 "2017-01-05T19:43:51Z")

</div>

Ask questions and get answers from seasoned developers in our API community. This group is moderated by Infusionsoft employees and you, the developer community. Please help us make this a great experience for anyone see…

---

## [Rest v2 gap - listAppointments?](https://integration.keap.com/t/rest-v2-gap-listappointments/94166)

<div class="topic-metadata">

**Author:** [@Casey\_Page](https://integration.keap.com/u/Casey_Page)\
**Replies:** 3\
**Last updated:** [October 22, 2026, 11:30pm UTC](https://integration.keap.com/t/rest-v2-gap-listappointments/94166 "2026-10-22T23:30:29Z")

</div>

In the legacy XML RPC API - we have the ContactAction table that holds notes/tasks/appointments. In the rest v2 API these are separate API’s.. we have listAllNotes, listTasks, but we don’t have listAppointments. Can w…

---

## [REST v2 - Certain GET queries fail to respond](https://integration.keap.com/t/rest-v2-certain-get-queries-fail-to-respond/94150)

<div class="topic-metadata">

**Author:** [@CG\_Dev](https://integration.keap.com/u/CG_Dev)\
**Replies:** 4\
**Last updated:** [October 19, 2026, 7:26pm UTC](https://integration.keap.com/t/rest-v2-certain-get-queries-fail-to-respond/94150 "2026-10-19T19:26:11Z")

</div>

While testing our REST V2 conversion, we noticed that some of the long-form queries would fail. Specifically, they would hit a CURL timeout. (Which if removed would make the test queries last multiple minutes until manua…

---

## [Endpoint for V2 / paymentMethods Fails after 2 page](https://integration.keap.com/t/endpoint-for-v2-paymentmethods-fails-after-2-page/94102)

<div class="topic-metadata">

**Author:** [@Christian\_Wiles](https://integration.keap.com/u/Christian_Wiles)\
**Replies:** 7\
**Last updated:** [October 19, 2026, 7:24pm UTC](https://integration.keap.com/t/endpoint-for-v2-paymentmethods-fails-after-2-page/94102 "2026-10-19T19:24:42Z")

</div>

Hi Omar and team, We have an issue where the third and following pages were failing to return the listing of table data. ERROR: Keap request error/timeout: HTTPSConnectionPool(host=‘api.infusionsoft. com’, port=443) C…

---

## [REST v2 - Where are the Updates?](https://integration.keap.com/t/rest-v2-where-are-the-updates/94181)

<div class="topic-metadata">

**Author:** [@Pav](https://integration.keap.com/u/Pav)\
**Replies:** 0\
**Last updated:** [October 16, 2026, 11:40am UTC](https://integration.keap.com/t/rest-v2-where-are-the-updates/94181 "2026-10-16T11:40:48Z")

</div>

@HendrikFernandez / @Tom\_Scott, would it be possible to tell us when the next round of updates are going to be done for REST v2. Its been several weeks since anything new was released, and there are dozens of issues tha…

---

## [REST v2 - Opportunity - Create an Opportunity - Empty Affiliate ID issue](https://integration.keap.com/t/rest-v2-opportunity-create-an-opportunity-empty-affiliate-id-issue/94134)

<div class="topic-metadata">

**Author:** [@Pav](https://integration.keap.com/u/Pav)\
**Replies:** 2\
**Last updated:** [October 15, 2026, 10:30pm UTC](https://integration.keap.com/t/rest-v2-opportunity-create-an-opportunity-empty-affiliate-id-issue/94134 "2026-10-15T22:30:09Z")

</div>

@OmarAlmonte, on using the Opportunity - Create an Opportunity endpoint for the first time it returned the following message below. Affiliate Id is invalid That seems to be a glitch because no Affiliate ID was supplied…

---

## [Move the XML-RPC Sunset to 2027](https://integration.keap.com/t/move-the-xml-rpc-sunset-to-2027/94089)

<div class="topic-metadata">

**Author:** [@Pav](https://integration.keap.com/u/Pav)\
**Replies:** 22\
**Last updated:** [October 13, 2026, 6:36pm UTC](https://integration.keap.com/t/move-the-xml-rpc-sunset-to-2027/94089 "2026-10-13T18:36:08Z")

</div>

@Angi\_Hast For the past several months your team have been trying to implement the gaps for REST v2. As we are migrating the code across some of us are finding more gaps, issues, and limitations with the endpoints. Yo…

---

## [OAuth secret rotation](https://integration.keap.com/t/oauth-secret-rotation/94180)

<div class="topic-metadata">

**Author:** [@jon](https://integration.keap.com/u/jon)\
**Replies:** 3\
**Last updated:** [October 13, 2026, 4:36pm UTC](https://integration.keap.com/t/oauth-secret-rotation/94180 "2026-10-13T16:36:09Z")

</div>

I am looking to rotate the client secret for our OAuth app, I can’t find an option under the app to do this. I can see revoke and add key but I am worried that revoke isn’t a rotation and will result in needing to add a …

---

## [REST v2 sales/payments pay\_status vs orders/{order\_id}/payments status](https://integration.keap.com/t/rest-v2-sales-payments-pay-status-vs-orders-order-id-payments-status/94177)

<div class="topic-metadata">

**Author:** [@Yuga\_Ego](https://integration.keap.com/u/Yuga_Ego)\
**Replies:** 0\
**Last updated:** [October 9, 2026, 12:49pm UTC](https://integration.keap.com/t/rest-v2-sales-payments-pay-status-vs-orders-order-id-payments-status/94177 "2026-10-09T12:49:33Z")

</div>

Why do the possible and returned values of the sales/payments status field and orders/{order\_id}/payments pay\_status field differ? My tests show that sales/payments status is always empty, even when the corresponding or…

---

## [Empty order due\_time in list orders /rest/v2/orders response](https://integration.keap.com/t/empty-order-due-time-in-list-orders-rest-v2-orders-response/94173)

<div class="topic-metadata">

**Author:** [@Yuga\_Ego](https://integration.keap.com/u/Yuga_Ego)\
**Replies:** 3\
**Last updated:** [October 9, 2026, 12:00pm UTC](https://integration.keap.com/t/empty-order-due-time-in-list-orders-rest-v2-orders-response/94173 "2026-10-09T12:00:08Z")

</div>

In my tests, order due\_time is always empty. How to retrieve value equal to XML-RPC’s Job.DueDate value?

---

## [InvoiceService.calculateAmountOwed REST equivalent](https://integration.keap.com/t/invoiceservice-calculateamountowed-rest-equivalent/94174)

<div class="topic-metadata">

**Author:** [@Yuga\_Ego](https://integration.keap.com/u/Yuga_Ego)\
**Replies:** 4\
**Last updated:** [October 7, 2026, 10:27pm UTC](https://integration.keap.com/t/invoiceservice-calculateamountowed-rest-equivalent/94174 "2026-10-07T22:27:17Z")

</div>

With REST API, do we load order by invoice\_id and then calculate difference between order total\_due and total\_paid to retrieve the value equal to XML-RPC InvoiceService.calculateAmountOwed?

---

## [What is going to happen to the Integration Community?](https://integration.keap.com/t/what-is-going-to-happen-to-the-integration-community/94172)

<div class="topic-metadata">

**Author:** [@Pav](https://integration.keap.com/u/Pav)\
**Replies:** 0\
**Last updated:** [October 2, 2026, 4:01pm UTC](https://integration.keap.com/t/what-is-going-to-happen-to-the-integration-community/94172 "2026-10-02T16:01:30Z")

</div>

An announcement was made today regarding the main Keap Community. There was no mention about going to the Integration Community for assistance. So the question is, what is going to happen to this community? We wanted…

---

## [V2 ContactPaymentMethod is missing "status"](https://integration.keap.com/t/v2-contactpaymentmethod-is-missing-status/94162)

<div class="topic-metadata">

**Author:** [@Christian\_Wiles](https://integration.keap.com/u/Christian_Wiles)\
**Replies:** 4\
**Last updated:** [October 1, 2026, 10:05pm UTC](https://integration.keap.com/t/v2-contactpaymentmethod-is-missing-status/94162 "2026-10-01T22:05:29Z")

</div>

Hi team, We are running an API call to v2 for contact payment method. We are noticing that we are not getting the status returned. Can you please check on your end and be certain that we are getting all statuses of payme…

---

## [V2 /orders/{order\_id}/items/{order\_item\_id}:applyCommission -- order item id not found](https://integration.keap.com/t/v2-orders-order-id-items-order-item-id-applycommission-order-item-id-not-found/94164)

<div class="topic-metadata">

**Author:** [@Rick\_Nielsen](https://integration.keap.com/u/Rick_Nielsen)\
**Replies:** 1\
**Last updated:** [September 21, 2026, 1:19pm UTC](https://integration.keap.com/t/v2-orders-order-id-items-order-item-id-applycommission-order-item-id-not-found/94164 "2026-09-21T13:19:03Z")

</div>

https://api.infusionsoft.com/crm/rest/v2/orders/{order\_id}/items/{order\_item\_id}:applyCommission Continue to get this error although I can using the correct order id and order item id. Could not apply in Keap: Keap rej…

---

## [REST v2 - Apply multiple tags to contact is not working](https://integration.keap.com/t/rest-v2-apply-multiple-tags-to-contact-is-not-working/94159)

<div class="topic-metadata">

**Author:** [@Marion\_Dorsett2](https://integration.keap.com/u/Marion_Dorsett2)\
**Replies:** 1\
**Last updated:** [August 28, 2026, 1:08pm UTC](https://integration.keap.com/t/rest-v2-apply-multiple-tags-to-contact-is-not-working/94159 "2026-08-28T13:08:14Z")

</div>

@OmarAlmonte According to the REST v2 documentation here: …we should be able to make a PATCH request to the contact record and apply multiple tags to a contact by passing this querystring: ?update\_mask=tag\_ids … an…

---

## [File upload still erroring](https://integration.keap.com/t/file-upload-still-erroring/94073)

<div class="topic-metadata">

**Author:** [@Jeffrey\_Chimene](https://integration.keap.com/u/Jeffrey_Chimene)\
**Replies:** 6\
**Last updated:** [August 11, 2026, 3:29pm UTC](https://integration.keap.com/t/file-upload-still-erroring/94073 "2026-08-11T15:29:22Z")

</div>

@OmarAlmonte I see the contact create sdk call issue is resolved. congratulations. I’m asking now about the file upload error 500? Thanks! 1) TestFileUpload::testUploadAttachments TestFileUpload::testUploadAttachments()…

---

## [Rest v2 bug - 400 error listLeadsources](https://integration.keap.com/t/rest-v2-bug-400-error-listleadsources/94113)

<div class="topic-metadata">

**Author:** [@Casey\_Page](https://integration.keap.com/u/Casey_Page)\
**Replies:** 3\
**Last updated:** [August 11, 2026, 1:58pm UTC](https://integration.keap.com/t/rest-v2-bug-400-error-listleadsources/94113 "2026-08-11T13:58:51Z")

</div>

Hey @OmarAlmonte I mentioned this in Facebook message back in April, but just wanted to post it here to keep things consolidated for you. I have a Keap application “dh106” - I’m basically just calling listLeadsources a…

---

## [REST v2 - List Orders - Date Time Zone](https://integration.keap.com/t/rest-v2-list-orders-date-time-zone/94022)

<div class="topic-metadata">

**Author:** [@Pav](https://integration.keap.com/u/Pav)\
**Replies:** 4\
**Last updated:** [August 11, 2026, 1:57pm UTC](https://integration.keap.com/t/rest-v2-list-orders-date-time-zone/94022 "2026-08-11T13:57:04Z")

</div>

@OmarAlmonte - Could you do me a favour and verify something for me please. I am trying out the List Orders Endpoint for REST v2, and have the following filter set: created\_since\_time==2026-04-21T00:00:00.000Z;created\_…

---

## [V2 LeadSource Endpoint is down](https://integration.keap.com/t/v2-leadsource-endpoint-is-down/94021)

<div class="topic-metadata">

**Author:** [@Christian\_Wiles](https://integration.keap.com/u/Christian_Wiles)\
**Replies:** 8\
**Last updated:** [August 11, 2026, 1:56pm UTC](https://integration.keap.com/t/v2-leadsource-endpoint-is-down/94021 "2026-08-11T13:56:31Z")

</div>

{ "code": 500, "message": "There was a problem loading these Lead Source records", "status": "Internal Server Error", "details": \[ { "domain": "leadsource", "resource": "GET /rest/v2/leadSources" …

---

## [REST v1 Delete Tag is not working](https://integration.keap.com/t/rest-v1-delete-tag-is-not-working/94153)

<div class="topic-metadata">

**Author:** [@Sean\_Manning](https://integration.keap.com/u/Sean_Manning)\
**Replies:** 2\
**Last updated:** [August 6, 2026, 3:10pm UTC](https://integration.keap.com/t/rest-v1-delete-tag-is-not-working/94153 "2026-08-06T15:10:25Z")

</div>

I’m trying to delete a set of 3 tags from a specific contact, if it has them. I’m going through the InfusedWooPRO plugin’s oauth\_helper file to send the request to Keap. The line calling the OAuth function looks like t…

---

## [Legacy API misbehavior?](https://integration.keap.com/t/legacy-api-misbehavior/94151)

<div class="topic-metadata">

**Author:** [@Jeffrey\_Chimene](https://integration.keap.com/u/Jeffrey_Chimene)\
**Replies:** 5\
**Last updated:** [August 3, 2026, 1:58pm UTC](https://integration.keap.com/t/legacy-api-misbehavior/94151 "2026-08-03T13:58:55Z")

</div>

@OmarAlmonte I’m noticing an unexpected “Contact not found” exception after successfully creating and manipulating contacts via the Legacy API. Here is the first log extract. Notice that contact creation, email optin, f…

---

## [REST v2 - Tags - Create Tag - Tag name is invalid. Details: Cannot contain '=' or ',' characters](https://integration.keap.com/t/rest-v2-tags-create-tag-tag-name-is-invalid-details-cannot-contain-or-characters/94149)

<div class="topic-metadata">

**Author:** [@Pav](https://integration.keap.com/u/Pav)\
**Replies:** 2\
**Last updated:** [August 3, 2026, 1:33pm UTC](https://integration.keap.com/t/rest-v2-tags-create-tag-tag-name-is-invalid-details-cannot-contain-or-characters/94149 "2026-08-03T13:33:24Z")

</div>

@OmarAlmonte, need to point out a new error that was raised via the Tags - Create Tag endpoint. Tag name is invalid. Details: Cannot contain '=' or ',' characters. In the XML-RPC API this was not an issue. it would be…

---

## [Handling of unknown values for "Dropdown" custom fields unexpectedly changed](https://integration.keap.com/t/handling-of-unknown-values-for-dropdown-custom-fields-unexpectedly-changed/94145)

<div class="topic-metadata">

**Author:** [@Jim\_Winstead](https://integration.keap.com/u/Jim_Winstead)\
**Replies:** 2\
**Last updated:** [July 30, 2026, 8:23pm UTC](https://integration.keap.com/t/handling-of-unknown-values-for-dropdown-custom-fields-unexpectedly-changed/94145 "2026-07-30T20:23:31Z")

</div>

It appears that until this morning, the API was able to handle Dropdown custom fields on contacts set to values that were not in the dropdown list, but it now rejects them. This appears to have changed around 9am Pacific…

---

## [Include referral link and redirect link in v2 Referrals API response](https://integration.keap.com/t/include-referral-link-and-redirect-link-in-v2-referrals-api-response/94144)

<div class="topic-metadata">

**Author:** [@Rick\_Nielsen](https://integration.keap.com/u/Rick_Nielsen)\
**Replies:** 0\
**Last updated:** [July 27, 2026, 3:11pm UTC](https://integration.keap.com/t/include-referral-link-and-redirect-link-in-v2-referrals-api-response/94144 "2026-07-27T15:11:00Z")

</div>

We’re using the v2 List Referrals endpoint (GET /crm/rest/v2/referrals) and the response currently returns fields like source, contact\_id, referral\_partner\_id, and referral\_time — but it does not include which referral l…

---

## [V2 API functionality gaps: ContactGroupAssign DateCreated, custom field search, task custom fields](https://integration.keap.com/t/v2-api-functionality-gaps-contactgroupassign-datecreated-custom-field-search-task-custom-fields/93971)

<div class="topic-metadata">

**Author:** [@James\_Austin](https://integration.keap.com/u/James_Austin)\
**Replies:** 5\
**Last updated:** [July 27, 2026, 12:57pm UTC](https://integration.keap.com/t/v2-api-functionality-gaps-contactgroupassign-datecreated-custom-field-search-task-custom-fields/93971 "2026-07-27T12:57:06Z")

</div>

Good Afternoon, We’ve been working through our updates to the API and have noted a few gaps, in terms of functionality within the v2 API. Having said that, it is encouraging to see some gaps on my list get implemented a…

---

## [Searching for Contacts via any phone # using API](https://integration.keap.com/t/searching-for-contacts-via-any-phone-using-api/93887)

<div class="topic-metadata">

**Author:** [@Paul\_Sokol](https://integration.keap.com/u/Paul_Sokol)\
**Replies:** 16\
**Last updated:** [July 27, 2026, 12:23pm UTC](https://integration.keap.com/t/searching-for-contacts-via-any-phone-using-api/93887 "2026-07-27T12:23:18Z")

</div>

I believe my problem is an API consideration that yes, needs to go through Partner Technical Support at some point, and I’ll do my best to share my understanding of the deeper root cause. Regarding a problem statement, i…

---

## [REST v2 - Tags - List Tags - Tag IDs Filter Limited to 100 Tags](https://integration.keap.com/t/rest-v2-tags-list-tags-tag-ids-filter-limited-to-100-tags/94141)

<div class="topic-metadata">

**Author:** [@Pav](https://integration.keap.com/u/Pav)\
**Replies:** 1\
**Last updated:** [July 27, 2026, 12:22pm UTC](https://integration.keap.com/t/rest-v2-tags-list-tags-tag-ids-filter-limited-to-100-tags/94141 "2026-07-27T12:22:45Z")

</div>

@OmarAlmonte, I do not like these inconsistencies with REST v2. In XML-RPC you can provide a list of 1000 IDs to any of the Data Tables, like the ContactGroup table. In a piece of code that was replaced for REST v2, th…

---

## [Rest V2 Gap - Filter by ID in relevant list methods](https://integration.keap.com/t/rest-v2-gap-filter-by-id-in-relevant-list-methods/93920)

<div class="topic-metadata">

**Author:** [@Casey\_Page](https://integration.keap.com/u/Casey_Page)\
**Replies:** 7\
**Last updated:** [July 24, 2026, 3:08pm UTC](https://integration.keap.com/t/rest-v2-gap-filter-by-id-in-relevant-list-methods/93920 "2026-07-24T15:08:16Z")

</div>

In the XMLRPC API DataService - we could paginate through various tables. Most of these tables have an “id” field. So when paginating, I could filter for id \> 0 .. get 1000 records back (let’s say the last ID is 2548) ..…

---

## [Sandbox Question - Testing Payments](https://integration.keap.com/t/sandbox-question-testing-payments/94130)

<div class="topic-metadata">

**Author:** [@CG\_Dev](https://integration.keap.com/u/CG_Dev)\
**Replies:** 8\
**Last updated:** [July 23, 2026, 8:34pm UTC](https://integration.keap.com/t/sandbox-question-testing-payments/94130 "2026-07-23T20:34:55Z")

</div>

Hi there, not sure if this the right place for SandBox questions but the reason we are in the SandBox is to test RESTv2 updates. We are beginning work on Payments. The settings seems to let me only sign up for Stripe? …

---

## [Looking up values in custom contact field with REST V2 API](https://integration.keap.com/t/looking-up-values-in-custom-contact-field-with-rest-v2-api/87073)

<div class="topic-metadata">

**Author:** [@Brian\_Quimby](https://integration.keap.com/u/Brian_Quimby)\
**Replies:** 16\
**Last updated:** [July 22, 2026, 4:10pm UTC](https://integration.keap.com/t/looking-up-values-in-custom-contact-field-with-rest-v2-api/87073 "2026-07-22T16:10:13Z")

</div>

I’ve seen this question answered for V1 and in xmlRpc, but I’m needing to figure this out using the new REST V2. I can actually update my custom fields as I know their ids, but I’m not rather new to working with REST an…

[Next page](https://integration.keap.com/c/api/5.md?page=1)
