Login or Create User by Email OTP

POST /v1/auth/otps/email/login_or_create

Create an OTP (one-time passcode) to the provided email for login verification. If no user account exists for the provided email, a new user will be created and email OTP sent.

HTTP Request

POST /v1/auth/otps/email/login_or_create

Returns

A successful response returns an object with user_id, user_created status indicating if the user has been newly created, and email_id properties.

application/json

Body

  • email string Required

    Email that uniquely identifies the user.

    Minimum length is 1.

  • expires_in number

    Expiration time of the OTP in minutes. Must be between 1 to 10 minutes, defaults to 1 minute.

  • requires_verification boolean

    Determines if verification for the authentication method (email, phone_number) is required before marking the user as active.

  • device_fingerprint object

    Device fingerprinting metadata for fraud detection during verification step. This is useful to ensure that the user who originated the request matches the user that verifies the token. Verification requirements can be enabled in the Verify OTP step by matching fields in the device_fingerprint such as IP, User Agent or the combination of them (more fraud detection features coming soon!)

    Hide device_fingerprint attributes Show device_fingerprint attributes object
    • ip string

      IP of the user originating the request.

    • user_agent string

      User Agent of the browser originating the request.

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • user_id string Required

      Minimum length is 1.

    • email_id string Required

      Minimum length is 1.

    • status string Required
    • user_created boolean Required
POST /v1/auth/otps/email/login_or_create
curl \
 --request POST 'https://api.streambird.io/v1/auth/otps/email/login_or_create' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --data '{"email":"sandbox@streambird.io","expires_in":3}'
Request example
{
  "email": "sandbox@streambird.io",
  "expires_in": 3
}
Response examples (200)
{
  "status": "pending",
  "user_id": "user_24wFP9pDa9YiMJLun94iKykoZs2",
  "email_id": "email_24oXBL3PufzHkH1Jzyjc2EXYeo7",
  "user_created": true
}