> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.credit.aarthiklabs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.credit.aarthiklabs.com/_mcp/server.

# Read Loan Against Mutual Funds Offer And Hand-Off URL

GET https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/{borrowerProviderID}/journey/offers/{offerID}/hosted

Backend-only API-key call. Use after the borrower selects a Loan Against Mutual Funds Credit Line or Term Loan offer in your UI. The selected lender's server configuration controls acceptance; the deprecated `isOfferAccepted` value is ignored. Server-enabled acceptance remains supported only for online single-redirection LAMF journeys, while a disabled policy returns the pre-acceptance pledge/offer path. Inspect `offer_acceptance.requested`, `applied`, and `mode`. Supported pending and terminal states return a fresh Hosted continuation URL instead of requiring API polling. Unsupported modes remain `HYBRID_HOSTED_STAGE_UNSUPPORTED`. LAMF handoff responses do not expose `minimumLoanAmount` or `maximumLoanAmount`.

Reference: https://docs.credit.aarthiklabs.com/api-reference/hybrid-experience/loan-against-mutual-funds/get-hybrid-lamf-hosted-experience-url

## Authentication

- `Authorization` header (bearer token, required) — Send `Authorization: Bearer <PLATFORM_API_KEY>` from a trusted back-end.

## Servers

- `https://credit.aarthiklabs.com` (Production, default)
- `https://preprod.credit.aarthiklabs.com` (PreProduction)

## Request

### Path parameters

- `borrowerProviderID` (string, required) — Stable borrower identity from the partner system. Keep a 1:1 mapping between the borrower and `borrowerProviderID` across sessions and application attempts to preserve resume, history, and post-disbursal continuity.
- `offerID` (string, required) — Offer identifier returned in `data.lenders.<lenderName>.offers[].offerID`.

### Query parameters

- `journeyID` (string, optional) — Journey ID returned as `data.journey.id` by Start. Send this on Offers and Hosted handoff calls to continue the intended application attempt. The `journey_id` query parameter and `x-aarthiklabs-journey-id` header aliases are also accepted. If more than one alias is sent, all values must match.
- `isOfferAccepted` (string, optional, deprecated) — Deprecated compatibility parameter. Its value is ignored; Aarthik Labs server configuration determines the effective offer-acceptance decision.

### Headers

- `x-correlation-id` (string, optional) — Optional caller-supplied trace identifier. When omitted, the API generates one and mirrors it as `correlation_id`.

## Response

### 200

Legacy LAMF Hosted entrypoint, or supported opt-in single-redirection acceptance state.

- `request_id` (string, required)
- `correlation_id` (string, required)
- `timestamp` (datetime, required)
- `data` (HybridLAMFHostedURLData, required)
- `error` (any, required)

## Errors

### 400 Bad Request Error

Request body or path validation failed.

- `request_id` (string, required)
- `correlation_id` (string, required)
- `timestamp` (datetime, required)
- `data` (any, required)
- `error` (HybridError, required)

### 401 Unauthorized Error

Missing or invalid platform API key.

- `request_id` (string, required)
- `correlation_id` (string, required)
- `timestamp` (datetime, required)
- `data` (any, required)
- `error` (HybridError, required)

### 404 Not Found Error

Borrower, journey, route, or offer was not found for the authenticated application scope.

- `request_id` (string, required)
- `correlation_id` (string, required)
- `timestamp` (datetime, required)
- `data` (any, required)
- `error` (HybridError, required)

### 409 Conflict Error

The current journey or offer state does not allow the requested transition.

- `request_id` (string, required)
- `correlation_id` (string, required)
- `timestamp` (datetime, required)
- `data` (any, required)
- `error` (HybridError, required)

### 429 Too Many Requests Error

Too many requests. For offer polling, retry at the returned `polling.nextPoll` timestamp.

- `GetHybridLAMFHostedExperienceUrlRequestTooManyRequestsError`
  - HybridErrorResponse: HybridErrorResponse
  - HybridOfferPollingRateLimitedResponse: HybridOfferPollingRateLimitedResponse

### 500 Internal Server Error

Temporary upstream or platform failure.

- `request_id` (string, required)
- `correlation_id` (string, required)
- `timestamp` (datetime, required)
- `data` (any, required)
- `error` (HybridError, required)

## Types

### HybridLAMFHostedURLData

- `hosted_url` (string, required, nullable) — Short-lived Hosted Experience entry URL. Open immediately.
- `expires_at` (datetime, required, nullable)
- `target_offer_id` (string, required)
- `target_journey_id` (string, required)
- `journey` (HybridLAMFHostedJourney, required)
- `offer_acceptance` (HybridHostedOfferAcceptanceOutcome, optional) — Present only when `isOfferAccepted=true`. Inspect `applied` before using redirection or polling metadata.
- `redirection` (HybridHostedRedirection, optional, nullable)
- `polling` (HybridHostedAcceptancePolling, optional)

### HybridError

- `code` (enum, required)
  - Allowed values: `VALIDATION_FAILED`, `AUTH_INVALID_API_KEY`, `AUTH_INVALID_SESSION`, `ACCESS_SCOPE_MISMATCH`, `RESOURCE_NOT_FOUND`, `OFFER_LOCK_CONFLICT`, `STATE_PRECONDITION_FAILED`, `OFFER_POLL_RATE_LIMITED`, `HYBRID_JOURNEY_NOT_READY`, `RATE_LIMITED`, `UPSTREAM_TEMPORARY_FAILURE`
- `message` (string, required)
- `retryable` (boolean, required) — Whether retrying the same operation can make progress. A persisted final primary-form failure is not retryable, including HTTP 500; reconcile the accepted operation before any resubmission. Correct invalid input before retrying validation failures.
- `details` (map from string to any, required, nullable)

### HybridErrorResponse

- `request_id` (string, required)
- `correlation_id` (string, required)
- `timestamp` (datetime, required)
- `data` (any, required)
- `error` (HybridError, required)

### HybridOfferPollingRateLimitedResponse

- `request_id` (string, required)
- `correlation_id` (string, required)
- `timestamp` (datetime, required)
- `data` (HybridOfferPollingRateLimitedResponseData, required)
- `error` (HybridError, required)

### HybridLAMFHostedJourney

- `id` (string, required) — Aarthik Labs journey ID. Matches `data.journey.id` in lifecycle web-hooks for the same borrower journey.
- `endUse` (enum, optional, nullable)
  - Allowed values: `consumerDurablePurchase`, `education`, `travel`, `health`, `marriage`, `familyFunctions`, `medicalTreatmentAndEmergencies`, `travelEducationExpenses`, `businessExpansion`, `agricultureAndFarmRelatedNeeds`, `purchaseOfEquipment`, `other`
- `bureauConsent` (boolean, optional, nullable)
- `ondc_transaction_id` (string, optional, nullable)
- `type` (enum, optional)
  - Allowed values: `LAMF_LOAN`
- `status` (enum, optional, nullable)
  - Allowed values: `STARTED`, `NOT_PROFILED`, `PROFILED`, `OFFERED`, `NOT_OFFERED`, `OFFER_ACCEPTED`, `LENDER_REDIRECTED`, `REJECTED`, `DISBURSED`, `EXPIRED`
- `kyc_status` (enum, optional)
  - Allowed values: `PENDING`, `SUCCESS`, `FAILURE`
- `kyc_attempts` (integer, optional, nullable)
- `emandate_status` (enum, optional)
  - Allowed values: `PENDING`, `SUCCESS`, `FAILURE`
- `emandate_attempts` (integer, optional, nullable)
- `esign_status` (enum, optional)
  - Allowed values: `PENDING`, `SUCCESS`, `FAILURE`
- `esign_attempts` (integer, optional, nullable)
- `lender` (HybridHostedLender, optional)
- `offer` (HybridLamfHostedJourneyOffer, optional)

### HybridHostedOfferAcceptanceOutcome

Present only when `isOfferAccepted=true`. Inspect `applied` before using redirection or polling metadata.

- `requested` (boolean, required) — True when the caller supplied exact lowercase isOfferAccepted=true.
- `applied` (boolean, required) — True when API acceptance is in effect for the selected offer, including when an earlier successful request already applied it.
- `mode` (enum, required) — Acceptance result classification returned for compatibility. Integrations should make flow decisions using `applied`.
  - Allowed values: `API_ALLOWED`, `HOSTED_REQUIRED`, `LEGACY_API_ALLOWED`

### HybridHostedRedirection

- `type` (enum, required)
  - Allowed values: `SINGLE`, `MULTIPLE`
- `stage` (enum, required)
  - Allowed values: `LENDER_REDIRECTION`, `KYC`, `BANK_MANDATE`, `E_MANDATE`, `LOAN_AGREEMENT`
- `state` (enum, required)
  - Allowed values: `READY`, `PENDING`, `TERMINAL`

### HybridHostedAcceptancePolling

- `shouldPoll` (boolean, required) — When true, repeat the same Hosted handoff request using the original offer ID after nextPoll. Do not replace the request path with target_offer_id.
- `lastPoll` (datetime, required)
- `nextPoll` (datetime, required, nullable) — Initially five seconds after lastPoll while polling remains enabled.

### HybridOfferPollingRateLimitedResponseData

- `polling` (HybridPolling, required)

### HybridHostedLender

- `id` (string, optional, nullable)
- `lender_name` (string, optional, nullable)
- `lender_gro_name` (string, optional, nullable)
- `lender_gro_email` (string, optional, nullable)
- `lender_gro_contact_number` (string, optional, nullable)
- `lender_gro_designation` (string, optional, nullable)
- `lender_gro_address` (string, optional, nullable)
- `lender_customer_support_link` (string, optional, nullable)
- `lender_customer_support_contact_number` (string, optional, nullable)
- `lender_customer_support_email` (string, optional, nullable)

### HybridLamfHostedJourneyOffer

- HybridLAMFHostedCreditLineOffer: HybridLAMFHostedCreditLineOffer
- HybridLAMFHostedTermLoanOffer: HybridLAMFHostedTermLoanOffer

### HybridPolling

- `shouldPoll` (boolean, required)
- `lastPoll` (datetime, required)
- `nextPoll` (datetime, required)

### HybridLAMFHostedCreditLineOffer

Selected LAMF credit-line offer returned with the Hosted handoff URL.

- `id` (string, required, nullable)
- `accepted` (boolean, required, nullable)
- `expired` (boolean, required, nullable)
- `productType` (enum, required) — LAMF product discriminator.
  - Allowed values: `LAMF`
- `facilitytype` (enum, required) — LAMF facility type.
  - Allowed values: `CREDIT_LINE`
- `sanctionedLimit` (string, required, nullable) — Approved credit-line limit.
- `renewalFrequency` (string, required, nullable) — How often the credit line is renewed, for example YEARLY.
- `repaymentFrequency` (string, required, nullable) — Repayment cadence quoted by the lender.
- `repaymentType` (string, required, nullable) — Repayment structure quoted by the lender.
- `annualPercentageRate` (string, required, nullable)
- `interestRate` (string, required, nullable)
- `offerTerm` (string, required, nullable)
- `processingFee` (string, required, nullable) — Processing fee quoted by the lender for this LAMF offer.
- `applicationFee` (string, required, nullable) — Application fee quoted by the lender for this LAMF offer.
- `offerValidity` (string, required, nullable) — How long this LAMF offer remains valid.
- `pledgeRequirements` (list of HybridLAMFPledgeRequirement, required)
- `offerSignals` (HybridOfferSignals, required)
- `interestType` (string, optional, nullable)
- `coolOffPeriod` (string, optional, nullable)
- `termsAndConditionsLink` (string, optional, nullable)
- `keyFactsStatementLink` (string, optional, nullable)

### HybridLAMFHostedTermLoanOffer

Selected LAMF term-loan offer returned with the Hosted handoff URL.

- `id` (string, required, nullable)
- `accepted` (boolean, required, nullable)
- `expired` (boolean, required, nullable)
- `productType` (enum, required) — LAMF product discriminator.
  - Allowed values: `LAMF`
- `facilitytype` (enum, required) — LAMF facility type.
  - Allowed values: `TERM_LOAN`
- `amountPrincipal` (string, required, nullable) — Principal amount offered for the LAMF term loan.
- `installmentAmount` (string, required, nullable) — Installment amount for the LAMF term loan.
- `repaymentFrequency` (string, required, nullable) — Repayment cadence quoted by the lender.
- `repaymentType` (string, required, nullable) — Repayment structure quoted by the lender.
- `annualPercentageRate` (string, required, nullable)
- `interestRate` (string, required, nullable)
- `offerTerm` (string, required, nullable)
- `processingFee` (string, required, nullable) — Processing fee quoted by the lender for this LAMF offer.
- `applicationFee` (string, required, nullable) — Application fee quoted by the lender for this LAMF offer.
- `offerValidity` (string, required, nullable) — How long this LAMF offer remains valid.
- `pledgeRequirements` (list of HybridLAMFPledgeRequirement, required)
- `offerSignals` (HybridOfferSignals, required)
- `interestType` (string, optional, nullable)
- `coolOffPeriod` (string, optional, nullable)
- `termsAndConditionsLink` (string, optional, nullable)
- `keyFactsStatementLink` (string, optional, nullable)

### HybridLAMFPledgeRequirement

- `rta` (string, required) — Registrar and transfer agent for the pledged mutual fund units.
- `amcCode` (string, required) — Asset management company code.
- `schemeCode` (string, required) — Mutual fund scheme code.
- `folioID` (string, required) — Investor folio identifier.
- `unitsRequired` (string, required) — Units that need to be pledged for this offer.

### HybridOfferSignals

- `offerType` (enum, required) — How firm the lender-side offer is at the polling stage.
  - Allowed values: `DEDUPE_OFFER`, `PROVISIONAL_OFFER`, `FINAL_OFFER`
- `fulfillmentJourneyType` (enum, required) — Expected borrower fulfillment path after selecting the offer.
  - Allowed values: `FULLY_DIGITAL_STP`, `COMBINED_ONLINE_OFFLINE`, `OFFLINE_ASSISTED`
- `conversionChance` (enum, required) — Business-configured conversion likelihood signal for borrower guidance.
  - Allowed values: `VERY_HIGH`, `HIGH`, `MODERATE`, `LOW`, `VERY_LOW`

## Examples

### Loan Against Mutual Funds credit-line hosted handoff

**Response**

```json
{
  "request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "correlation_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "timestamp": "1970-01-01T00:00:00.000Z",
  "data": {
    "hosted_url": "https://credit.aarthiklabs.com/lab/handoff?handoff=xxXxxX0x0x...#bt_test_xxx000",
    "expires_at": "1970-01-01T00:15:00.000Z",
    "target_offer_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "target_journey_id": "journey_lamf_001",
    "journey": {
      "id": "journey_lamf_001",
      "endUse": "businessExpansion",
      "bureauConsent": true,
      "ondc_transaction_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "type": "LAMF_LOAN",
      "status": "OFFERED",
      "kyc_status": "PENDING",
      "kyc_attempts": 0,
      "emandate_status": "PENDING",
      "emandate_attempts": 0,
      "esign_status": "PENDING",
      "esign_attempts": 0,
      "lender": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "lender_name": "DSP Finance",
        "lender_gro_name": "ONDC",
        "lender_gro_email": "lifeline@ondc.com",
        "lender_gro_contact_number": "1860 266 7766",
        "lender_gro_designation": "Nodal Grievance Redressal Officer",
        "lender_gro_address": "One Indiabulls Centre, Mumbai",
        "lender_customer_support_link": "https://buy.ondc.org/buy/GrievanceRedStep.htm?execution=e1s1",
        "lender_customer_support_contact_number": "1800 1080",
        "lender_customer_support_email": "customer.care@ondc.com"
      },
      "offer": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "accepted": false,
        "expired": false,
        "productType": "LAMF",
        "facilitytype": "CREDIT_LINE",
        "sanctionedLimit": "1100000.00",
        "renewalFrequency": "YEARLY",
        "repaymentFrequency": "MONTHLY",
        "repaymentType": "INTEREST_ONLY",
        "annualPercentageRate": "5.00",
        "interestRate": "12.00",
        "interestType": "FLOATING",
        "offerTerm": "12 months",
        "processingFee": "1100.00",
        "applicationFee": "1000.00",
        "offerValidity": "15 days",
        "coolOffPeriod": "3 days",
        "termsAndConditionsLink": "https://example.com/tnc.pdf",
        "keyFactsStatementLink": "https://example.com/kfs.pdf",
        "pledgeRequirements": [
          {
            "rta": "KFIN",
            "amcCode": "ICICIPRU",
            "schemeCode": "44121",
            "folioID": "XTR98234",
            "unitsRequired": "75"
          }
        ],
        "offerSignals": {
          "offerType": "FINAL_OFFER",
          "fulfillmentJourneyType": "FULLY_DIGITAL_STP",
          "conversionChance": "VERY_HIGH"
        }
      }
    }
  },
  "error": null
}
```

**SDK Code**

```python Loan Against Mutual Funds credit-line hosted handoff
import requests

url = "https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted"

querystring = {"journeyID":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","isOfferAccepted":"true"}

headers = {
    "x-correlation-id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "Authorization": "Bearer <token>"
}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript Loan Against Mutual Funds credit-line hosted handoff
const url = 'https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true';
const options = {
  method: 'GET',
  headers: {
    'x-correlation-id': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
    Authorization: 'Bearer <token>'
  }
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Loan Against Mutual Funds credit-line hosted handoff
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-correlation-id", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Loan Against Mutual Funds credit-line hosted handoff
require 'uri'
require 'net/http'

url = URI("https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-correlation-id"] = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java Loan Against Mutual Funds credit-line hosted handoff
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true")
  .header("x-correlation-id", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Loan Against Mutual Funds credit-line hosted handoff
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'x-correlation-id' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
  ],
]);

echo $response->getBody();
```

```csharp Loan Against Mutual Funds credit-line hosted handoff
using RestSharp;

var client = new RestClient("https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true");
var request = new RestRequest(Method.GET);
request.AddHeader("x-correlation-id", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Loan Against Mutual Funds credit-line hosted handoff
import Foundation

let headers = [
  "x-correlation-id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Loan Against Mutual Funds term-loan hosted handoff

**Response**

```json
{
  "request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "correlation_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "timestamp": "1970-01-01T00:00:00.000Z",
  "data": {
    "hosted_url": "https://credit.aarthiklabs.com/lab/handoff?handoff=xxXxxX0x0x...#bt_test_xxx000",
    "expires_at": "1970-01-01T00:15:00.000Z",
    "target_offer_id": "xxxxxxxx-xxxx-xxxx-xxxx-yyyyyyyyyyyy",
    "target_journey_id": "journey_lamf_001",
    "journey": {
      "id": "journey_lamf_001",
      "endUse": "businessExpansion",
      "bureauConsent": true,
      "ondc_transaction_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "type": "LAMF_LOAN",
      "status": "OFFERED",
      "kyc_status": "PENDING",
      "kyc_attempts": 0,
      "emandate_status": "PENDING",
      "emandate_attempts": 0,
      "esign_status": "PENDING",
      "esign_attempts": 0,
      "lender": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "lender_name": "DSP Finance",
        "lender_gro_name": "ONDC",
        "lender_gro_email": "lifeline@ondc.com",
        "lender_gro_contact_number": "1860 266 7766",
        "lender_gro_designation": "Nodal Grievance Redressal Officer",
        "lender_gro_address": "One Indiabulls Centre, Mumbai",
        "lender_customer_support_link": "https://buy.ondc.org/buy/GrievanceRedStep.htm?execution=e1s1",
        "lender_customer_support_contact_number": "1800 1080",
        "lender_customer_support_email": "customer.care@ondc.com"
      },
      "offer": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-yyyyyyyyyyyy",
        "accepted": false,
        "expired": false,
        "productType": "LAMF",
        "facilitytype": "TERM_LOAN",
        "amountPrincipal": "400000.00",
        "installmentAmount": "88460.00",
        "repaymentFrequency": "MONTHLY",
        "repaymentType": "EQUATED_INSTALLMENT",
        "annualPercentageRate": "5.00",
        "interestRate": "12.00",
        "interestType": "FIXED",
        "offerTerm": "5 months",
        "processingFee": "1100.00",
        "applicationFee": "1000.00",
        "offerValidity": "15 days",
        "coolOffPeriod": "3 days",
        "termsAndConditionsLink": "https://example.com/tnc.pdf",
        "keyFactsStatementLink": "https://example.com/kfs.pdf",
        "pledgeRequirements": [
          {
            "rta": "KFIN",
            "amcCode": "ICICIPRU",
            "schemeCode": "44121",
            "folioID": "XTR98234",
            "unitsRequired": "75"
          }
        ],
        "offerSignals": {
          "offerType": "FINAL_OFFER",
          "fulfillmentJourneyType": "FULLY_DIGITAL_STP",
          "conversionChance": "VERY_HIGH"
        }
      }
    }
  },
  "error": null
}
```

**SDK Code**

```python Loan Against Mutual Funds term-loan hosted handoff
import requests

url = "https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted"

querystring = {"journeyID":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","isOfferAccepted":"true"}

headers = {
    "x-correlation-id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "Authorization": "Bearer <token>"
}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript Loan Against Mutual Funds term-loan hosted handoff
const url = 'https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true';
const options = {
  method: 'GET',
  headers: {
    'x-correlation-id': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
    Authorization: 'Bearer <token>'
  }
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Loan Against Mutual Funds term-loan hosted handoff
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-correlation-id", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Loan Against Mutual Funds term-loan hosted handoff
require 'uri'
require 'net/http'

url = URI("https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-correlation-id"] = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java Loan Against Mutual Funds term-loan hosted handoff
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true")
  .header("x-correlation-id", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Loan Against Mutual Funds term-loan hosted handoff
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'x-correlation-id' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
  ],
]);

echo $response->getBody();
```

```csharp Loan Against Mutual Funds term-loan hosted handoff
using RestSharp;

var client = new RestClient("https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true");
var request = new RestRequest(Method.GET);
request.AddHeader("x-correlation-id", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Loan Against Mutual Funds term-loan hosted handoff
import Foundation

let headers = [
  "x-correlation-id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://credit.aarthiklabs.com/api/v1/hybrid/loan-against-mutual-funds/borrowers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/journey/offers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hosted?journeyID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&isOfferAccepted=true")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```