Skip to main content
POST
/
remote-verification
/
v1
/
create-journey-url
Create Journey URL
curl --request POST \
  --url https://uaekyc-proxy.uaekyc-docs.workers.dev/remote-verification/v1/create-journey-url \
  --header 'Content-Type: application/json' \
  --header 'x-transaction-key: <api-key>' \
  --data '
{
  "journeyType": "REMOTE_ONBOARDING",
  "sdkConfig": {
    "verificationDomain": "example.com",
    "gestures": [
      "blink"
    ],
    "documentsAllowed": [
      "emirates_id"
    ],
    "skipConsent": false,
    "skipResultPage": false,
    "accentColor": "#CFB16C",
    "theme": "system",
    "docCaptureCamFacingMode": "user",
    "language": "en",
    "logoUrl": "<string>",
    "privacyPolicyUrl": "<string>"
  },
  "linkExpiry": 86400
}
'
{
  "status": "success",
  "message": "Remote verification URL created successfully",
  "data": {
    "url": "/verify/abc123def456789ghi012jkl345mno678pqr901stu234vwx567yz890",
    "remoteVerificationId": "RVF-2025-1753213901873CG123455",
    "expiresAt": 1699209856789
  },
  "meta": {},
  "errors": [],
  "signature": ""
}

Overview

Creates a secure, one-time use verification URL that can be shared with end-users via email, SMS, WhatsApp, or any communication channel. The API returns a remoteVerificationId to track the verification status and a URL path that users can access to complete their KYC verification on any device with a browser.

Request Headers

HeaderRequiredDescription
Content-TypeYesMust be application/json
x-transaction-keyYesYour API key

Request Parameters

journeyType (Required)

ValueDescription
REMOTE_ONBOARDINGKYC verification for new customers
REMOTE_REKYCRe-verification for existing customers

identificationDetails (Optional)

Pre-populate verification with known customer information. Only one of these should be provided:
Document TypeFields
Emirates IDemiratesIdNumber
PassportpassportDetails.passportNumber, passportDetails.passportType, passportDetails.nationality
GCC IDgccDetails.idNumber, gccDetails.nationality
UAE KYC IDuaeKycId

linkExpiry (Optional)

FieldTypeDefaultDescription
linkExpiryInteger86400URL expiry time in seconds (600-2592000)

sdkConfig (Optional)

FieldTypeDefaultOptionsDescription
verificationDomainString-Valid domainRequired. Your verification domain
gesturesArray-["blink","smile"]Liveness detection gestures
documentsAllowedArrayOrg defaults["emirates_id", "passport", "gcc_id"]Allowed document types
skipConsentBooleanfalse-Skip consent screen
skipResultPageBooleanfalse-Skip result page
accentColorString#CFB16CHex colorBrand accent color
themeStringsystemlight, dark, systemUI theme
docCaptureCamFacingModeStringuseruser, environmentCamera facing mode
languageStringenen, ar, ru, fr, zh, it, tr, ukInterface language
logoUrlString-Valid URLOrganization logo
privacyPolicyUrlString-Valid URLPrivacy policy link

Request Body

Choose the request body based on your document verification requirement:
When documentsAllowed is not specified or contains multiple options, the end-user will see a document selection screen.
{
  "journeyType": "REMOTE_ONBOARDING",
  "linkExpiry": 3600,
  "sdkConfig": {
    "verificationDomain": "example.com",
    "gestures": ["blink"],
    "documentsAllowed": ["emirates_id"],
    "accentColor": "#000000",
    "theme": "system",
    "language": "en",
    "logoUrl": "https://example.com/logo.png",
    "privacyPolicyUrl": "https://example.com/privacy"
  }
}
User Experience: The end-user will be presented with a document selection screen where they can choose from Emirates ID, Passport, or GCC ID based on your organization’s enabled document types.

Response Fields

FieldTypeDescription
urlStringVerification URL path
remoteVerificationIdStringUnique identifier for status tracking
expiresAtNumberExpiration timestamp in milliseconds
Use the remoteVerificationId to track the verification status. Call the Get Verification Status API to monitor progress and retrieve the journeyToken once the user completes verification.
For more error codes, see Error Codes.

Authorizations

x-transaction-key
string
header
required

Body

application/json
journeyType
enum<string>
default:REMOTE_ONBOARDING
required

Journey type: REMOTE_ONBOARDING for new customers, REMOTE_REKYC for re-verification.

Available options:
REMOTE_ONBOARDING,
REMOTE_REKYC
sdkConfig
object
required

URL expiry time in seconds (600-2592000). Default: 86400 (24 hours).

Response

Remote verification URL created successfully

status
string
Example:

"success"

message
string
Example:

"Remote verification URL created successfully"

data
object
meta
object
errors
object[]
signature
string