Skip to content

Register ​

http
POST /api/auth/register

Public · rate limited (20 / 15 min)

Creates an account and a custodial Stellar wallet, sends a verification email, and returns a session token.

Body ​

FieldTypeRules
emailstringValid email; trimmed and lowercased
passwordstring8–128 chars, at least one letter and one number
displayNamestring3–24 chars, [A-Za-z0-9_], unique (case-insensitive)
json
{ "email": "amaka@example.ng", "password": "naira2026", "displayName": "amaka_ng" }

Response 201 ​

json
{
  "user": {
    "id": "cmf0x1a2b0000abcd",
    "email": "amaka@example.ng",
    "displayName": "amaka_ng",
    "phone": null,
    "role": "USER",
    "status": "ACTIVE",
    "emailVerified": false,
    "kycStatus": "UNVERIFIED",
    "kycIdType": null,
    "kycIdLast4": null,
    "stellarPublicKey": "GBZ…Q7X",
    "createdAt": "2026-09-13T15:00:00.000Z"
  },
  "token": "eyJhbGciOi…"
}

On testnet the wallet is funded by Friendbot in the background; it may take a few seconds before GET /wallet shows funded: true.

Errors ​

StatusCodeCause
400VALIDATION_ERRORInvalid field
409CONFLICT"An account with this email already exists" or "That display name is taken"
429RATE_LIMITED

Nexlm is a peer-to-peer facilitator and never holds customer Naira.