Create a contact
POST/contacts
Emails and phones are child rows, not scalar fields — send
contact_emails_attributes / contact_phones_attributes. At least one email or
phone is required: a contact has to be reachable.
409 Conflict is a normal branch, not a failure. The workspace's dedupe matcher
found an existing contact. Either re-POST with "force": true inside
data.attributes, or read the ranked candidates from check_duplicates and reuse
the winner. If the error carries "code": "duplicate_blocked" the workspace's policy
is block, force is ignored, and you MUST reuse.
Scope: write:contacts. Rate limit: 30/min.
Request
Responses
- 201
- 409
- 422
- 429
One resource, JSON:API shaped.
A duplicate was detected — reuse it, or re-POST with force: true.
Validation failed; source.pointer names the field.
Rate limited — honour Retry-After rather than retrying immediately.