Update user
const url = 'https://api.torii.so/api/server/v1/users/01931a73-8b00-7000-8000-000000000000';const options = { method: 'PATCH', headers: {'Content-Type': 'application/json'}, body: '{"firstName":"Ada","lastName":"Lovelace","locale":"en","unsafeMetadata":{"onboardingStep":2}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.torii.so/api/server/v1/users/01931a73-8b00-7000-8000-000000000000 \ --header 'Content-Type: application/json' \ --data '{ "firstName": "Ada", "lastName": "Lovelace", "locale": "en", "unsafeMetadata": { "onboardingStep": 2 } }'Partial update with tri-state PATCH semantics. Every field in UpdateUserRequest is tri-state: omit the key to leave the field unchanged, send a non-null value to set it, or send JSON null to clear it.
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Identifier of the user to update.
Example
01931a73-8b00-7000-8000-000000000000Request Body required
Section titled “Request Body required ”PATCH body for updating an end-user. Every field is tri-state: omit the key entirely to leave the field unchanged, send a non-null value to set it, or send JSON null to clear it.
object
New first (given) name. Send null to clear; omit to leave unchanged.
Example
AdaNew last (family) name. Send null to clear; omit to leave unchanged.
Example
LovelaceNew preferred locale. Send null to clear; omit to leave unchanged.
Deep-merges into the user’s unsafe metadata (a key set to null removes it); omit to leave unchanged. Merged result max 512 bytes.
object
Example
{ "onboardingStep": 2}Responses
Section titled “ Responses ”The updated user.
An end-user, including server-only private metadata. Returned only on the secret-key backend API.
object
Unique identifier for this user.
Identifier of the environment this user belongs to.
Full name on the profile, if any.
First (given) name on the profile, if any.
Last (family) name on the profile, if any.
Preferred locale for emails and UI messages.
Lifecycle status of the user (e.g. active, banned).
When this user was created (ISO-8601 UTC).
When this user was last modified (ISO-8601 UTC).
Primary email on the profile, if any.
When this user’s primary email was verified, if it has been verified.
When this user was deleted, if soft-deleted. Null for active users.
Public metadata: readable by the SDK, writable only server-side.
object
Private metadata: server-only. Never exposed to the SDK or in a JWT.
object
Unsafe metadata: readable and writable by the end-user via the SDK.
object
Example
{ "id": "01931a73-8b00-7000-8000-000000000000", "environmentId": "01931a72-0000-7000-8000-000000000000", "name": "Ada Lovelace", "firstName": "Ada", "lastName": "Lovelace", "locale": "en", "status": "active", "createdAt": "2026-05-16T09:30:00Z", "updatedAt": "2026-05-16T10:00:00Z", "email": "ada@example.com", "emailVerifiedAt": "2026-05-16T09:35:00Z", "deletedAt": "2026-05-20T12:00:00Z", "publicMetadata": { "plan": "pro" }, "privateMetadata": { "stripeId": "cus_123" }, "unsafeMetadata": { "onboardingStep": 2 }}Invalid body.
object
object
Example generated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "instance": "https://example.com", "properties": { "additionalProperty": "example" }}Missing or invalid secret key.
object
object
Example generated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "instance": "https://example.com", "properties": { "additionalProperty": "example" }}User belongs to a different environment.
object
object
Example generated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "instance": "https://example.com", "properties": { "additionalProperty": "example" }}No user with this id.
object
object
Example generated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "instance": "https://example.com", "properties": { "additionalProperty": "example" }}