# REST API v2 Create/Update Contact duplicate\_option

**URL:** <https://integration.keap.com/t/rest-api-v2-create-update-contact-duplicate-option/90302>\
**Category:** API Q&A\
**Tags:** api\
**Created:** [March 17, 2023, 7:30pm UTC](https://integration.keap.com/t/rest-api-v2-create-update-contact-duplicate-option/90302 "2023-03-17T19:30:40Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jonathan\_Noblejas](https://avatars.discourse-cdn.com/v4/letter/j/4da419/32.png) [@Jonathan\_Noblejas](https://integration.keap.com/u/Jonathan_Noblejas)\
**Post date:** [March 17, 2023, 7:30pm UTC](https://integration.keap.com/t/rest-api-v2-create-update-contact-duplicate-option/90302/1 "2023-03-17T19:30:40Z")

</div>

Hello, does v2 of the REST API have a similar PUT request to v1 for creating or updating a contact with duplicate\_option?

---

<div class="post-metadata">

**Author:** ![TomScott](https://sea1.discourse-cdn.com/flex019/user_avatar/integration.keap.com/tomscott/32/67_2.png) [@TomScott](https://integration.keap.com/u/TomScott)\
**Post date:** [March 17, 2023, 7:53pm UTC](https://integration.keap.com/t/rest-api-v2-create-update-contact-duplicate-option/90302/2 "2023-03-17T19:53:43Z")

</div>

Good afternoon Jonathan!

No, one of the performance issues that we saw occur in the v1 Contacts endpoint was the duplication check, which required an extensive number of subqueries regardless if a duplicate existed or not for each Contact added. To improve performance in v2 we require that the id be specified [for any update](https://developer.infusionsoft.com/docs/restv2/#operation/patchContactUsingPATCH) (and the API design more closely aligns with Google API standards), which results in consumers needing to perform a search by whatever criteria they desire to dedup on and determine the appropriate record to update.

---

<div class="post-metadata">

**Author:** ![Jonathan\_Noblejas](https://avatars.discourse-cdn.com/v4/letter/j/4da419/32.png) [@Jonathan\_Noblejas](https://integration.keap.com/u/Jonathan_Noblejas)\
**Post date:** [March 17, 2023, 10:53pm UTC](https://integration.keap.com/t/rest-api-v2-create-update-contact-duplicate-option/90302/3 "2023-03-17T22:53:07Z")

</div>

I see, thanks for letting me know Tom! So for something similar in v2 Contacts, does this sound about right?

- GET request with “email” filter
- if there’s a result, take the ID and then PATCH
- if not, create the new contact with POST

---

<div class="post-metadata">

**Author:** ![TomScott](https://sea1.discourse-cdn.com/flex019/user_avatar/integration.keap.com/tomscott/32/67_2.png) [@TomScott](https://integration.keap.com/u/TomScott)\
**Post date:** [March 20, 2023, 4:19pm UTC](https://integration.keap.com/t/rest-api-v2-create-update-contact-duplicate-option/90302/4 "2023-03-20T16:19:58Z")

</div>

Yep, that’s the expected flow for a create or update. 🙂
