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

# Create a login identifier for a user

> Adds an `email`, `phone` or `username` login identifier to a user. A user can have multiple identifiers.

Connect uses username identifiers to [map your external identity](/corbado-connect/concepts/connect-token)
to the Corbado user and passkeys. This operation does not create an identity-provider session.

Required API key permission: `identifiers:write`.



## OpenAPI

````yaml /api-reference/openapi/connect-backend.yaml post /users/{userID}/identifiers
openapi: 3.1.1
info:
  version: 2.0.0
  title: Corbado Backend API
  description: >
    # Introduction

    This documentation gives an overview of all Corbado Backend API calls to
    implement passwordless authentication with Passkeys.
  contact:
    name: Corbado team
    email: support@corbado.com
    url: https://www.corbado.com
servers:
  - url: https://backendapi.cloud.corbado.io/v2
security:
  - basicAuth: []
  - bearerAuth: []
tags:
  - name: ConnectTokens
    description: All API calls to manage connectTokens
    x-group: Connect tokens
  - name: Passkeys
    description: All API calls for passkey flows
    x-group: Passkey ceremonies
  - name: Users
    description: All API calls to manage users
    x-group: Users and passkeys
  - name: Identifiers
    description: All API calls to manage login identifiers
    x-group: Identifiers
  - name: PasskeyEvents
    description: All API calls to manage passkey events
    x-group: Passkey diagnostics
  - name: PasskeyChallenges
    description: All API calls to manage passkey challenges
    x-group: Passkey diagnostics
  - name: Exports
    description: All API calls to manage project export files
    x-group: Data exports
  - name: Connect reads
    description: Connect analytics, process investigation and configuration reads.
    x-group: Analytics and configuration
  - name: ConnectManagement
    description: Connect application and native-app configuration management.
    x-group: App configuration
  - name: ConnectRollout
    description: Connect rollout configuration, rulesets, targeting and simulations.
    x-group: Rollout configuration
  - name: Sessions
    description: All API calls to manage sessions
  - name: Challenges
    description: All API calls to manage challenges
  - name: SSO
    description: All API calls for SSO flows
  - name: AuthEvents
    description: All API calls to manage authentication events
  - name: ProjectConfig
    description: All API calls to manage project configurations
  - name: WebhookEndpoints
    description: All API calls to manage webhook endpoints
  - name: PasswordManagers
    description: All API calls to manage password managers
  - name: ClientEnvs
    description: All API calls to manage client environments
  - name: Devices
    description: All API calls to manage devices
paths:
  /users/{userID}/identifiers:
    post:
      tags:
        - Identifiers
      summary: Create a login identifier for a user
      description: >-
        Adds an `email`, `phone` or `username` login identifier to a user. A
        user can have multiple identifiers.


        Connect uses username identifiers to [map your external
        identity](/corbado-connect/concepts/connect-token)

        to the Corbado user and passkeys. This operation does not create an
        identity-provider session.


        Required API key permission: `identifiers:write`.
      operationId: IdentifierCreate
      parameters:
        - $ref: '#/components/parameters/userID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/identifierCreateReq'
      responses:
        '200':
          description: Identifier has been created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/identifier'
        default:
          $ref: '#/components/responses/error'
      security:
        - basicAuth: []
        - bearerAuth:
            - identifiers:write
components:
  parameters:
    userID:
      name: userID
      in: path
      description: |
        Unique identifier of the user. Format: `usr-<number>`.
      required: true
      schema:
        type: string
        example: usr-4693224802260150919
  schemas:
    identifierCreateReq:
      type: object
      required:
        - identifierType
        - identifierValue
        - status
      properties:
        identifierType:
          $ref: '#/components/schemas/identifierType'
        identifierValue:
          type: string
        status:
          $ref: '#/components/schemas/identifierStatus'
    identifier:
      type: object
      required:
        - identifierID
        - type
        - value
        - status
        - userID
      properties:
        identifierID:
          type: string
          description: Unique identifier of the login identifier.
          example: ide-4693224802260150919
        type:
          $ref: '#/components/schemas/identifierType'
        value:
          type: string
          description: Value of the identifier (here email address).
          example: jane@doe.com
        status:
          $ref: '#/components/schemas/identifierStatus'
        userID:
          type: string
          description: Unique identifier of the user.
          example: usr-4693224802260150919
    identifierType:
      type: string
      enum:
        - email
        - phone
        - username
    identifierStatus:
      type: string
      enum:
        - pending
        - primary
        - verified
  responses:
    error:
      description: Error
      content:
        application/json:
          schema:
            allOf:
              - type: object
                required:
                  - httpStatusCode
                  - message
                  - requestData
                  - runtime
                properties:
                  httpStatusCode:
                    description: HTTP status code of operation
                    type: integer
                    format: int32
                  message:
                    type: string
                    example: OK
                  requestData:
                    description: Data about the request itself, can be used for debugging
                    type: object
                    required:
                      - requestID
                    properties:
                      requestID:
                        description: >-
                          Unique ID of request, you can provide your own while
                          making the request, if not the ID will be randomly
                          generated on server side
                        type: string
                        example: req-557...663
                      link:
                        description: Link to dashboard with details about request
                        type: string
                        example: >-
                          https://my.corbado.com/requests/req-xxxxxxxxxxxxxxxxxxx
                  runtime:
                    description: Runtime in seconds for this request
                    type: number
                    format: float
                    example: 0.06167686
              - type: object
                required:
                  - error
                properties:
                  data:
                    type: object
                  error:
                    type: object
                    required:
                      - type
                    properties:
                      type:
                        description: Type of error
                        type: string
                      details:
                        description: Details of error
                        type: string
                      validation:
                        description: Validation errors per field
                        type: array
                        items:
                          type: object
                          required:
                            - field
                            - message
                          properties:
                            field:
                              type: string
                            message:
                              type: string
                      links:
                        description: Additional links to help understand the error
                        type: array
                        items:
                          type: string
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >
        Basic authentication is used to authenticate requests to the Backend
        API. The username is the project ID and the password is the API secret.


        The project ID and API secret can be found in the [Management
        Console](https://app.corbado.com/settings/api-secrets).
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Use your versioned Backend API key. The key must grant the operation
        permission and satisfy its expiry and IP restrictions.

````