Skip to main content
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

At least one of full_name, phone_number, or contact_email is required. If none are provided the request is accepted (200) but no contact is created. Validation happens in the async worker, not at the HTTP layer.
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
If a match is found, the existing contact is updated rather than a new one being created.

Responses

New event
Duplicate event
A 200 response means the request was accepted and queued — not that the contact exists yet. Duplicate events return 200 without an eventId.