POST
/
v1
/
tenants
/
add-user
curl https://api.zquence.com/v1/tenants/add-user \
  -H "x-api-key: $ZQUENCE_PUBLIC_KEY" \
  -H "x-api-secret: $ZQUENCE_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: user-sync-crm-42" \
  -d '{
    "name": "Ada Lovelace",
    "email": "ada@example.com",
    "phone": "+14155552671"
  }'
{
  "id": "usr_01HX3ZAB...",
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "phone": "+14155552671",
  "tenantId": "tnt_01HX3Z8MQW...",
  "status": "invited",
  "createdAt": "2026-04-22T09:13:02.000Z"
}
Creates (or returns) a user. Idempotent on email: if a user with this email already exists, we return the existing record.

Body

name
string
required
Display name.
email
string
required
Valid RFC 5322 email.
phone
string
required
Phone number for the user. Must be 6–30 characters. Use E.164 when possible (for example +14155552671).
metadata
object
Up to 20 key/value pairs, 500 chars each.

Returns

id
string
User ULID (usr_...).
name
string
email
string
phone
string
tenantId
string
status
string
invited, active, disabled.
createdAt
string
curl https://api.zquence.com/v1/tenants/add-user \
  -H "x-api-key: $ZQUENCE_PUBLIC_KEY" \
  -H "x-api-secret: $ZQUENCE_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: user-sync-crm-42" \
  -d '{
    "name": "Ada Lovelace",
    "email": "ada@example.com",
    "phone": "+14155552671"
  }'
{
  "id": "usr_01HX3ZAB...",
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "phone": "+14155552671",
  "tenantId": "tnt_01HX3Z8MQW...",
  "status": "invited",
  "createdAt": "2026-04-22T09:13:02.000Z"
}

Events

Fires tenant.users.invite on successful creation.