Create a user
Creates a tenant user (Admin or Site Crew) with an initial password and at least one project assignment, and returns the created user plus the credentials to share with them (there is no credentials email in v1). The email must be unique among active users in the tenant.
Creates a tenant user (Admin or Site Crew) with an initial password and at least one project assignment, and returns the created user plus the credentials to share with them (there is no credentials email in v1). The email must be unique among active users in the tenant.
The per-tenant API key, copied from Settings → API & integrations.
Sent as the x-api-key request header. The key is tenant-scoped and acts
with Admin-equivalent, tenant-wide access.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/users" \ -H "Content-Type: application/json" \ -d '{ "name": "string", "email": "user@example.com", "password": "string", "projectIds": [ "b2d9859a-b2e9-4f49-b393-9a25d0eff2f8" ] }'{ "user": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "email": "user@example.com", "role": "admin", "status": "active", "projectIds": [ "b2d9859a-b2e9-4f49-b393-9a25d0eff2f8" ] }, "credentials": { "email": "user@example.com", "password": "string" }}{ "error": { "code": "unauthorized", "message": "Missing or invalid API key." }}{ "error": { "code": "read_only", "message": "Your subscription is inactive. This action is read-only." }}{ "error": { "code": "conflict", "message": "This template has submissions and can't be deleted. Archive it instead." }}{ "error": { "code": "validation", "message": "One or more inputs are invalid.", "fields": { "fieldName": "A message explaining what's wrong with this field." } }}Update, reassign, or mark a task done PATCH
Edits a task and/or ticks it. A `done` boolean marks the task done/undone; `title`, `detail`, `projectId`, and `assigneeId` edit the task (reassign is just an `assigneeId` change). Field edits apply first, then the done flip, so one call can reassign and mark done together.
Get a user GET
Reads one user with their project roster.