---
title: "Create user profile."
method: POST
path: "/v1/user_profiles"
tags: ["user_profiles"]
---

# Create user profile.

`POST /v1/user_profiles`

Create a user profile.

## Request body

- CreateUserProfileRequest — Request to create a user profile.
  - `id` string, nullable — The ID of the user. If not supplied, a new one will be created.
  - `email` string, required — The user email.
  - `github_user_name` string, nullable — The GitHub username.
  - `active_account` string, required — The active account ID.
  - `keycloak_user_id` string, nullable — The Keycloak user ID.
  - `auth_provider` 'AUTH_PROVIDER_UNSPECIFIED' | 'AUTH_PROVIDER_SUPABASE' | 'AUTH_PROVIDER_KEYCLOAK' | 'UNRECOGNIZED', required

## Response `200`

OK

- UserProfileView — User profile information.
  - `id` string, required — The user profile ID.
  - `github_user_name` string, nullable — The GitHub username.
  - `active_account` string, nullable — The active account ID.
  - `keycloak_user_id` string, nullable — The Keycloak user ID.
  - `auth_provider` string, nullable — The auth provider.
  - `email` string, required — The user email.
  - `created_at` string, required — The user creation timestamp.

## Changes

- **2025-11-19** `5f33221208c1` — 3 breaking, 8 info
  - added the new required request property `email`
  - request property `auth_provider` was restricted to a list of enum values
  - the request property `auth_provider` became not nullable
  - the request property `id` became nullable
  - …7 more
- **2025-11-05** `63df0e3eb49d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/runloopai/apis/runloop-api/changes/v1/user_profiles/post.md)

---

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