---
title: "Create the current user profile and mark account setup completed"
method: POST
path: "/users/me/profile"
tags: ["user-profile"]
---

# Create the current user profile and mark account setup completed

`POST /users/me/profile`

## Request body

- CreateUserProfileDto
  - `name` string, required — Full name
  - `username` object — Username: 3 - 100 chars; letters, digits, underscore, and dot only
  - `type` 1 | 2, required — Profile type. 1: Individual, 2: Business
  - `companyName` object — Company name (business profiles)
  - `jobTitle` object — Job title
  - `birthday` object — Birthday
  - `phone` object — Phone number
  - `timezone` object — Timezone
  - `referralCode` object — Referral code
  - `onboardingCompleted` boolean — Whether the onboarding is completed

## Response `201`

User profile created

- UserProfile
  - `id` number, required — User profile ID
  - `name` string, required — Full name
  - `username` object, nullable, required — Username
  - `type` 1 | 2, required — Profile type
  - `companyName` object, nullable, required — Company name (business profiles)
  - `jobTitle` object, nullable, required — Job title
  - `birthday` object, nullable, required — Birthday
  - `phone` object, nullable, required — Phone number
  - `timezone` object, nullable, required — Timezone
  - `avatar` object, nullable, required — Avatar
  - `userId` number, required — User ID
  - `user` User, required
    - `id` number, required — User ID
    - `privyId` string, required — Privy user ID
    - `email` object, nullable, required — Email address
    - `status` 1 | 2 | 3, required — User status
    - `lastLoginCountry` object, nullable, required — Country of the last login with a known geo (ISO 3166-1 alpha-2)
    - `lastLoginCountryAt` object, nullable, required — When lastLoginCountry was last updated
    - `created_at` string, date-time, required — Creation timestamp
    - `updated_at` string, date-time, required — Last update timestamp
    - `userProfile` UserProfile, required — recursive
  - `referralCode` ReferralCode, required
    - `id` number, required — Referral code ID
    - `wallet` string, required — Wallet address
    - `code` string, required — Referral code
    - `codeNormalized` string, required — Referral code normalized
    - `createdAt` string, date-time, required — Creation timestamp
  - `onboardingCompleted` boolean, required — Whether the onboarding is completed
  - `currency` object, nullable, required — Display currency, lower-case ISO 4217
  - `inputMode` object, nullable, required — Amount entry mode: fiat or token
  - `language` object, nullable, required — UI language, as a resolved translation-bundle key. NULL means never chosen (DRE-447).
  - `sessionTimeout` object, nullable, required — App-lock idle timeout in minutes; 0 disables it
  - `appLockEnabled` boolean, required — Whether the app lock (PIN) is set up
  - `created_at` string, date-time, required — Creation timestamp
  - `updated_at` string, date-time, required — Last update timestamp

## Other responses

- `400` — Validation error or user not pending
- `401` — Unauthorized
- `403` — Region blocked (`code: REGION_BLOCKED`), or a missing/invalid CSRF token on a cookie session (`code: CSRF_INVALID` — re-fetch it from `GET /auth/session` and retry once)
- `404` — User not found
- `409` — User profile already exists

---

[API](https://skmtc.dev/dre/apis/dre-api.md) · [All operations](https://skmtc.dev/dre/apis/dre-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/dre/dre-api/revisions/5d14beb9482b/schema)
