Users and me
Read the workspace your API key belongs to and the people in it.
GET /me tells you which workspace a key belongs to. GET /users lists the workspace's people, whose IDs you use in owner_id and similar fields.
Get the key's workspace#
GET /me · Scope: none (any valid key)
Returns the workspace that owns the API key. Use it to check a key, and to read the workspace's currency and timezone.
The workspace object#
| Field | Type | Notes |
|---|---|---|
id |
string | Workspace ID. |
name |
string | |
slug |
string | |
email |
string or null | |
phone |
string or null | |
website |
string or null | |
timezone |
string or null | IANA time zone, such as America/Chicago. |
currency |
string or null | ISO 4217 code. Deal values, plot prices and other amounts without their own currency are in this currency. |
logo_url |
string or null | |
created_at |
string | ISO 8601 timestamp. |
Example#
curl https://crm.empiraa.app/api/v1/me \
-H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch("https://crm.empiraa.app/api/v1/me", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data: workspace } = await res.json();
Response 200#
JSON
{
"data": {
"id": "cm1a2b3c40000xy12z3a4b5c6",
"name": "Northwind Sales",
"slug": "northwind-sales",
"email": "sales@northwind.example",
"phone": "+1 415 555 0100",
"website": "https://northwind.example",
"timezone": "America/Los_Angeles",
"currency": "USD",
"logo_url": null,
"created_at": "2026-03-02T18:21:07.000Z"
},
"meta": { "cursor": null },
"error": null
}
Errors#
| Status | Code | When |
|---|---|---|
| 401 | MISSING_API_KEY or INVALID_API_KEY |
See Authentication. |
The user object#
| Field | Type | Notes |
|---|---|---|
id |
string | The user ID. This is the value to use in owner_id, assigned_user_id and similar fields. |
name |
string | |
email |
string | |
job_title |
string or null | |
avatar_url |
string or null | |
is_active |
boolean | false for deactivated users. |
role |
string | The role's display name, such as Admin. |
role_code |
string or null | The role's code. |
member_id |
string | The user's membership in this workspace. Not used elsewhere in the API. |
joined_at |
string or null | When the user joined the workspace. |
JSON
{
"id": "5b8d1f3a-7e2c-4a9b-b6d4-1c3e5f7a9b20",
"name": "Jordan Smith",
"email": "jordan.smith@northwind.example",
"job_title": "Account Executive",
"avatar_url": null,
"is_active": true,
"role": "Member",
"role_code": "member",
"member_id": "8e0a2c4d-6f1b-4d3e-a5c7-9e1b3d5f7a26",
"joined_at": "2026-03-04T10:12:44.000Z"
}
List users#
GET /users · Scope: users:read
Returns every member of the workspace in one response. meta.total is the number returned.
Example#
curl https://crm.empiraa.app/api/v1/users \
-H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch("https://crm.empiraa.app/api/v1/users", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
const { data: users } = await res.json();
const activeUsers = users.filter((u) => u.is_active);
Response 200#
JSON
{
"data": [
{
"id": "5b8d1f3a-7e2c-4a9b-b6d4-1c3e5f7a9b20",
"name": "Jordan Smith",
"email": "jordan.smith@northwind.example",
"job_title": "Account Executive",
"avatar_url": null,
"is_active": true,
"role": "Member",
"role_code": "member",
"member_id": "8e0a2c4d-6f1b-4d3e-a5c7-9e1b3d5f7a26",
"joined_at": "2026-03-04T10:12:44.000Z"
}
],
"meta": { "cursor": null, "total": 1 },
"error": null
}
Get a user#
GET /users/{id} · Scope: users:read
Path parameters#
| Parameter | Type | Notes |
|---|---|---|
id |
string | User ID (not member_id). |
Example#
curl https://crm.empiraa.app/api/v1/users/5b8d1f3a-7e2c-4a9b-b6d4-1c3e5f7a9b20 \
-H "Authorization: Bearer YOUR_API_KEY"
await fetch("https://crm.empiraa.app/api/v1/users/5b8d1f3a-7e2c-4a9b-b6d4-1c3e5f7a9b20", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
Response 200#
The user object in data.
Errors#
| Status | Code | When |
|---|---|---|
| 404 | NOT_FOUND |
No user with that ID in this workspace. |

