> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upsolve.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Register Project User

> Use this endpoint to securely register a project user to Upsolve and pass metadata relating to the user. This metadata payload will be used to secure data when the user accesses an Upsolve dashboard. Unlike registerTenant, this endpoint does not return a JWT token.



## OpenAPI

````yaml post /v1/api/projects/register-user
openapi: 3.1.0
info:
  title: Upsolve API
  version: 1.4.1
servers:
  - url: https://api.upsolve.ai
security: []
tags: []
paths:
  /v1/api/projects/register-user:
    post:
      summary: Register project user to Upsolve
      description: >-
        Use this endpoint to securely register a project user to Upsolve and
        pass metadata relating to the user. This metadata payload will be used
        to secure data when the user accesses an Upsolve dashboard. Unlike
        registerTenant, this endpoint does not return a JWT token.
      operationId: PostV1ApiProjectsRegisterUser
      requestBody:
        description: POST /v1/api/projects/register-user Request body
        content:
          application/json:
            schema:
              type: object
              properties:
                apiKey:
                  type: string
                  minLength: 1
                  description: >-
                    Upsolve API key, generated under Account → Developer
                    settings in the Upsolve Hub. Keys are user-scoped: pass
                    organizationId alongside the key to select which org to act
                    on.
                  examples:
                    - up_embed_************
                organizationId:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
                name:
                  type: string
                  description: >-
                    Display name for this user. This will appear in the Upsolve
                    Hub.
                  examples:
                    - Google Inc
                properties:
                  type: object
                  propertyNames:
                    type: string
                    description: Property key
                  additionalProperties:
                    description: Property value
                  description: Properties of a user
                projectId:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
                  description: The ID of the project
                  examples:
                    - 123e4567-e89b-12d3-a456-426614174000
                userRoleId:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
                  description: The ID of the user role
                  examples:
                    - 123e4567-e89b-12d3-a456-426614174000
                projectOrganizationId:
                  type: string
                  minLength: 1
                  description: >-
                    Identifier of the project organization the user belongs to.
                    Accepts either the Upsolve-issued UUID or the project
                    organization's `externalId` (set at /register-organization
                    time).
                  examples:
                    - 123e4567-e89b-12d3-a456-426614174000
                userId:
                  description: >-
                    Optional ID for the project user. If provided, this value is
                    used as the project_users.id; otherwise the database
                    generates one.
                  examples:
                    - 123e4567-e89b-12d3-a456-426614174000
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
              required:
                - name
                - properties
                - projectId
                - userRoleId
                - projectOrganizationId
            examples:
              example1:
                value:
                  name: Google Inc
                  properties:
                    company_id: company-google
                    company_class: tech
                  projectId: 123e4567-e89b-12d3-a456-426614174000
                  userRoleId: 123e4567-e89b-12d3-a456-426614174000
                  projectOrganizationId: 123e4567-e89b-12d3-a456-426614174000
                  apiKey: up_embed_************
                  userId: 123e4567-e89b-12d3-a456-426614174000
        required: true
      responses:
        '200':
          description: POST /v1/api/projects/register-user Positive response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: success
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                        description: Result of the API returned as a message.
                        examples:
                          - User Google Inc registered.
                      userId:
                        type: string
                        format: uuid
                        pattern: >-
                          ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
                        description: The ID of the registered user
                        examples:
                          - 123e4567-e89b-12d3-a456-426614174000
                    required:
                      - message
                      - userId
                    additionalProperties: false
                    examples:
                      - message: User Google Inc registered.
                        userId: 123e4567-e89b-12d3-a456-426614174000
                required:
                  - status
                  - data
                additionalProperties: false
        '400':
          description: POST /v1/api/projects/register-user Negative response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: error
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                      code:
                        type: string
                      details:
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties: {}
                    required:
                      - message
                    additionalProperties: false
                required:
                  - status
                  - error
                additionalProperties: false
      security:
        - APIKEY_1: []
components:
  securitySchemes:
    APIKEY_1:
      type: apiKey
      in: query
      name: apiKey
      x-in-actual: body
      description: apiKey MUST be supplied within the request body instead of query

````