Last updated on June 2, 2025
Overview
IMPORTANT: Using the Rublon SDK
IMPORTANT: Application Type Configuration
- Other – If your application supports the Rublon Prompt (a GUI view displayed after entering the username and password)
- Other (Promptless) – If your application does not support the Rublon Prompt (a GUI view displayed after entering the username and password)
IMPORTANT: Error Handling
IMPORTANT: X-Rublon-Signature Header
Transaction Process for Applications That Support Rublon Prompt
Initializing a Transaction
POST /api/transaction/init HTTP/1.1
Host: core.rublon.net
Content-Type: application/json
Accept: application/json
X-Rublon-Signature: [Generated Signature]
{
"systemToken": "[Your System Token]",
"username": "user_identifier",
"callbackUrl": "https://yourapp.com/callback",
"params": {
"appVer": "4.0.2",
"hostName": "Optional Hostname",
"logoutUrl": "https://yourapp.com/login",
"os": "Optional OS Information",
"userPhone": "+1234567890"
},
"userEmail": "user@example.com"
}
{
"status": "OK",
"result": {
"webURI": "https://core.rublon.net/api/transaction/process/[Transaction ID]"
}
}
{
"status": "ERROR",
"code": 400,
"result": {
"exception": "UserBypassedException",
"code": 45,
"errorMessage": "User bypassed",
"details": null
}
}
{
"status": "OK",
"result": {
"webURI": "https://core.rublon.net/api/transaction/deny/[Transaction ID]"
}
}
{
"status": "OK",
"result": {
"webURI": "https://core.rublon.net/api/transaction/deny/[Transaction ID]"
}
}
Completing the Transaction
https://yourapp.com/callback?rublonState=ok&rublonToken=[Access Token]
POST /api/transaction/credentials HTTP/1.1
Host: core.rublon.net
Content-Type: application/json
Accept: application/json
X-Rublon-Signature: [Generated Signature]
{
"systemToken": "[Your System Token]",
"accessToken": "[Access Token from rublonToken]"
}
{
"status": "OK",
"result": {
"systemToken": "F950953E5454435B9A59E3125F9E7879",
"email": "bob@rublon.com",
"username": "user-identifier",
}
}
Transaction Process for Applications That Do Not Support Rublon Prompt
Initializing a Transaction
POST /api/transaction/init HTTP/1.1
Host: core.rublon.net
Content-Type: application/json
Accept: application/json
X-Rublon-Signature: [Generated Signature]
{
"systemToken": "F950953E5454435B9A59E3125F9E7879",
"username": "bob",
"params": {
"appVer": "4.0.2",
"hostName": "22-88-AB",
"os": "Windows-10-10.0.20348-SP0",
"userIP": "127.19.3.124",
"userPhone": "+48666777888"
},
"userEmail": "bob@rublon.com"
}
{
"status": "OK",
"result": {
"methods": [
"email",
"totp",
"qrcode",
"phoneCall",
"push",
"sms",
"smsLink",
"webauthn",
"yotp"
],
"tid": "CCF19A8CE2D1406586278D961AB620F2",
"status": "pending",
"companyName": "Rublon",
"applicationName": "Demo"
}
}
{
"status": "ERROR",
"code": 400,
"result": {
"exception": "UserBypassedException",
"code": 45,
"errorMessage": "User bypassed",
"details": null
}
}
{
"status": "OK",
"result": {
"methods": [],
"tid": "CCF19A8CE2D1406586278D961AB620F2",
"status": "denied",
"companyName": "Rublon",
"applicationName": "Demo"
}
}
{
"status": "OK",
"result": {
"methods": [],
"tid": "CCF19A8CE2D1406586278D961AB620F2",
"status": "waiting",
"companyName": "Rublon",
"applicationName": "Demo",
"webURI": "https://core.rublon.net/api/user/enrollment/114de367d58e706aba1030f6cc5615fca162323129d33f2a00479b0a1a6e"
}
}
Selecting an Authentication Method
POST /api/transaction/methodSSH HTTP/1.1
Host: core.rublon.net
Content-Type: application/json
Accept: application/json
X-Rublon-Signature: [Generated Signature]
{
"systemToken": "F950953E5454435B9A59E3125F9E7879",
"tid": "CCF19A8CE2D1406586278D961AB620F2",
"method": "email"
}
{
"status": "OK",
"result": {
"action": "authentication",
"method": "email",
"tid": "CCF19A8CE2D1406586278D961AB620F2",
"qrText": "994a113db56f39cbc177cd84d1d1410896359a096bcff23dbea1d487bdf7",
"vericodeLength": 6,
"phoneNumber": "********7888",
"token": "b9a1757f987a77237672d0fd4716fb30119fc0c7a73dccd51d1527dcbfab"
}
}
Confirming Identity
Email Link
Passcode (TOTP & Bypass Code)
POST /api/transaction/confirmCode HTTP/1.1
Host: core.rublon.net
Content-Type: application/json
Accept: application/json
X-Rublon-Signature: [Generated Signature]
{
"systemToken": "[Your System Token]",
"tid": "[Transaction ID]",
"vericode": "[User's Passcode]"
}
{
"status": "OK",
"result": true
}
{
"status": "ERROR",
"code": 400,
"result": {
"exception": "PasscodeException",
"code": 18,
"errorMessage": "Hmm, that's not the right code. Try again.",
"details": null
}
}
QR Code
Mobile Push
SMS Passcode
SMS Link
YubiKey OTP Security Key
POST /api/transaction/confirmSecurityKeySSH HTTP/1.1
Host: core.rublon.net
Content-Type: application/json
Accept: application/json
X-Rublon-Signature: [Generated Signature]
{
"systemToken": "[Your System Token]",
"accessToken": "[Token from methodSSH response]",
"otp": "[User's YubiKey OTP]"
}
{
"status": "OK"
}
WebAuthn/U2F Security Key
Phone Call
Completing the Transaction
POST /api/transaction/credentials HTTP/1.1
Host: core.rublon.net
Content-Type: application/json
Accept: application/json
X-Rublon-Signature: [Generated Signature]
{
"systemToken": "[Your System Token]",
"accessToken": "[Access Token from TransactionConfirmedEvent]"
}
{
"status": "OK",
"result": {
"username": "user_identifier",
"email": "user@example.com",
"consumerParams": null
}
}
Exceptions
Invalid System Token
{
"status": "ERROR",
"code": 400,
"result": {
"exception": "APIException",
"code": 10,
"errorMessage": "Project error",
"details": null
}
}
Invalid X-Rublon-Signature
{
"status": "ERROR",
"code": 400,
"result": {
"exception": "InvalidSignatureException",
"code": 9,
"errorMessage": "X-Rublon-Signature is invalid",
"details": null
}
}
Transaction ID Expired
{
"status": "ERROR",
"code": 400,
"result": {
"exception": "TransactionIdExpiredException",
"code": 11,
"errorMessage": "The session has expired due to inactivity.",
"details": "You must log in again."
}
}
Access Token Expired
{
"status": "ERROR",
"code": 400,
"result": {
"exception": "TransactionAccessTokenExpiredException",
"code": 11,
"errorMessage": "Authentication took too long to complete.",
"details": "Return to the application and select the authentication method again."
}
}
Missing Parameters or Incorrect Application Type
{
"status": "ERROR",
"code": 400,
"result": {
"exception": "MissingFieldException",
"code": 3,
"errorMessage": "Parameter required",
"details": null,
"name": "callbackUrl"
}
}