# Initiates a workflow to create a new contact and try to link them to an existing organization

Returns the new contact which is linked to the currently logged in user

Endpoint: POST /contacts/{tenantId}/portal
Version: v1-2025-04-18
Security: knox-authorizer

## Security:

  - `knox-authorizer` (unknown)
    http bearer JWT

## Path parameters:

  - `tenantId` (string, required)
    The id of the tenant being accessed.

## Request body:

  - `application/json` (unknown)
    The contact that you would like to be saved.

## Request fields (application/json):

  - `communication_preferences` (array)
    The communication types to which this person is subscribed

  - `communication_preferences.communication_type_id` (string, required)

  - `communication_preferences.enabled` (boolean, required)

  - `communication_preferences.subscription_email_address` (string)
    The email address associated with this subscription, if different from the primary email address for this contact

  - `communication_preferences.subscription_last_updated` (string)
    The date that this subscription was last changed

  - `communication_preferences.subscription_status` (string)
    The subscription status requested by this contact
    Enum: "digest", "subscribed", "unsubscribed"

  - `communication_preferences_last_confirmed` (string)
    The date that the communication preferences were last confirmed for this contact

  - `contact_role_ids` (array)
    The ids of the contact roles this contact plays in the linked organization.

  - `contact_roles` (string)
    READ ONLY - the name of contact roles

  - `credentials` (string)
    Professional credentials/designation (MBA, Esq, PhD, etc)

  - `custom_field_values` (array)

  - `custom_field_values.boolean_value` (boolean)
    The boolean value

  - `custom_field_values.custom_field_id` (string)
    The unique identifier of the custom field

  - `custom_field_values.file_url_value` (string)
    The pointer to a file value

  - `custom_field_values.list_value` (array)
    The list value

  - `custom_field_values.numeric_value` (number)
    The numeric value

  - `custom_field_values.string_value` (string)
    The string value of the custom field

  - `custom_field_values.table_value` (array)
    A list of objects (a table)

  - `date_of_birth` (string)
    The date of birth of the contact, expressed in ISO-8601 date format

  - `date_of_death` (string)
    The date this contact passed away

  - `date_profile_last_updated` (string)
    The date that this contact profile was last updated

  - `date_social_profile_last_updated` (string)
    The date that the social profile was last updated

  - `do_not_call` (boolean)
    If so, the person is not to be called

  - `do_not_mail` (boolean)
    If set, no mail goes to the contact

  - `email_address` (string)
    The primary email address

  - `email_address2` (string)
    Secondary email address

  - `email_address3` (string)
    Tertiary email address

  - `email_opt_out` (boolean)
    This contact has opted out of ALL email communications

  - `facebook` (string)
    Url to the contact's Facebook account

  - `fax_phone_number` (string)
    Fax phone number

  - `first_name` (string)
    The first name

  - `full_name` (string)
    Full name

  - `gender` (string)
    The gender of the contact
    Enum: "female", "male"

  - `home_address` (object)
    A complete address

  - `home_address.city` (string)
    The city of the address

  - `home_address.country` (string)
    The country ISO code

  - `home_address.country_name` (string)
    The full name of hte country

  - `home_address.county` (string)
    The county

  - `home_address.latitude` (number)

  - `home_address.line1` (string)
    The first line of the address

  - `home_address.line2` (string)
    The second line of the address

  - `home_address.line3` (string)
    The third line of the address

  - `home_address.longitude` (number)

  - `home_address.postal_code` (string)
    The zip/postal code

  - `home_address.state` (string)
    The state/province of the address

  - `home_address.time_zone_id` (string)

  - `home_phone_number` (string)
    Home phone number

  - `id` (string, required)
    The unique, string identifier of this contact

  - `image_url` (string)
    A url of the image/photo of this contact

  - `instagram` (string)
    Url to the contact's Instagram account

  - `job_title` (string)
    The contact's professional title

  - `last_name` (string)
    The last name

  - `link_work_address_to_organization` (boolean)
    When set, a change in the organization's address changes the contact work address

  - `link_work_phone_number_to_organization` (boolean)
    When set, a change in the organization's phone changes the contact work phone

  - `linked_in` (string)
    Url to the contact's LinkedIn account

  - `maiden_name` (string)
    The maiden name

  - `merged_ids` (array)
    A list contact IDs that have been merged into this contact

  - `middle_name` (string)
    The middle name/initial

  - `mobile_phone_number` (string)
    Mobile phone number

  - `name` (string)
    The full name of the contact

  - `name_last_first` (string)
    The full name of the contact, last first

  - `national_district` (string)
    The name of the United States congressional district

  - `national_district_ocdId` (string)
    The Open Civic Data division identifier of the United States congressional district

  - `new_organization_info` (object)

  - `nickname` (string)
    The nickname of the contact

  - `notes` (string)
    Any contact notes

  - `number` (number)
    The contact number

  - `organization_history` (array)
    A list of previous organization affiliations

  - `organization_history.contact_role_ids` (array)
    The ids of the contact roles this contact plays in the linked organization.

  - `organization_history.end_date` (string)
    The end date of the contacts time at the organization

  - `organization_history.job_title` (string)
    The title that was held at the organization

  - `organization_history.notes` (string)
    Any relevant notes

  - `organization_history.organization_id` (string, required)
    The ID of the organization

  - `organization_history.start_date` (string)
    The start date of the contacts time at the organization

  - `organization_id` (string)
    The ID of the organization that the contact belongs to

  - `organization_name` (string)
    The name of the organization; if an organization ID is present, this information is automatically populated

  - `origin_service` (string)
    If this contact was created by another service, the service is here

  - `origin_service_record_id` (string)
    If this  contact was created by another service, the relevant iD

  - `other_addresses` (array)

  - `other_addresses.type_id` (string, required)
    The address type

  - `other_phone_numbers` (array)

  - `other_phone_numbers.phone_number` (string, required)
    The phone number

  - `other_phone_numbers.type_id` (string, required)
    The phone number type

  - `override_automatic_region_assignment` (boolean)
    If true, the region assignment for this record is overridden and should not be automatically assigned

  - `portal_delegates` (array)
    Allows for this contact to be managed by other contacts in the portal

  - `portal_delegates.contact_id` (string, required)
    The contact

  - `portal_delegates.expiration_date` (string)
    The date until which this delegation is active

  - `portal_delegates.status` (string)
    Enum: "approved"

  - `preferred_address_type` (string)
    The address at which the contact prefers to be contacted
    Enum: "alternate", "home", "school", "work"

  - `preferred_address_type_id` (string, required)
    When a alternate phone number type is preferred, the ID

  - `preferred_phone_number` (string)
    The preferred phone number, calculated based on the preferred phone number type

  - `preferred_phone_number_type` (string)
    The phone number at which the contact prefers to be reach
    Enum: "alternate", "fax", "home", "mobile", "school", "work", "work mobile"

  - `preferred_phone_number_type_id` (string, required)
    When a alternate phone number type is preferred, the ID

  - `prefix` (string)
    The contact prefix

  - `pronouns` (string)

  - `region_id` (string)
    The region

  - `salutation` (string)
    The contact salutation

  - `school_phone_number` (string)
    Fax phone number

  - `seasonal_address_end` (string)
    The end  date for the seasonal address

  - `seasonal_address_start` (string)
    The start date for the seasonal address

  - `spouse_id` (string)
    The ID of this person's spouse

  - `state_lower_district` (string)
    The name of the US state lower (House) district

  - `state_lower_district_ocdId` (string)
    The Open Civic Data division identifier of the US state lower (House) district

  - `state_upper_district` (string)
    The name of the US state upper (Senate) district

  - `state_upper_district_ocdId` (string)
    The Open Civic Data division identifier of the US state upper (Senate) district

  - `status` (string)
    The status of the contact record
    Enum: "active", "deceased", "duplicate", "inactive"

  - `suffix` (string)
    The contact suffix (Jr., Sr., etc0

  - `sys_bulk_load_at` (string)
    If this record was loaded via bulk, the timestamp when the record was processed

  - `sys_bulk_load_id` (string)
    If this record was loaded via bulk, the ID of the bulk load process

  - `sys_bulk_load_pk` (string)
    If this record was loaded via bulk, the tenant and key of the bulk load process used as a partition key

  - `sys_bulk_load_record_no` (number)
    If this record was loaded via bulk, the record number in the source file

  - `sys_bulk_load_source_file` (string)
    If this record was loaded via bulk, the source file

  - `sys_calculated_field_error` (string)
    The error associated with the calculated field

  - `sys_calculated_field_errors` (array)

  - `sys_calculated_field_errors.error` (string)

  - `sys_calculated_field_errors.field` (string)

  - `sys_configuration_snapshot_id` (string)
    If a snapshot was restored/applies to this record, the ID of the snapshot

  - `sys_created_at` (string, required)
    The date/time that this record was created, expressed in ISO-8601 date format

  - `sys_created_by_id` (string, required)
    The ID of the user that created this record

  - `sys_deleted_by_id` (string)
    The ID of the user that deleted (or last tried to delete) this object

  - `sys_directive` (string)
    Means for passing directive information into an object processing logic

  - `sys_external_id` (string)
    The ID that a record has from an external system or data import

  - `sys_has_files_in_s3` (boolean)
    If true, this record has files in S3. If false, it doesnt, so no need to hit S3 upon deletion

  - `sys_last_bulk_data_operation_id` (string)
    If this record was last touched by a bulk data operation, the ID of that operation

  - `sys_last_bulk_data_operation_sys_version` (string)
    If this record was last touched by a bulk data operation, the sys_version at the time of that operation

  - `sys_last_modified_at` (string, required)
    The date/time that this record record was last modified, expressed in ISO-8601 date format

  - `sys_last_modified_by_id` (string, required)
    The ID of the user that last modified this record

  - `sys_last_security_context` (object)
    The security context of the last insert, modify, or delete performed on this item

  - `sys_locked` (boolean)
    If set, this record is locked and cannot be changed via the API

  - `sys_snapshot_base_version` (number)
    The version to use as a base when creating a configuration snapshot; if not set, 1 is used. Helpful when creating a sandbox

  - `sys_version` (number)
    A number representing the version of this record in the database

  - `twitter` (string)
    Url to the contact's Twitter account

  - `user_ids` (array)
    A list of related portal user IDs

  - `work_mobile_phone_number` (string)
    Mobile phone number for business unit

  - `work_phone_number` (string)
    Work phone number

## Response 200:

  - `200` (unknown)
    The contact creation process was started

## Response 200 fields (application/json):

  - `executionArn` (string, required)
    The arn of the execution

  - `notification_channel` (string)
    The id of the channel where progress updates will be posted

  - `notification_publishKey` (string)
    The publish key for the channel where progress updates will be posted

  - `notification_subscribeKey` (string)
    The subscribe key for the channel where progress updates will be posted

  - `start_date` (string)
    The start date of the execution

## Response 200 headers (application/json):

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 400:

  - `400` (unknown)
    The contact you supplied was invalid.

## Response 400 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 401:

  - `401` (unknown)
    Unauthorized.

## Response 401 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 403:

  - `403` (unknown)
    Forbidden.

## Response 403 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 404:

  - `404` (unknown)
    The resource could not be found

## Response 404 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 409:

  - `409` (unknown)
    The contact could not be saved because it refers to/depends on a non-existent object.

## Response 409 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 429:

  - `429` (unknown)
    Limit exceeded... unable to add contact based on tenant limits.

## Response 429 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

## Response 500:

  - `500` (unknown)
    General server error.

## Response 500 headers:

  - `Access-Control-Allow-Headers` (string)

  - `Access-Control-Allow-Methods` (string)

  - `Access-Control-Allow-Origin` (string)

