POST …/contacts/create
Use this endpoint when your data is already clean and structured. No AI extraction is performed — fields are mapped directly to the contact record.
This endpoint is asynchronous. It enqueues the work and returns immediately.
Also accessible at POST …/contacts (same behavior).
Request
Body fields
| Field | Type | Required | Description |
|---|---|---|---|
full_name | string | No* | Contact’s full name |
phone_number | string | No* | Contact’s phone number |
contact_email | string | No* | Contact’s email address |
contact_address | string | No | Contact’s address — linked to a property if found |
note | string | No | Creates a note on the contact |
tags | string[] | No | Applied to the contact after creation |
source | string | No | Defaults to Webhook if omitted |
contributors | string[] | No | Full names of org users to assign as contributors |
first_name and last_name are supported but deprecated. Use full_name instead.Deduplication
Goliath deduplicates contacts on ingest using one of two strategies:- Name + phone or email — when a name is present alongside a phone or email
- Phone or email only — when no name is provided
Responses
New eventA
200 response means the request was accepted and queued — not that the contact exists yet. Duplicate events return 200 without an eventId.