Users
Update name
Update the authenticated user's name.
PUT /users/me/name
Updates the user's name and returns the updated profile.
Breaking change. This route used to take a single
name. It now takes firstName and
lastName, and both are required. A whole name has to be guessed apart before it can be
stored, and the guess is wrong in ways you can simply tell us instead — "Ana B Cruz" loses the
middle initial, "van der Berg" loses the middle, "RAJESH KUMAR" comes back re-cased.Authentication: Bearer token · Permission:
account:write · Rate limit: default (120 / 60s)Request body
firstName
string required
The new first name. 1–64 characters.
lastName
string required
The new last name. 1–64 characters.
name is not an input. It is returned on the response as the two parts joined.
{ "firstName": "Ada", "lastName": "Lovelace" }
Request
curl -X PUT https://api.twominutereports.com/v1/users/me/name \
-H "Authorization: Bearer tmrc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "firstName": "Ada", "lastName": "Lovelace" }'
Response
Returns the full user object.
{
"success": true,
"data": {
"id": "0190f8a1-2b3c-7d4e-8f90-1a2b3c4d5e6f",
"name": "Ada Lovelace",
"firstName": "Ada",
"lastName": "Lovelace",
"email": "[email protected]",
"avatarUrl": null,
"preferences": {
"appearance": "light",
"notifications": {
"email": { "billing": true, "productUpdates": true, "promotional": false }
}
},
"createdAt": "2026-01-12T08:15:00.000Z"
}
}
{
"success": false,
"error": { "code": "BAD_REQUEST", "message": "firstName: String must contain at least 1 character(s)" }
}
{
"success": false,
"error": { "code": "UNAUTHORIZED", "message": "Authentication required" }
}