Developers
Create a client
POST /api/v1/clients — required fields, tags by name, timeline notes, and link-vs-create behavior.
Endpoint
POST /api/v1/clients
Authorization: Bearer ume_…
Content-Type: application/json
What gets created
Same path as adding a client manually in the CRM:
- CRM lead on the API key’s agent site (assignee = site owner / key creator).
- Consumer user account for that person on the branded site (email login).
For a new account, the initial password is the phone number’s digits only (no + or formatting). Example: phone +15551234567 → password 15551234567. They can sign in on the agent site with that email + phone-digit password (and change it later).
If the email already belongs to a lead/user in the org, the API links instead of creating a second account (action: "linked"). Phone may be updated when it differs.
Request body
| Field | Required | Description |
|---|---|---|
name | Yes | Client full name |
email | Yes | Valid email — used as the consumer login |
phone | Yes | E.164 preferred (e.g. +15551234567). Digits become the initial password for new users |
tags | No | Array of tag names (not IDs). Missing names are created on the org |
note | No | Text added as a timeline note on the lead |
Tags and notes
- Tags resolve by name (case-insensitive match). If no label exists, one is created and applied.
- Note becomes the lead’s initial timeline note when provided.
Response
201 Created with JSON:
{
"leadId": "…",
"action": "created"
}
action is created when a new lead + consumer user is inserted, or linked when the contact matched an existing lead for that org/site (same behavior as manual CRM add).
Validation failures return 400. Auth failures return 401 / 403 as described in Authentication.
Example
curl -X POST 'https://app.umeidx.com/api/v1/clients' \
-H 'Authorization: Bearer ume_ab12_your_token' \
-H 'Content-Type: application/json' \
-d '{
"name": "Dana Reyes",
"email": "dana@example.com",
"phone": "+15551234567",
"tags": ["Buyer"],
"note": "Imported from MLS portal"
}'