---
title: "Create loan"
method: POST
path: "/markets/creditbook/create"
tags: ["creditbook"]
---

# Create loan

`POST /markets/creditbook/create`

Creates a new loan with initial collateral and requested principal borrows, returning both the loan address and the serialized transaction needed to initialize it.

## Headers

- `Idempotent-Key` string, nullable

## Request body

- TxnCreateLoanParams
  - `assetIndexGuidance` integer[] — Per-collateral oracle asset-index guidance (one byte per collateral slot).
  - `borrower` string, required
  - `depositCollateral` DepositCollateralInput[], required
    - `collateralAmount` integer, required
    - `collateralAssetData` union, required — Collateral asset identification, tagged by collateral kind (SPL token, staked SOL, or a CLMM LP position on Orca / Meteora / Raydium).
      - object
        - `Spl` SplData, required
          - `mint` string, required
      - object
        - `StakedSol` StakedSolData, required
          - `stakeAccount` string, required
          - `stakePool` string, required
      - object
        - `Orca` OrcaPositionData, required
          - `positionMint` string, required
          - `tokenProgram` string, nullable
          - `whirlpool` string, required
      - object
        - `Meteora` MeteoraDlmmPositionData, required
          - `lbPair` string, required
          - `positionAddress` string, required
          - `tokenProgram` string, nullable
      - object
        - `Raydium` RaydiumPositionData, required
          - `mint` string, required
          - `pool` string, required
          - `tokenProgram` string, nullable
    - `loanCreationParams` union — Optional collateral-specific loan-creation params (e.g. opening an Orca CLMM position as collateral); `Default` for a plain loan.
      - 'Default'
      - object
        - `OrcaPositionCreate` OrcaPositionCreateParams, required
          - `lowerTick` integer, required
          - `tickSpacing` integer, required
          - `tokenMintA` string, required
          - `tokenMintB` string, required
          - `upperTick` integer, required
          - `whirlpool` string, required
    - `weightMatrixUpdate` integer[]
  - `isLoop` boolean, nullable
  - `loanNonce` string, nullable
  - `principalRequested` BorrowPrincipalRequested[], required
    - `durationIndex` integer, required
    - `expectedLoanValues` ExpectedLoanValuesSchema, required — Expected loan economics the borrower signs off on, checked on-chain against the freshly-priced values to bound slippage.
      - `expectedApy` integer, required — Expected loan APY, in basis points of a hundredth (cbps).
      - `expectedLqt` integer[], required — Expected per-ledger liquidation threshold, one entry per ledger slot.
    - `ledgerIndex` integer, required
    - `principalAmount` integer, required
    - `principalMint` string, required
    - `strategy` string, required
  - `unstakeInstructions` UnstakeLpQueryParams
    - `amount` integer, required
    - `stakeAccount` string, nullable
    - `vault` string, required

## Response `200`

Serialized transaction and derived loan address.

- CreateLoanReturn
  - `loanAddress` string, required
  - `transaction` VersionedTransactionReturn, required — versioned txn return
    - `message` string, required — serialized message
    - `signatures` VersionedTransactionSignature[], required — serialized signatures
      - `publicKey` string, required — serialized message
      - `signature` string, required — serialized signatures

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `409` — Idempotency-Key reused with a different request body
- `500` — Internal server error

---

[API](https://skmtc.dev/loopscale/apis/loopscale-api.md) · [All operations](https://skmtc.dev/loopscale/apis/loopscale-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/loopscale/loopscale-api/revisions/531f64dbe09c/schema)
