Create a Kicbak account for a guest from their email alone. The account is attributed to you, has no password, and activates when the guest gives you the six-digit code we email them.

POSThttps://kicbak.co/api/third-party/v1/kicbak/signup

Authentication

Every request needs a bearer token in the Authorization header. Unlike the invite and wallet endpoints, this one accepts organisation-owned AND user-owned credentials: whoever the credential belongs to is who the new account is attributed to. Nothing in the body can change that.

Headers

FieldTypeRequiredDescription
AuthorizationstringrequiredBearer token obtained from POST /api/third-party/v1/auth/token, e.g. "Bearer eyJhbGci...".
Content-Typestringrequiredapplication/json

Request body

FieldTypeRequiredDescription
emailstringrequiredThe guest's email address. This is their whole identity: no password is set, and the six-digit code that activates the account goes here.
namestringoptionalDisplay name, up to 120 characters. When omitted the generated username is used. The guest can change it later.

Code examples

bash
curl -X POST "https://kicbak.co/api/third-party/v1/kicbak/signup" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "email": "ada@example.com", "name": "Ada Lovelace" }'

Responses

Every response is JSON with a status field (1 success, 0 failure). Failures also carry a code your error handler can branch on — it never changes if we reword message.

json
{
  "status": 1,
  "message": "Account created. A verification code has been issued.",
  "data": {
    "email": "ada@example.com",
    "username": "ada",
    "status": "PENDING",
    "codeExpiresInMinutes": 15,
    "codeDelivery": "email"
  }
}

Error reference

StatusCodeMeaning
400A body field is missing or malformed. The message names the field.
409EMAIL_ALREADY_REGISTEREDThe email already has a working Kicbak account. The guest should sign in instead — Kicbak offers an emailed sign-in code, so no password is needed.
401UNAUTHORIZEDNo readable credential, or a token that doesn't decode/validate.
401TOKEN_EXPIREDToken aged out. Re-exchange the same client_key/client_secret and retry.
401CREDENTIAL_ROTATEDThis token was minted under a secret that has since been rotated. Exchange your new secret.
401CREDENTIAL_EXPIREDThe credential itself is past its own expiry — re-exchanging will not help; request a new credential.
401CLIENT_INACTIVEThe client has been deactivated.
503SANDBOX_UNAVAILABLEYou are using a sandbox credential and the sandbox environment is temporarily unavailable on our side. Retry shortly; production credentials are unaffected.
429More than 100 signups in an hour from this client.
500INTERNAL_ERRORUnexpected server error. Safe to retry: signup is idempotent on the email.