---
title: "Create new user"
method: POST
path: "/api/{org_id}/users"
tags: ["Users"]
---

# Create new user

`POST /api/{org_id}/users`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/{org_id}/users`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/users/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a new user account within the organization with specified role and authentication credentials. The password must be at least 15 characters long by default or comply to the defined password policy and the email address must be valid. Users are automatically assigned to the organization with the specified role and can begin accessing resources immediately upon creation.

## Path parameters

- `org_id` string, required

## Request body

- object
  - `custom_role` string[], nullable
  - `role` string, required
  - `email` string, required
  - `first_name` string
  - `is_external` boolean: Is the user created via ldap flow.
  - `last_name` string
  - `password` string, required
  - `token` string, nullable

## Response `200`

Success

- union
  - ServiceAccountCreateResponse
    - `code` integer, required
    - `message` string, required
    - `token` string, required
    - `user` string, required
  - HttpResponse: HTTP response code 200 is success code 400 is error code 404 is not found code 500 is internal server error code 503 is service unavailable code >= 1000 is custom error code message is the message or error message
    - `code` integer, required
    - `error_detail` string, nullable
    - `hint` string, nullable: One-line guidance on how to fix the error (agent self-correction, D4).
    - `id` string, nullable
    - `message` string, required
    - `name` string, nullable
    - `suggestions` string[], nullable: Closest valid alternatives for a mistyped field/function name.
    - `trace_id` string, nullable
    - `warnings` string[], nullable: Problems with a request that succeeded anyway. Distinct from `hint`, which explains a failure: these accompany a 200, and the caller is entitled to have meant it.

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
