Create Contact
Contacts
Create Contact
Add a new contact to your workspace
POST
Create Contact
Request
Headers
Body Parameters
Name handling: Send any of
full_name, first_name + last_name, or just an email. The API splits / composes / derives the missing pieces. It also understands the "Last, First" format.Contact’s full name. If only this is given, the API splits on the last whitespace (e.g.
"Hans Müller" → first=Hans, last=Müller). Accepts the "Last, First" format (e.g. "Müller, Hans").Contact’s first name. Composed into
full_name if full_name isn’t provided.Contact’s last name.
Email address. Used for duplicate detection and, as a last resort, to derive a name (e.g.
hans.mueller@x.de → first=Hans, last=Mueller) when no name is given.Phone number with country code
Job title or position
Company or organization name
UUID of an existing Company to link this contact to. Also accepts the legacy
company_id key.LinkedIn profile URL
Either
"high" / "medium" / "low" or an integer (1/2/3).Array of tag strings for categorization
Arbitrary JSON object preserved alongside the contact — ideal for domain-specific columns from imported CSVs (e.g. matter numbers, jurisdiction codes).
Optional ISO 8601 timestamp. Honored verbatim if it’s within the last 5 years and no more than 24 h in the future; otherwise the server
now() is used. Never null.Response
The created contact object.
Example Response
Validation
Name derivation rules
Applied in order; the first rule that yields a name wins:"Last, First"format — iffull_namecontains a comma and first/last are empty, it’s split into last / first.- Split
full_name— whenfull_nameis given butfirst_name/last_nameare empty, it’s split on the last whitespace. “Jean-Claude van Damme” → first=Jean-Claude van, last=Damme. - Compose
full_name— whenfirst_name/last_nameare given butfull_nameis empty. - Derive from email — local part is split on
._-+into Title Case tokens.
Duplicate Detection
The API checks for duplicates by:- Exact email match (case-insensitive)
- Full-name ILIKE match
force_create: false on the agent tool to suppress).
Errors
| Status | Code | Description |
|---|---|---|
| 400 | validation_error | No name or email provided |
| 401 | invalid_key | Invalid API key |
| 403 | insufficient_permissions | Missing contacts:write permission |
| 429 | rate_limited | Rate limit exceeded |