# V2 Rest API Add Contact 400 Bad Request

**URL:** <https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652>\
**Category:** API Q&A\
**Created:** [May 31, 2022, 9:21pm UTC](https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652 "2022-05-31T21:21:25Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jeff\_Campbell](https://avatars.discourse-cdn.com/v4/letter/j/ecd19e/32.png) [@Jeff\_Campbell](https://integration.keap.com/u/Jeff_Campbell)\
**Post date:** [May 31, 2022, 9:21pm UTC](https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652/1 "2022-05-31T21:21:25Z")

</div>

Does any one have an example of adding a contact via the V2 Rest API? I am getting a 400 Bad Request Error. The documentation says one item is required in email\_addresses or phone\_numbers and countryPcode is required if region is specified. I am only adding an email address and nothing else and continue to get this error no matter what I try.

---

<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:** [May 31, 2022, 10:09pm UTC](https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652/2 "2022-05-31T22:09:41Z")

</div>

Good afternoon Jeff!

Can you provide the URL and a sample of the payload (removing sensitive data)?

---

<div class="post-metadata">

**Author:** ![Jeff\_Campbell](https://avatars.discourse-cdn.com/v4/letter/j/ecd19e/32.png) [@Jeff\_Campbell](https://integration.keap.com/u/Jeff_Campbell)\
**Post date:** [June 1, 2022, 1:20am UTC](https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652/3 "2022-06-01T01:20:25Z")

</div>

Hi Tom,

I am sending a post to: [https://api.infusionsoft.com/crm/rest/v2/contacts](https://api.infusionsoft.com/crm/rest/v2/contacts)

This is the content I am sending

`{"email_addresses":[{"email":"email@example.com","field":"EMAIL1","opt_in_reason":"Permission box was checked.","is_opt_in":true,"email_opt_status":"SINGLE_OPT_IN"}]}`

I have been trying to get the minimal working and have more fields to add, just trying to get a basic contact added first.

---

<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:** [June 1, 2022, 4:41pm UTC](https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652/4 "2022-06-01T16:41:41Z")

</div>

![image](https://us1.discourse-cdn.com/flex019/uploads/infusionsoft1/original/2X/2/2391ae9b3c4d63b2b43fbd7f69bb49b42d902788.png)  
Per the [Create a Contact](https://developer.infusionsoft.com/docs/restv2/#operation/createContactUsingPOST_1) documentation, you should only have three properties on the email\_address sub-object: email, field and opt\_in\_reason. The other two properties you have there, is\_opt\_in and email\_opt\_status are returned from the server in response to queries as computed values.

---

<div class="post-metadata">

**Author:** ![Jeff\_Campbell](https://avatars.discourse-cdn.com/v4/letter/j/ecd19e/32.png) [@Jeff\_Campbell](https://integration.keap.com/u/Jeff_Campbell)\
**Post date:** [June 1, 2022, 11:22pm UTC](https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652/5 "2022-06-01T23:22:37Z")

</div>

Hi Tom,

Thanks for the information. I am still getting a 400 Bad Request with the following payload. Any ideas?

{“email\_addresses”:[{“[email":"email@example.com](mailto:email%22:%22email@example.com)”,“field”:“EMAIL1”,“opt\_in\_reason”:“Permission box was checked.”}]}

Same with this payload:  
{“email\_addresses”:[{“[email":"email@example.com](mailto:email%22:%22email@example.com)”,“field”:“EMAIL\_FIELD\_UNSPECIFIED”,“opt\_in\_reason”:“Processed Order”}]}

---

<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:** [June 2, 2022, 7:06pm UTC](https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652/6 "2022-06-02T19:06:29Z")

</div>

I would suggest checking your payload to make sure you don’t have any strange characters in there (such as backquotes), as it is apparently working fine.

 ![image](https://us1.discourse-cdn.com/flex019/uploads/infusionsoft1/original/2X/c/cb575d9fe02df2bf63ea5a86eb3f088b79deedab.png)

---

<div class="post-metadata">

**Author:** ![Jeff\_Campbell](https://avatars.discourse-cdn.com/v4/letter/j/ecd19e/32.png) [@Jeff\_Campbell](https://integration.keap.com/u/Jeff_Campbell)\
**Post date:** [June 2, 2022, 7:12pm UTC](https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652/7 "2022-06-02T19:12:01Z")

</div>

Are there any c# code examples anywhere? The only c# examples I can find are over 10 years old and using an API that has been marked as deprecated for over 5 years.

---

<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:** [June 2, 2022, 7:14pm UTC](https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652/8 "2022-06-02T19:14:22Z")

</div>

We do not use .NET in-house, so I am unfortunately unable to assist you with that.

---

<div class="post-metadata">

**Author:** ![Jeff\_Campbell](https://avatars.discourse-cdn.com/v4/letter/j/ecd19e/32.png) [@Jeff\_Campbell](https://integration.keap.com/u/Jeff_Campbell)\
**Post date:** [June 2, 2022, 8:31pm UTC](https://integration.keap.com/t/v2-rest-api-add-contact-400-bad-request/87652/9 "2022-06-02T20:31:21Z")

</div>

Can you test to see if “EMAIL\_FIELD\_UNSPECIFIED” works for you? I am not sure what changed, but using EMAIL1 works and EMAIL\_FIELD\_UNSPECIFIED does not.
