Update User Name
Updates the display name of the authenticated user. Requires the `user:write` scope when called with an API key. The email address is read-only through this API. Leading and trailing whitespace is trimmed before validation.
Your personal API key — vw_ followed by 64 hex characters. The same key is also accepted
as Authorization: Bearer vw_....
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X PUT "https://example.com/api/v1/users/me/name" \ -H "Content-Type: application/json" \ -d '{ "name": "VeriWorkly" }'{ "success": true, "message": "User name updated successfully", "data": { "id": "cmnu7awv4000063lk18zpon2m", "name": "VeriWorkly User New Name", "username": "veriworkly-user", "email": "[email protected]", "emailVerified": true, "autoSyncEnabled": false, "createdAt": "2026-04-11T10:37:35.584Z", "updatedAt": "2026-04-26T02:00:00.000Z", "_count": { "apiKeys": 2, "shareLinks": 4, "resumes": 4 } }}Get Current UserGET
Retrieves account metadata for the currently authenticated user. Requires the `user:read` scope when called with an API key. This returns identity metadata only — resume, cover letter, and portfolio content is never exposed here. Results are cached for 30 minutes and refreshed on write.
Set UsernamePUT
Claims the authenticated user's username. Requires the `user:write` scope when called with an API key. The username is the public identifier in share-link URLs (`/share/{username}/{slug}`) and, for accounts holding `custom_subdomain`, the published-portfolio subdomain — so a user cannot create a share link until one is set. **A username can only be set once.** Once the account has one, this endpoint rejects any different value with `409 Username is locked and cannot be changed`. Re-sending the value the account already holds is a no-op and returns `200`, so the call is safe to retry. The submitted value is **normalised before validation**: lowercased, non-`[a-z0-9_-]` characters folded to hyphens, leading/trailing hyphens stripped, and truncated to 32 characters. `Jane.Doe` and `jane-doe` therefore claim the same username. It must survive normalisation as 3–32 characters and must not be a reserved word (`admin`, `api`, `app`, `docs`, and similar platform-owned names). Check with `GET /users/{username}/availability` before committing. A successful claim invalidates the caller's cached session so the new username is visible immediately rather than at the end of the session-cache TTL.