> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.itspropel.com/llms.txt.
> For full documentation content, see https://docs.itspropel.com/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.itspropel.com/_mcp/server.

# Create Customer Contact

POST https://crm/customers/%7Bcustomer_id%7D/contacts
Content-Type: multipart/form-data

Reference: https://docs.itspropel.com/propel-biz/05-crm/customers/customer-contact-management/create-customer-contact

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: PropelBiz
  version: 1.0.0
paths:
  /crm/customers/%7Bcustomer_id%7D/contacts:
    post:
      operationId: create-customer-contact
      summary: Create Customer Contact
      tags:
        - >-
          subpackage_05Crm.subpackage_05Crm/customers.subpackage_05Crm/customers/customerContactManagement
      parameters:
        - name: '{{tenant_key_name}}'
          in: header
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Successful response
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PostCrmCustomers%7bcustomer_id%7dContactsRequestNotFoundError
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PostCrmCustomers%7bcustomer_id%7dContactsRequestUnprocessableEntityError
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                fax:
                  type: string
                  description: 'Optional: Fax number'
                email:
                  type: string
                  description: 'Optional: Email address'
                notes:
                  type: string
                  description: 'Optional: Additional notes about this contact'
                title:
                  type: string
                  description: 'Optional: Title (Mr., Ms., Dr., etc.)'
                job_title:
                  type: string
                  description: 'Optional: Job title'
                last_name:
                  type: string
                  description: 'Required: Last name'
                department:
                  type: string
                  description: 'Optional: Department'
                first_name:
                  type: string
                  description: 'Required: First name'
                is_primary:
                  type: string
                  description: 'Optional: Set as primary contact (true, false)'
                phone_work:
                  type: string
                  description: 'Optional: Work phone number'
                accepts_sms:
                  type: string
                  description: 'Optional: Accepts SMS messages (true, false)'
                company_name:
                  type: string
                  description: 'Optional: Company name'
                contact_type:
                  type: string
                  description: >-
                    Required: Contact type (primary, billing, emergency,
                    technical, administrative, other)
                phone_mobile:
                  type: string
                  description: 'Optional: Mobile phone number'
                contact_since:
                  type: string
                  description: 'Optional: Contact relationship start date (YYYY-MM-DD)'
                phone_primary:
                  type: string
                  description: 'Optional: Primary phone number'
                available_24_7:
                  type: string
                  description: 'Optional: Available 24/7 for emergencies (true, false)'
                phone_extension:
                  type: string
                  description: 'Optional: Phone extension'
                accepts_marketing:
                  type: string
                  description: 'Optional: Accepts marketing communications (true, false)'
                can_make_payments:
                  type: string
                  description: 'Optional: Can make payments (true, false)'
                can_view_invoices:
                  type: string
                  description: 'Optional: Can view invoices (true, false)'
                receives_invoices:
                  type: string
                  description: 'Optional: Receives invoices (true, false)'
                can_approve_quotes:
                  type: string
                  description: 'Optional: Can approve quotes (true, false)'
                can_authorize_work:
                  type: string
                  description: 'Optional: Can authorize work orders (true, false)'
                emergency_priority:
                  type: string
                  description: >-
                    Optional: Emergency priority level (1-10, required if
                    is_emergency_contact is true)
                preferred_language:
                  type: string
                  description: 'Optional: Preferred language code'
                authorization_limit:
                  type: string
                  description: >-
                    Optional: Work authorization limit in dollars (required if
                    can_authorize_work is true)
                relationship_status:
                  type: string
                  description: >-
                    Optional: Relationship status (active, inactive, suspended,
                    do_not_contact)
                can_schedule_service:
                  type: string
                  description: 'Optional: Can schedule service appointments (true, false)'
                customer_location_id:
                  type: string
                  description: 'Optional: Associated location ID'
                is_emergency_contact:
                  type: string
                  description: 'Optional: Is emergency contact (true, false)'
                portal_access_enabled:
                  type: string
                  description: 'Optional: Enable portal access (true, false)'
                preferred_contact_time:
                  type: string
                  description: >-
                    Optional: Preferred contact time (morning, afternoon,
                    evening, business_hours, anytime)
                preferred_contact_method:
                  type: string
                  description: >-
                    Optional: Preferred contact method (phone, email, sms,
                    portal, mail)
                receives_emergency_alerts:
                  type: string
                  description: 'Optional: Receives emergency alerts (true, false)'
                receives_service_reminders:
                  type: string
                  description: 'Optional: Receives service reminders (true, false)'
                accepts_email_notifications:
                  type: string
                  description: 'Optional: Accepts email notifications (true, false)'
                receives_completion_notices:
                  type: string
                  description: 'Optional: Receives completion notices (true, false)'
                portal_password_reset_required:
                  type: string
                  description: >-
                    Optional: Require password reset on first login (true,
                    false)
                receives_appointment_confirmations:
                  type: string
                  description: 'Optional: Receives appointment confirmations (true, false)'
              required:
                - fax
                - email
                - notes
                - title
                - job_title
                - last_name
                - department
                - first_name
                - is_primary
                - phone_work
                - accepts_sms
                - company_name
                - contact_type
                - phone_mobile
                - contact_since
                - phone_primary
                - available_24_7
                - phone_extension
                - accepts_marketing
                - can_make_payments
                - can_view_invoices
                - receives_invoices
                - can_approve_quotes
                - can_authorize_work
                - emergency_priority
                - preferred_language
                - authorization_limit
                - relationship_status
                - can_schedule_service
                - customer_location_id
                - is_emergency_contact
                - portal_access_enabled
                - preferred_contact_time
                - preferred_contact_method
                - receives_emergency_alerts
                - receives_service_reminders
                - accepts_email_notifications
                - receives_completion_notices
                - portal_password_reset_required
                - receives_appointment_confirmations
servers:
  - url: https:/
components:
  schemas:
    CrmCustomers7BcustomerId7DContactsPostResponsesContentApplicationJsonSchemaErrorsItemsSource:
      type: object
      properties:
        pointer:
          type: string
      required:
        - pointer
      title: >-
        CrmCustomers7BcustomerId7DContactsPostResponsesContentApplicationJsonSchemaErrorsItemsSource
    CrmCustomers7BcustomerId7DContactsPostResponsesContentApplicationJsonSchemaErrorsItems:
      type: object
      properties:
        title:
          type: string
        detail:
          type: string
        source:
          $ref: >-
            #/components/schemas/CrmCustomers7BcustomerId7DContactsPostResponsesContentApplicationJsonSchemaErrorsItemsSource
        status:
          type: string
      required:
        - title
        - detail
        - source
        - status
      title: >-
        CrmCustomers7BcustomerId7DContactsPostResponsesContentApplicationJsonSchemaErrorsItems
    PostCrmCustomers%7bcustomer_id%7dContactsRequestNotFoundError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/CrmCustomers7BcustomerId7DContactsPostResponsesContentApplicationJsonSchemaErrorsItems
      required:
        - errors
      title: PostCrmCustomers%7bcustomer_id%7dContactsRequestNotFoundError
    PostCrmCustomers%7bcustomer_id%7dContactsRequestUnprocessableEntityError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: >-
              #/components/schemas/CrmCustomers7BcustomerId7DContactsPostResponsesContentApplicationJsonSchemaErrorsItems
      required:
        - errors
      title: PostCrmCustomers%7bcustomer_id%7dContactsRequestUnprocessableEntityError

```

## SDK Code Examples

```python
import requests

url = "https://https/crm/customers/%7Bcustomer_id%7D/contacts"

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fax\"\r\n\r\n555-123-4567\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njane.doe@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"notes\"\r\n\r\nPrimary contact for billing inquiries.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nMs.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"job_title\"\r\n\r\nAccount Manager\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"department\"\r\n\r\nFinance\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_primary\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_work\"\r\n\r\n555-987-6543\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_sms\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Corporation\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contact_type\"\r\n\r\nbilling\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_mobile\"\r\n\r\n555-555-1212\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contact_since\"\r\n\r\n2020-05-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_primary\"\r\n\r\n555-555-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"available_24_7\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_extension\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_marketing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_make_payments\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_view_invoices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_invoices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_approve_quotes\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_authorize_work\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emergency_priority\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"authorization_limit\"\r\n\r\n10000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"relationship_status\"\r\n\r\nactive\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_schedule_service\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customer_location_id\"\r\n\r\nloc-7890\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_emergency_contact\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"portal_access_enabled\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_contact_time\"\r\n\r\nbusiness_hours\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_contact_method\"\r\n\r\nemail\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_emergency_alerts\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_service_reminders\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_email_notifications\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_completion_notices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"portal_password_reset_required\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_appointment_confirmations\"\r\n\r\ntrue\r\n-----011000010111000001101001--\r\n"
headers = {
    "{{tenant_key_name}}": "{{tenant_key_value1}}|{{tenant_key_value2}}",
    "Content-Type": "multipart/form-data; boundary=---011000010111000001101001"
}

response = requests.post(url, data=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://https/crm/customers/%7Bcustomer_id%7D/contacts';
const form = new FormData();
form.append('fax', '555-123-4567');
form.append('email', 'jane.doe@example.com');
form.append('notes', 'Primary contact for billing inquiries.');
form.append('title', 'Ms.');
form.append('job_title', 'Account Manager');
form.append('last_name', 'Doe');
form.append('department', 'Finance');
form.append('first_name', 'Jane');
form.append('is_primary', 'true');
form.append('phone_work', '555-987-6543');
form.append('accepts_sms', 'true');
form.append('company_name', 'Acme Corporation');
form.append('contact_type', 'billing');
form.append('phone_mobile', '555-555-1212');
form.append('contact_since', '2020-05-15');
form.append('phone_primary', '555-555-1234');
form.append('available_24_7', 'false');
form.append('phone_extension', '123');
form.append('accepts_marketing', 'false');
form.append('can_make_payments', 'true');
form.append('can_view_invoices', 'true');
form.append('receives_invoices', 'true');
form.append('can_approve_quotes', 'false');
form.append('can_authorize_work', 'true');
form.append('emergency_priority', '5');
form.append('preferred_language', 'en');
form.append('authorization_limit', '10000');
form.append('relationship_status', 'active');
form.append('can_schedule_service', 'true');
form.append('customer_location_id', 'loc-7890');
form.append('is_emergency_contact', 'true');
form.append('portal_access_enabled', 'true');
form.append('preferred_contact_time', 'business_hours');
form.append('preferred_contact_method', 'email');
form.append('receives_emergency_alerts', 'true');
form.append('receives_service_reminders', 'true');
form.append('accepts_email_notifications', 'true');
form.append('receives_completion_notices', 'true');
form.append('portal_password_reset_required', 'false');
form.append('receives_appointment_confirmations', 'true');

const options = {
  method: 'POST',
  headers: {'{{tenant_key_name}}': '{{tenant_key_value1}}|{{tenant_key_value2}}'}
};

options.body = form;

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://https/crm/customers/%7Bcustomer_id%7D/contacts"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fax\"\r\n\r\n555-123-4567\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njane.doe@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"notes\"\r\n\r\nPrimary contact for billing inquiries.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nMs.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"job_title\"\r\n\r\nAccount Manager\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"department\"\r\n\r\nFinance\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_primary\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_work\"\r\n\r\n555-987-6543\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_sms\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Corporation\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contact_type\"\r\n\r\nbilling\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_mobile\"\r\n\r\n555-555-1212\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contact_since\"\r\n\r\n2020-05-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_primary\"\r\n\r\n555-555-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"available_24_7\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_extension\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_marketing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_make_payments\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_view_invoices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_invoices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_approve_quotes\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_authorize_work\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emergency_priority\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"authorization_limit\"\r\n\r\n10000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"relationship_status\"\r\n\r\nactive\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_schedule_service\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customer_location_id\"\r\n\r\nloc-7890\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_emergency_contact\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"portal_access_enabled\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_contact_time\"\r\n\r\nbusiness_hours\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_contact_method\"\r\n\r\nemail\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_emergency_alerts\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_service_reminders\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_email_notifications\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_completion_notices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"portal_password_reset_required\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_appointment_confirmations\"\r\n\r\ntrue\r\n-----011000010111000001101001--\r\n")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("{{tenant_key_name}}", "{{tenant_key_value1}}|{{tenant_key_value2}}")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://https/crm/customers/%7Bcustomer_id%7D/contacts")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["{{tenant_key_name}}"] = '{{tenant_key_value1}}|{{tenant_key_value2}}'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fax\"\r\n\r\n555-123-4567\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njane.doe@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"notes\"\r\n\r\nPrimary contact for billing inquiries.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nMs.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"job_title\"\r\n\r\nAccount Manager\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"department\"\r\n\r\nFinance\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_primary\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_work\"\r\n\r\n555-987-6543\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_sms\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Corporation\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contact_type\"\r\n\r\nbilling\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_mobile\"\r\n\r\n555-555-1212\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contact_since\"\r\n\r\n2020-05-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_primary\"\r\n\r\n555-555-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"available_24_7\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_extension\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_marketing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_make_payments\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_view_invoices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_invoices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_approve_quotes\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_authorize_work\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emergency_priority\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"authorization_limit\"\r\n\r\n10000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"relationship_status\"\r\n\r\nactive\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_schedule_service\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customer_location_id\"\r\n\r\nloc-7890\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_emergency_contact\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"portal_access_enabled\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_contact_time\"\r\n\r\nbusiness_hours\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_contact_method\"\r\n\r\nemail\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_emergency_alerts\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_service_reminders\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_email_notifications\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_completion_notices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"portal_password_reset_required\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_appointment_confirmations\"\r\n\r\ntrue\r\n-----011000010111000001101001--\r\n"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://https/crm/customers/%7Bcustomer_id%7D/contacts")
  .header("{{tenant_key_name}}", "{{tenant_key_value1}}|{{tenant_key_value2}}")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fax\"\r\n\r\n555-123-4567\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njane.doe@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"notes\"\r\n\r\nPrimary contact for billing inquiries.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nMs.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"job_title\"\r\n\r\nAccount Manager\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"department\"\r\n\r\nFinance\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_primary\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_work\"\r\n\r\n555-987-6543\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_sms\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Corporation\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contact_type\"\r\n\r\nbilling\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_mobile\"\r\n\r\n555-555-1212\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contact_since\"\r\n\r\n2020-05-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_primary\"\r\n\r\n555-555-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"available_24_7\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_extension\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_marketing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_make_payments\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_view_invoices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_invoices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_approve_quotes\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_authorize_work\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emergency_priority\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"authorization_limit\"\r\n\r\n10000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"relationship_status\"\r\n\r\nactive\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_schedule_service\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customer_location_id\"\r\n\r\nloc-7890\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_emergency_contact\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"portal_access_enabled\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_contact_time\"\r\n\r\nbusiness_hours\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_contact_method\"\r\n\r\nemail\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_emergency_alerts\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_service_reminders\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_email_notifications\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_completion_notices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"portal_password_reset_required\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_appointment_confirmations\"\r\n\r\ntrue\r\n-----011000010111000001101001--\r\n")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://https/crm/customers/%7Bcustomer_id%7D/contacts', [
  'multipart' => [
    [
        'name' => 'fax',
        'contents' => '555-123-4567'
    ],
    [
        'name' => 'email',
        'contents' => 'jane.doe@example.com'
    ],
    [
        'name' => 'notes',
        'contents' => 'Primary contact for billing inquiries.'
    ],
    [
        'name' => 'title',
        'contents' => 'Ms.'
    ],
    [
        'name' => 'job_title',
        'contents' => 'Account Manager'
    ],
    [
        'name' => 'last_name',
        'contents' => 'Doe'
    ],
    [
        'name' => 'department',
        'contents' => 'Finance'
    ],
    [
        'name' => 'first_name',
        'contents' => 'Jane'
    ],
    [
        'name' => 'is_primary',
        'contents' => 'true'
    ],
    [
        'name' => 'phone_work',
        'contents' => '555-987-6543'
    ],
    [
        'name' => 'accepts_sms',
        'contents' => 'true'
    ],
    [
        'name' => 'company_name',
        'contents' => 'Acme Corporation'
    ],
    [
        'name' => 'contact_type',
        'contents' => 'billing'
    ],
    [
        'name' => 'phone_mobile',
        'contents' => '555-555-1212'
    ],
    [
        'name' => 'contact_since',
        'contents' => '2020-05-15'
    ],
    [
        'name' => 'phone_primary',
        'contents' => '555-555-1234'
    ],
    [
        'name' => 'available_24_7',
        'contents' => 'false'
    ],
    [
        'name' => 'phone_extension',
        'contents' => '123'
    ],
    [
        'name' => 'accepts_marketing',
        'contents' => 'false'
    ],
    [
        'name' => 'can_make_payments',
        'contents' => 'true'
    ],
    [
        'name' => 'can_view_invoices',
        'contents' => 'true'
    ],
    [
        'name' => 'receives_invoices',
        'contents' => 'true'
    ],
    [
        'name' => 'can_approve_quotes',
        'contents' => 'false'
    ],
    [
        'name' => 'can_authorize_work',
        'contents' => 'true'
    ],
    [
        'name' => 'emergency_priority',
        'contents' => '5'
    ],
    [
        'name' => 'preferred_language',
        'contents' => 'en'
    ],
    [
        'name' => 'authorization_limit',
        'contents' => '10000'
    ],
    [
        'name' => 'relationship_status',
        'contents' => 'active'
    ],
    [
        'name' => 'can_schedule_service',
        'contents' => 'true'
    ],
    [
        'name' => 'customer_location_id',
        'contents' => 'loc-7890'
    ],
    [
        'name' => 'is_emergency_contact',
        'contents' => 'true'
    ],
    [
        'name' => 'portal_access_enabled',
        'contents' => 'true'
    ],
    [
        'name' => 'preferred_contact_time',
        'contents' => 'business_hours'
    ],
    [
        'name' => 'preferred_contact_method',
        'contents' => 'email'
    ],
    [
        'name' => 'receives_emergency_alerts',
        'contents' => 'true'
    ],
    [
        'name' => 'receives_service_reminders',
        'contents' => 'true'
    ],
    [
        'name' => 'accepts_email_notifications',
        'contents' => 'true'
    ],
    [
        'name' => 'receives_completion_notices',
        'contents' => 'true'
    ],
    [
        'name' => 'portal_password_reset_required',
        'contents' => 'false'
    ],
    [
        'name' => 'receives_appointment_confirmations',
        'contents' => 'true'
    ]
  ]
  'headers' => [
    '{{tenant_key_name}}' => '{{tenant_key_value1}}|{{tenant_key_value2}}',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://https/crm/customers/%7Bcustomer_id%7D/contacts");
var request = new RestRequest(Method.POST);
request.AddHeader("{{tenant_key_name}}", "{{tenant_key_value1}}|{{tenant_key_value2}}");
request.AddParameter("undefined", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fax\"\r\n\r\n555-123-4567\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njane.doe@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"notes\"\r\n\r\nPrimary contact for billing inquiries.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"title\"\r\n\r\nMs.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"job_title\"\r\n\r\nAccount Manager\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"department\"\r\n\r\nFinance\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_primary\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_work\"\r\n\r\n555-987-6543\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_sms\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Corporation\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contact_type\"\r\n\r\nbilling\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_mobile\"\r\n\r\n555-555-1212\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"contact_since\"\r\n\r\n2020-05-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_primary\"\r\n\r\n555-555-1234\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"available_24_7\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone_extension\"\r\n\r\n123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_marketing\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_make_payments\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_view_invoices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_invoices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_approve_quotes\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_authorize_work\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"emergency_priority\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_language\"\r\n\r\nen\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"authorization_limit\"\r\n\r\n10000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"relationship_status\"\r\n\r\nactive\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"can_schedule_service\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customer_location_id\"\r\n\r\nloc-7890\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_emergency_contact\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"portal_access_enabled\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_contact_time\"\r\n\r\nbusiness_hours\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"preferred_contact_method\"\r\n\r\nemail\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_emergency_alerts\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_service_reminders\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"accepts_email_notifications\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_completion_notices\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"portal_password_reset_required\"\r\n\r\nfalse\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"receives_appointment_confirmations\"\r\n\r\ntrue\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["{{tenant_key_name}}": "{{tenant_key_value1}}|{{tenant_key_value2}}"]
let parameters = [
  [
    "name": "fax",
    "value": "555-123-4567"
  ],
  [
    "name": "email",
    "value": "jane.doe@example.com"
  ],
  [
    "name": "notes",
    "value": "Primary contact for billing inquiries."
  ],
  [
    "name": "title",
    "value": "Ms."
  ],
  [
    "name": "job_title",
    "value": "Account Manager"
  ],
  [
    "name": "last_name",
    "value": "Doe"
  ],
  [
    "name": "department",
    "value": "Finance"
  ],
  [
    "name": "first_name",
    "value": "Jane"
  ],
  [
    "name": "is_primary",
    "value": "true"
  ],
  [
    "name": "phone_work",
    "value": "555-987-6543"
  ],
  [
    "name": "accepts_sms",
    "value": "true"
  ],
  [
    "name": "company_name",
    "value": "Acme Corporation"
  ],
  [
    "name": "contact_type",
    "value": "billing"
  ],
  [
    "name": "phone_mobile",
    "value": "555-555-1212"
  ],
  [
    "name": "contact_since",
    "value": "2020-05-15"
  ],
  [
    "name": "phone_primary",
    "value": "555-555-1234"
  ],
  [
    "name": "available_24_7",
    "value": "false"
  ],
  [
    "name": "phone_extension",
    "value": "123"
  ],
  [
    "name": "accepts_marketing",
    "value": "false"
  ],
  [
    "name": "can_make_payments",
    "value": "true"
  ],
  [
    "name": "can_view_invoices",
    "value": "true"
  ],
  [
    "name": "receives_invoices",
    "value": "true"
  ],
  [
    "name": "can_approve_quotes",
    "value": "false"
  ],
  [
    "name": "can_authorize_work",
    "value": "true"
  ],
  [
    "name": "emergency_priority",
    "value": "5"
  ],
  [
    "name": "preferred_language",
    "value": "en"
  ],
  [
    "name": "authorization_limit",
    "value": "10000"
  ],
  [
    "name": "relationship_status",
    "value": "active"
  ],
  [
    "name": "can_schedule_service",
    "value": "true"
  ],
  [
    "name": "customer_location_id",
    "value": "loc-7890"
  ],
  [
    "name": "is_emergency_contact",
    "value": "true"
  ],
  [
    "name": "portal_access_enabled",
    "value": "true"
  ],
  [
    "name": "preferred_contact_time",
    "value": "business_hours"
  ],
  [
    "name": "preferred_contact_method",
    "value": "email"
  ],
  [
    "name": "receives_emergency_alerts",
    "value": "true"
  ],
  [
    "name": "receives_service_reminders",
    "value": "true"
  ],
  [
    "name": "accepts_email_notifications",
    "value": "true"
  ],
  [
    "name": "receives_completion_notices",
    "value": "true"
  ],
  [
    "name": "portal_password_reset_required",
    "value": "false"
  ],
  [
    "name": "receives_appointment_confirmations",
    "value": "true"
  ]
]

let boundary = "---011000010111000001101001"

var body = ""
var error: NSError? = nil
for param in parameters {
  let paramName = param["name"]!
  body += "--\(boundary)\r\n"
  body += "Content-Disposition:form-data; name=\"\(paramName)\""
  if let filename = param["fileName"] {
    let contentType = param["content-type"]!
    let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)
    if (error != nil) {
      print(error as Any)
    }
    body += "; filename=\"\(filename)\"\r\n"
    body += "Content-Type: \(contentType)\r\n\r\n"
    body += fileContent
  } else if let paramValue = param["value"] {
    body += "\r\n\r\n\(paramValue)"
  }
}

let request = NSMutableURLRequest(url: NSURL(string: "https://https/crm/customers/%7Bcustomer_id%7D/contacts")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```