Overview
A journey has two parts: start it (Step 1), then drive it to a decision (Step 2). Step 2 differs by mode — Option A is headless, Option B is hosted.Do not assume a fixed sequence of steps — the exact order depends on the lender. Always branch on
currentNextAction.category, not on the step name.Step 1 — Start a Loan Journey
leads:create
Request Body
customer Object
goldLoanDetails Object (Gold Loan Only)
Responses
- Headless Response
- Hosted Response
Example — Start a Headless Personal Loan
Step 2 (Option A) — Drive the Journey Yourself (Headless)
Poll the journey, then act on whatever it asks for.Read Journey State
leads:status:readHeaders:
x-api-key, x-timestamp, x-nonce, x-signature, X-Journey-Session
Branch on the Category
COLLECT — Submit a Customer Action
offers:selectBody:
{ "kind": "<ActionKind>", "payload": { ... } }
Where Offer and Branch Values Come From
When the journey reaches an offer step, theoffers[] array in the journey state is populated. For gold loans, each offer also carries a branchLocations[] array:
id as branchLocationId:
Example — Select an Offer
After any action, resume the GET poll loop immediately.
REDIRECT — Open a Verification Link and Signal Return
When the category isREDIRECT, open currentNextAction.url for the customer (new tab or WebView). It leads to a secure hosted page for KYC, e-sign, or e-NACH mandate.
When the customer returns to your app, signal the return:
offers:selectBody:
{ "kind": "KYC" } — one of KYC | ESIGN | MANDATE
Then resume the GET poll loop.
Step 2 (Option B) — Hand Off to EasyCred (Hosted)
After starting anAPI_HOSTED journey, hand hostedUrl to the customer (deep-link, WebView, or browser redirect). EasyCred’s screens handle every step through to completion — your backend makes no further journey calls.
To track progress:
Poll Application Status
Subscribe to Webhooks
Subscribe with scope
webhooks:manage to receive real-time push notifications as status changes happen.Journey Outcomes (Terminal States)
When thecategory is TERMINAL, read data.outcome: