We all started somewhere! Share your experience on the Get Advice: Let's Get Started Sweepstakes thread and be entered to win a $100 credit on your Constant Contact account.

(403) Forbidden adding new contact

Regular Participant

(403) Forbidden adding new contact

I am trying to add a new contact from an asp.net form but I am getting "The remote server returned an error: (403) Forbidden."


    Public Function AddContact(ByVal UserEmailAddress As String, ByVal ContactListNumber As Integer) As String
            Dim xml As String
            xml = "<?xml version='1.0' encoding='utf-8' ?>" & _
            "<entry xmlns='http://www.w3.org/2005/Atom'>" & _
                "<title type='text'></title>" & _
                "<updated>2008-07-23T14:21:06.407Z</updated>" & _
                "<author></author>" & _
                "<id>data:,none</id>" & _
                "<summary type='text'>Contact</summary>" & _
                "<content type='application/vnd.ctct+xml'>" & _
                    "<Contact xmlns='http://ws.constantcontact.com/ns/1.0/'>" & _
                        "<EmailAddress>" & UserEmailAddress.ToString() & "</EmailAddress>" & _
                        "<OptInSource>ACTION_BY_CONTACT</OptInSource>" & _
                        "<ContactLists>" & _
                            "<ContactList id='http://api.constantcontact.com/ws/customers/[username]/lists/" & ContactListNumber.ToString() & "'/>" & _
                        "</ContactLists>" & _
                    "</Contact>" & _
                "</content>" & _

            ' Set up the request
            Dim request As HttpWebRequest
            request = WebRequest.Create("https://api.constantcontact.com/ws/customers/[username]/contacts/")
            Dim byteData As Byte() = UTF8Encoding.UTF8.GetBytes(xml.ToString())
            request.Method = "POST"
            request.ContentType = "application/atom+xml"
            request.ContentLength = byteData.Length
            request.Credentials = New NetworkCredential("[api key]%[username]", "[password]")

            ' Send the request
            Dim postStream As Stream
            postStream = request.GetRequestStream()
            postStream.Write(byteData, 0, byteData.Length)

            Dim response As HttpWebResponse
            response = request.GetResponse()

        Catch ex As WebException
            Return ex.ToString
        End Try
    End Function



I'm not noticing anything right away that would cause a 403, but POSTs to create a new contact should be sent to the URI https://api.constantcontact.com/ws/customers/username/contacts, instead of https://api.constantcontact.com/ws/customers/username/contacts/. Typically this returns a 404, but it's possible this could be causing your error.


Would you be able to try with this alternate URI, and let us know if you're still seeing the same issue?


Nick Galbraith
Support Engineer
Regular Participant

Thanks for your response Nick.

After changing the URI, I am now getting 


The remote server returned an error: (401) Unauthorized.



The 401 error will come up when there is a mismatch between the username in the URI and the username in the authentication, or when the password is incorrect. I would suggest troubleshooting with RESTClient. If that program doesn't help, you can email webservices@constantcontact.com with your full code, and we can troubleshoot privately.


Nick Galbraith
Support Engineer
Developer Portal

View API documentation, code samples, get your API key.

Visit Page