Create a borrow position for an end user smart account
Creates a borrow position for a specific borrow product, by posting collateral from an end user smart account and borrowing a loan against it. One position can be opened per borrow product for a given smart account.
A borrow product is a protocol-native representation of a borrowable market, such as a Morpho Blue market that lends USDC against cbBTC. The borrowProductId identifies the product to borrow against, and the collateralAmount and loanAmount specify the collateral to post and the loan to take, both expressed as decimal strings in standard unit denomination of their respective tokens.
A user operation is broadcast to open the position onchain. Poll getUserOperationWithEndUserAccount with the returned userOpHash until it reaches a terminal state. Once the user operation succeeds onchain, use the borrow positions list endpoint to view the user’s active positions.
Authorizations
A JWT signed using the developer's own JWT private key (in the case of JWT authentication), or an end user JWT signed by CDP, encoded in base64. This is used for End User Account APIs.
Headers
A JWT signed using your Wallet Secret, encoded in base64. Refer to the Generate Wallet Token section of our Authentication docs for more details on how to generate your Wallet Token.
Path Parameters
The ID of the end user.
^[a-zA-Z0-9-]{1,100}$"e051beeb-7163-4527-a5b6-35e301529ff2"
The address of the EVM Smart Account to open the borrow position from.
^0x[0-9a-fA-F]{40}$Query Parameters
The ID of the CDP Project. Required for end users authenticated using custom auth (i.e. a non-CDP JWT provider).
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"8e03978e-40d5-43e8-bc93-6894a57f9324"
Body
A request to create a borrow position for an end user's smart account for the specified borrow product. The smart account posts collateral and borrows against it, broadcasting a user operation to open the position onchain.
The globally unique ID of the borrow product, which is a UUID prefixed with the string bp_.
^bp_[a-f0-9-]{36}$"bp_07fb56c0-9afe-5440-8ff2-5b0e115458df"
The amount of collateral to post, as a decimal string in standard unit denomination of the collateral token (i.e. "1" for 1 cbBTC).
^\+?(?:(?:0*[1-9]\d*)(?:\.\d*)?|0*\.\d*[1-9]\d*)$"1"
The amount of the loan token to borrow, as a decimal string in standard unit denomination of the loan token (i.e. "100" for 100 USDC).
^\+?(?:(?:0*[1-9]\d*)(?:\.\d*)?|0*\.\d*[1-9]\d*)$"100"
The ID of the Temporary Wallet Secret that was used to sign the X-Wallet-Auth header.
^[a-zA-Z0-9-]{1,100}$"e051beeb-7163-4527-a5b6-35e301529ff2"
Whether to use the CDP Paymaster for the user operation. When true, paymasterUrl must not be set.
false
Paymaster URL to use for the user operation. Must not be set when useCdpPaymaster is true.
If useCdpPaymaster is false and no paymasterUrl is set, the smart account must have sufficient funds to cover network fees.
11 - 2048^https?://.*$"https://api.developer.coinbase.com/rpc/v1/base/AbCdEf123456"
Optional paymaster metadata forwarded to the configured paymaster service. Valid only when a paymaster is configured via useCdpPaymaster: true or a paymasterUrl.
Response
Successfully created the borrow position and broadcast the user operation.
A smart account operation response.
The network the user operation is for.
base-sepolia, base, arbitrum, optimism, zora, polygon, bnb, avalanche, ethereum, ethereum-sepolia "base"
The hash of the user operation. This is not the transaction hash, as a transaction consists of multiple user operations. The user operation hash is the hash of this particular user operation which gets signed by the owner of the Smart Account.
^0x[0-9a-fA-F]{64}$"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
The list of calls in the user operation.
The status of the user operation.
pending, signed, broadcast, complete, dropped, failed "pending"
The hash of the transaction that included this particular user operation. This gets set after the user operation is broadcasted and the transaction is included in a block.
^0x[0-9a-fA-F]{64}$|^$"0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
The list of receipts associated with the user operation.
The timestamp at which the prepared user operation expires.
"2025-03-25T12:00:00Z"