openapi: 3.1.0 info: title: API Reference authentication redeem API version: 1.0.0 servers: - url: https://api-sandbox.coinflow.cash/api description: https://api-sandbox.coinflow.cash/api tags: - name: redeem paths: /redeem/evm/creditsAuthMsg: post: operationId: get-evm-credits-auth-msg summary: (EVM only) Get Credits Authorization Message description: 'Endpoint to generate an EIP-712 typed data message for authorizing credits usage on EVM chains. This endpoint is used to retrieve a "CreditsAuthorization" message that the user must sign using their wallet (e.g., MetaMask) via the eth_signTypedData_v4 method. The resulting signed message (permitCredits) is then supplied to the `/api/redeem/evm/sendGaslessTx` endpoint to execute a gasless redeem transaction. **Request Body:** - `merchantId` (string): The ID of the merchant requesting redemption. - `subtotal` (Subtotal): The transaction subtotal (either in USDC or a token-based subtotal). - `transactionData` (EvmTransactionData): Transaction details used for calculating gas fees and total credits required. **Response:** Returns an object with the following properties: - `message` (string): A JSON string representing the EIP-712 typed data. - `validBefore` (string): A timestamp or block number indicating until when the message is valid. - `nonce` (string): A unique value to prevent replay attacks. - `creditsRawAmount` (number): The raw credits amount calculated based on the transaction subtotal and estimated gas fees.' tags: - redeem parameters: - name: x-coinflow-auth-wallet in: header description: The web3 wallet of the end user - see https://docs.coinflow.cash/api-reference/api-reference/authentication/get-session-key required: true schema: type: string responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/GetCreditsAuthMessageResponse' '412': description: Wallet does not have enough credits to complete redeem request, this can happen when the network is slow. Please retry the request. content: application/json: schema: $ref: '#/components/schemas/ApiError' requestBody: description: Request body containing the parameters required for generating the credits authorization message. content: application/json: schema: $ref: '#/components/schemas/GetEvmCreditsAuthMsgBody' /redeem/evm/sendGaslessTx: post: operationId: send-evm-credits-gasless-tx summary: (EVM only) Send Redeem Transaction with Credits Authorization Message description: 'Endpoint to send a credits redeem transaction on EVM-based blockchains. This endpoint processes a gasless transaction for redeeming credits. It requires a signed permit message (contained in `signedMessages.permitCredits`) that was previously generated by the `/evm/creditsAuthMsg` endpoint. **How It Works:** - Validates that the provided signed permit (EIP-712 signature) is correct. - Constructs the transaction using provided details and sends it through the appropriate EVM network provider. **Request Body:** - `merchantId` (string): The ID of the merchant. - `subtotal` (Subtotal): The transaction subtotal. - `transactionData` (EvmTransactionData): Details of the transaction to be executed. - `signedMessages` (SignedMessages): Contains the signed permit message (permitCredits) for credit authorization. - `chargebackProtectionData?` (CartItemClassOmitted): Optional chargeback protection data. - `validBefore`, `nonce`, `creditsRawAmount`: Values returned by `/evm/creditsAuthMsg` for further verification. **Response:** Returns an object containing: - `hash` (string): The transaction hash of the submitted gasless transaction.' tags: - redeem parameters: - name: x-coinflow-auth-wallet in: header description: The web3 wallet of the end user - see https://docs.coinflow.cash/api-reference/api-reference/authentication/get-session-key required: true schema: type: string - name: x-device-id in: header description: Optional device identifier provided in the request header. required: false schema: type: string responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/Redeem_SendEvmCreditsGaslessTx_Response_200' '412': description: Wallet does not have enough credits to complete redeem request, this can happen when the network is slow. Please retry the request. content: application/json: schema: $ref: '#/components/schemas/ApiError' requestBody: description: Request body with all necessary parameters to execute the gasless redeem transaction. content: application/json: schema: $ref: '#/components/schemas/EvmRedeemBody' /redeem/merchant: post: operationId: get-merchant-wallet-redeem-transaction summary: Create Merchant Wallet Redemption Transaction description: Creates a transaction for the user to sign in order to redeem their Coinflow credits, with the resulting stablecoins being delivered to the merchant's settlement wallet. tags: - redeem parameters: - name: x-coinflow-auth-wallet in: header description: The web3 wallet of the end user - see https://docs.coinflow.cash/api-reference/api-reference/authentication/get-session-key required: true schema: type: string - name: x-device-id in: header required: false schema: type: string responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/RedeemResponse' '412': description: Wallet does not have enough credits to complete redeem request, this can happen when the network is slow. Please retry the request. content: application/json: schema: $ref: '#/components/schemas/ApiError' requestBody: content: application/json: schema: $ref: '#/components/schemas/MerchantWalletRedeemBody' /redeem: post: operationId: get-redeem-transaction summary: Create Redeem Transaction description: 'Creates a transaction for the user to sign in order to redeem their Coinflow credits with a merchant''s contract. The transaction passed to this endpoint should be the same as if the end user''s wallet was calling the merchant''s contract with enough USDC/Other Cryto Currency to successfully complete the transaction.' tags: - redeem parameters: - name: x-coinflow-auth-wallet in: header description: The web3 wallet of the end user - see https://docs.coinflow.cash/api-reference/api-reference/authentication/get-session-key required: true schema: type: string - name: x-device-id in: header required: false schema: type: string responses: '200': description: Ok content: application/json: schema: $ref: '#/components/schemas/RedeemResponse' '412': description: Wallet does not have enough credits to complete redeem request, this can happen when the network is slow. Please retry the request. content: application/json: schema: $ref: '#/components/schemas/ApiError' requestBody: content: application/json: schema: $ref: '#/components/schemas/RedeemBody' components: schemas: ReturnedTokenIdRedeemTransaction: type: object properties: data: type: string description: 'The data to call this contract with, HEX encoded. The coinflow contract calls the "to" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the "receiver" address defined in the contract function arguments.' to: type: string description: The merchant's whitelisted contract required: - data - to description: Transaction to be called. title: ReturnedTokenIdRedeemTransaction RedeemBodyNativeSolToConvertLamports: oneOf: - type: string - type: number format: double title: RedeemBodyNativeSolToConvertLamports NormalRedeemTransaction: type: object properties: data: type: string description: 'The data to call this contract with, HEX encoded. The coinflow contract calls the "to" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the "receiver" address defined in the contract function arguments.' to: type: string description: The merchant's whitelisted contract required: - data - to description: Transaction to be called. title: NormalRedeemTransaction SellerInfo: type: object properties: id: type: string description: Id of the seller email: type: - string - 'null' description: 'Email Example: lois.lane@dailyplanet.com' firstName: type: string description: 'First name Example: Lois' lastName: type: string description: 'Last name Example: Lois' dob: type: string description: 'Date of birth, formatted as YYYY-MM-DD. If only the year is known, use YYYY Pattern: ^\d{4}(-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]))?$' rawSellerData: $ref: '#/components/schemas/Record_string.any_' title: SellerInfo CustomerUsdcTransferDataV2: type: object properties: from: type: string to: type: string value: type: string validAfter: $ref: '#/components/schemas/CustomerUsdcTransferDataV2ValidAfter' validBefore: $ref: '#/components/schemas/CustomerUsdcTransferDataV2ValidBefore' nonce: type: string signature: type: string required: - from - to - value - validAfter - validBefore - nonce - signature description: 'V2 of CustomerUsdcTransferData — replaces the (v, r, s) triple with a single `signature` bytes string, matching USDC FiatTokenV2_2''s bytes-overload `transferWithAuthorization`. All other fields unchanged from V1.' title: CustomerUsdcTransferDataV2 DecentRedeem: type: object properties: waitForHash: type: boolean description: 'Whether the UI should wait for the transaction to be sent and the hash to be returned.' type: $ref: '#/components/schemas/DecentRedeemType' dstChainId: type: number format: double description: 'ID of the destination chain you will be using Find your chain ID here: https://chainlist.org/' dstToken: type: string description: Address on that chain of the token you will be receiving contractAddress: type: string description: The contract address which will be called on the destination chain contractData: type: string cost: $ref: '#/components/schemas/DecentRedeemCost' description: Amount of the token on the destination chain you will be receiving required: - type - dstChainId - dstToken - contractAddress - contractData - cost description: If your contract exists on a chain supported by Decent, pass this object in order to call it. title: DecentRedeem Currency: type: string enum: - USD - AED - AFN - ALL - AMD - ANG - AOA - ARS - AUD - AWG - AZN - BAM - BBD - BDT - BGN - BHD - BIF - BMD - BND - BOB - BRL - BSD - BTN - BWP - BYN - BZD - CAD - CHF - CLF - CLP - CNY - COP - CRC - CUP - CVE - CZK - DJF - DKK - DOP - DZD - EGP - ETB - EUR - FJD - GBP - GEL - GHS - GMD - GNF - GTQ - GYD - HKD - HNL - HTG - HUF - IDR - ILS - INR - IQD - IRR - ISK - JMD - JOD - JPY - KES - KGS - KHR - KMF - KRW - KWD - KYD - KZT - LAK - LBP - LKR - LRD - LSL - LYD - MAD - MDL - MGA - MKD - MMK - MNT - MOP - MRU - MUR - MWK - MVR - MXN - MYR - MZN - NAD - NGN - NIO - NOK - NPR - NZD - OMR - PAB - PEN - PGK - PHP - PKR - PLN - PYG - QAR - RON - RSD - RWF - SAR - SCR - SDG - SEK - SGD - SLE - SLL - SOS - SRD - STN - SVC - SYP - SZL - THB - TJS - TMT - TND - TOP - TRY - TTD - TWD - TZS - UAH - UGX - UYU - UZS - VND - VUV - WST - XAF - XCD - XOF - XPF - YER - ZAR - ZMW - ZWL - CDF - ERN - FKP - KPW - RUB - SBD - SHP - SSP - VES title: Currency EvmRedeemBody: type: object properties: merchantId: type: string description: The ID of the merchant requesting redemption. subtotal: $ref: '#/components/schemas/Subtotal' transactionData: $ref: '#/components/schemas/EvmTransactionData' usdcAmount: $ref: '#/components/schemas/Cents' signedMessages: $ref: '#/components/schemas/SignedMessages' chargebackProtectionData: $ref: '#/components/schemas/RedeemCartItems' validBefore: type: string description: Values returned from getEvmCreditsAuthMsg endpoint nonce: type: string creditsRawAmount: type: number format: double required: - merchantId - subtotal - transactionData - signedMessages - validBefore - nonce - creditsRawAmount description: EVM-specific Redeem body title: EvmRedeemBody ApiError: type: object properties: name: type: string message: type: string stack: type: string required: - name - message title: ApiError CustomerUsdcTransferDataValidBefore: oneOf: - type: string - type: number format: double title: CustomerUsdcTransferDataValidBefore TokenRedeem: type: object properties: waitForHash: type: boolean description: 'Whether the UI should wait for the transaction to be sent and the hash to be returned.' type: $ref: '#/components/schemas/TokenRedeemType' destination: type: string required: - type - destination title: TokenRedeem Redeem_SendEvmCreditsGaslessTx_Response_200: type: object properties: hash: type: string required: - hash title: Redeem_SendEvmCreditsGaslessTx_Response_200 SafeMintRedeemType: type: string enum: - safeMint title: SafeMintRedeemType ReturnedTokenIdRedeemType: type: string enum: - returned title: ReturnedTokenIdRedeemType PickNftCartItemExcludeKeyofnftCartItemSellingPriceOrItemClassListPrice: type: object properties: currency: type: string valueInCurrency: type: number format: double description: The item's list price title: PickNftCartItemExcludeKeyofnftCartItemSellingPriceOrItemClassListPrice GetCreditsAuthMessageResponse: type: object properties: message: type: string description: EIP-712 typed-data JSON string for the user to sign via eth_signTypedData_v validBefore: type: string description: Timestamp indicating signature validity period nonce: type: string description: Unique identifier for the transaction creditsRawAmount: type: number format: double description: Total amount of credits that will be used including gas fees required: - message - validBefore - nonce - creditsRawAmount description: For retrieving the typed-data (EIP-712) that a user must sign to authorize credits usage. title: GetCreditsAuthMessageResponse productType: type: string enum: - inGameProduct - gameOfSkill - dataStorage - computingResources - sportsTicket - eSportsTicket - musicTicket - conferenceTicket - virtualSportsTicket - virtualESportsTicket - virtualMusicTicket - virtualConferenceTicket - alcohol - DLC - subscription - fundACause - realEstate - computingContract - digitalArt - topUp - ownershipContract - inGameCurrency - digitalCollectibles - digitalCollectiblesMarketplace - digitalGiftingMarketplace - sweepstakes - virtualSportsEvents - contractInvoicing - onlineCasino - cryptoOnramp - gaming - travelDocuments - musicStreaming - digitalContent - eBooks - digitalSubscriptionContent title: productType CustomerUsdcTransferData: type: object properties: from: type: string to: type: string value: type: string validAfter: $ref: '#/components/schemas/CustomerUsdcTransferDataValidAfter' validBefore: $ref: '#/components/schemas/CustomerUsdcTransferDataValidBefore' nonce: type: string v: type: number format: double r: type: string s: type: string required: - from - to - value - validAfter - validBefore - nonce - v - r - s description: 'Customer signed USDC transferWithAuthorization data for dual-source payments Used for combined USDC + Credit Card payments on EVM chains' title: CustomerUsdcTransferData RedeemBodyNativeSolToConvert: type: object properties: lamports: $ref: '#/components/schemas/RedeemBodyNativeSolToConvertLamports' required: - lamports description: '(Solana Only) Only use this if your subtotal.token is `So11111111111111111111111111111111111111112` and your contract requires native SOL. This will convert the amount of wSOL to native SOL for use in the transaction.' title: RedeemBodyNativeSolToConvert TransactionHistoryItem: type: object properties: txType: type: string chain: type: string paymentAmount: type: string paymentToken: type: string to: type: string from: type: string registryContract: type: string assetID: type: string txTime: type: string blockNumber: type: number format: double txHash: type: string required: - txType - chain - paymentAmount - paymentToken - to - from - registryContract - assetID - txTime - blockNumber - txHash title: TransactionHistoryItem CustomerUsdcTransferDataValidAfter: oneOf: - type: string - type: number format: double title: CustomerUsdcTransferDataValidAfter TokenSubtotalAmount: oneOf: - type: number format: double - type: string description: Number of tokens title: TokenSubtotalAmount Subtotal: oneOf: - $ref: '#/components/schemas/CurrencyCents' - $ref: '#/components/schemas/Cents' - $ref: '#/components/schemas/TokenSubtotal' title: Subtotal Cents: type: object properties: cents: type: integer required: - cents title: Cents TokenSubtotal: type: object properties: address: type: string description: 'The tokens address Solana - Token Mint Address Evm - Token Contract Address' amount: $ref: '#/components/schemas/TokenSubtotalAmount' description: Number of tokens decimals: type: number format: double description: Number of decimals for the token required: - address - amount title: TokenSubtotal CustomerUsdcTransferDataV2ValidAfter: oneOf: - type: string - type: number format: double title: CustomerUsdcTransferDataV2ValidAfter ReturnedTokenIdRedeem: type: object properties: waitForHash: type: boolean description: 'Whether the UI should wait for the transaction to be sent and the hash to be returned.' transaction: $ref: '#/components/schemas/ReturnedTokenIdRedeemTransaction' description: Transaction to be called. type: $ref: '#/components/schemas/ReturnedTokenIdRedeemType' nftContract: type: string required: - transaction - type description: '(EVM only) If your contract returns the NFT ID, then utilize this object. The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the returned NFT ID, and fwd''s the NFT to the end user''s wallet.' title: ReturnedTokenIdRedeem Pick_nftCartItem.Exclude_keyofnftCartItem.sellingPrice-or-itemClass__: type: object properties: productName: type: string description: The name of the related product productType: $ref: '#/components/schemas/productType' listPrice: $ref: '#/components/schemas/PickNftCartItemExcludeKeyofnftCartItemSellingPriceOrItemClassListPrice' description: The item's list price quantity: type: number format: double description: The number of units sold rawProductData: $ref: '#/components/schemas/AnyObject' seller: $ref: '#/components/schemas/SellerInfo' transactionHistory: type: array items: $ref: '#/components/schemas/TransactionHistoryItem' required: - productName - productType - quantity description: From T, pick a set of properties whose keys are in the union K title: Pick_nftCartItem.Exclude_keyofnftCartItem.sellingPrice-or-itemClass__ TokenRedeemType: type: string enum: - token title: TokenRedeemType SafeMintRedeemTransaction: type: object properties: data: type: string description: 'The data to call this contract with, HEX encoded. The coinflow contract calls the "to" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the "receiver" address defined in the contract function arguments.' to: type: string description: The merchant's whitelisted contract required: - data - to description: Transaction to be called. title: SafeMintRedeemTransaction DecentRedeemCost: type: object properties: isNative: type: boolean description: 'Whether or not the token is the native token for the chain (ex: Ethereum - ETH, Polygon - POL). If native dstToken should be the 0 address (0x00...)' amount: type: string description: 'This is the raw amount of the token ex: 50000000000000n' required: - isNative - amount description: Amount of the token on the destination chain you will be receiving title: DecentRedeemCost KnownTokenIdRedeem: type: object properties: waitForHash: type: boolean description: 'Whether the UI should wait for the transaction to be sent and the hash to be returned.' transaction: $ref: '#/components/schemas/KnownTokenIdRedeemTransaction' description: Transaction to be called. nftContract: type: string description: The address of the Nft's Contract nftId: type: string description: The ID of the NFT being purchased. Will be forwarded by the Coinflow contract to the customer's wallet. required: - transaction - nftContract - nftId description: '(EVM only) If your know the ID of the NFT being purchased, then utilize this object. The contract transfers the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract fwd''s the NFT to the end user''s wallet.' title: KnownTokenIdRedeem GetEvmCreditsAuthMsgBody: type: object properties: merchantId: type: string description: The ID of the merchant requesting redemption. subtotal: $ref: '#/components/schemas/Subtotal' transactionData: $ref: '#/components/schemas/EvmTransactionData' usdcAmount: $ref: '#/components/schemas/Cents' required: - merchantId - subtotal - transactionData title: GetEvmCreditsAuthMsgBody SignedMessages: type: object properties: permitCredits: type: string description: (Evm only) This is the signed permit messages that the user must sign granting the Merchant Contract access to their balances. customerUsdcAuthData: $ref: '#/components/schemas/CustomerUsdcTransferData' customerUsdcAuthDataV2: $ref: '#/components/schemas/CustomerUsdcTransferDataV2' required: - permitCredits title: SignedMessages CustomerUsdcTransferDataV2ValidBefore: oneOf: - type: string - type: number format: double title: CustomerUsdcTransferDataV2ValidBefore MerchantWalletRedeemBody: type: object properties: merchantId: type: string chargebackProtectionData: $ref: '#/components/schemas/RedeemCartItems' webhookInfo: $ref: '#/components/schemas/AnyObject' feePercentage: type: number format: double description: 'If this purchase is for a seller/submerchant where the marketplace takes a fee, this is the % fee which is taken from the subtotal amount.' fixedFee: $ref: '#/components/schemas/Cents' jwtToken: type: string description: 'This is a token encoding the parameters for the request. Allows purchase parameters to be verified to prevent manipulation when the checkout page is presented to the user.' redeemAmount: $ref: '#/components/schemas/Cents' subtotal: $ref: '#/components/schemas/Cents' required: - merchantId - subtotal description: From T, pick a set of properties whose keys are in the union K title: MerchantWalletRedeemBody RedeemBody: type: object properties: merchantId: type: string subtotal: $ref: '#/components/schemas/Subtotal' transaction: type: string description: 'Transaction for which the purchase will be redeemed. This should be constructed by the merchant, and should be setup the same way as if the user has USDC/Purchase Token in their wallet. The endpoint will modify this transaction and then send it back to the user to sign and send. Solana - base 58 encoded transaction, create using: `base58.encode(transaction.serialize({ requireAllSignatures: false, verifySignatures: false }))` Evm - Base 64 encoded stringified transaction, create using: `Buffer.from(JSON.stringify(transaction)).toString(''base64'')`' signedMessages: $ref: '#/components/schemas/SignedMessages' chargebackProtectionData: $ref: '#/components/schemas/RedeemCartItems' rent: $ref: '#/components/schemas/RedeemBodyRent' description: (Solana Only) if your transaction requires a known amount of Rent to be paid, you can pass it here. nativeSolToConvert: $ref: '#/components/schemas/RedeemBodyNativeSolToConvert' description: '(Solana Only) Only use this if your subtotal.token is `So11111111111111111111111111111111111111112` and your contract requires native SOL. This will convert the amount of wSOL to native SOL for use in the transaction.' skipBalanceCheck: type: boolean required: - merchantId - subtotal - transaction title: RedeemBody EvmTransactionData: oneOf: - $ref: '#/components/schemas/SafeMintRedeem' - $ref: '#/components/schemas/ReturnedTokenIdRedeem' - $ref: '#/components/schemas/KnownTokenIdRedeem' - $ref: '#/components/schemas/NormalRedeem' - $ref: '#/components/schemas/TokenRedeem' - $ref: '#/components/schemas/DecentRedeem' description: '(EVM only) if you want to execute an EVM transaction on a successful purchase, you can pass a transaction request here. Gas fees for the transaction will be automatically calculated and added to the total charged to the customer. Optionally the merchant can opt to pay for these gas fees.' title: EvmTransactionData CurrencyCents: type: object properties: cents: type: integer currency: $ref: '#/components/schemas/Currency' required: - cents - currency title: CurrencyCents Record_string.any_: type: object properties: {} description: Construct a type with a set of properties K of type T title: Record_string.any_ KnownTokenIdRedeemTransaction: type: object properties: data: type: string description: 'The data to call this contract with, HEX encoded. The coinflow contract calls the "to" contract, contract pulls USDC from msg.sender, and transfers the NFT/item to the "receiver" address defined in the contract function arguments.' to: type: string description: The merchant's whitelisted contract required: - data - to description: Transaction to be called. title: KnownTokenIdRedeemTransaction RedeemResponse: type: object properties: transaction: type: string description: 'Transaction for the users wallet to sign and send. Solana - base 58 encoded transaction, recover using: `Transaction.from(base58.decode(transaction))` Near - Base 64 encoded stringified transaction, recover using: `JSON.parse(Buffer.from(transaction, ''base64'').toString());` Evm - Base 64 encoded stringified transaction, recover using: `JSON.parse(Buffer.from(transaction, ''base64'').toString());`' required: - transaction title: RedeemResponse RedeemBodyRentLamports: oneOf: - type: string - type: number format: double title: RedeemBodyRentLamports SafeMintRedeem: type: object properties: waitForHash: type: boolean description: 'Whether the UI should wait for the transaction to be sent and the hash to be returned.' transaction: $ref: '#/components/schemas/SafeMintRedeemTransaction' description: Transaction to be called. type: $ref: '#/components/schemas/SafeMintRedeemType' nftContract: type: string required: - transaction - type description: '(EVM only) If your contract mints an NFT via a OpenZeppelin Safe Mint Call, then utilize this object. The contract mints the NFT to msg.sender (which is the Coinflow contract), the Coinflow contract picks up the SafeMint event, and fwd''s the NFT to the end user''s wallet.' title: SafeMintRedeem RedeemCartItems: type: array items: $ref: '#/components/schemas/Pick_nftCartItem.Exclude_keyofnftCartItem.sellingPrice-or-itemClass__' title: RedeemCartItems NormalRedeem: type: object properties: waitForHash: type: boolean description: 'Whether the UI should wait for the transaction to be sent and the hash to be returned.' transaction: $ref: '#/components/schemas/NormalRedeemTransaction' description: Transaction to be called. required: - transaction description: '(EVM only) If your contract sends the item/service being purchased via a custom "receiver" field, then utilize this object. The coinflow contract calls the "to" contract, which transfers the NFT/item to the "receiver" address defined in the contract function arguments.' title: NormalRedeem DecentRedeemType: type: string enum: - decent title: DecentRedeemType AnyObject: type: object properties: example: type: string title: AnyObject RedeemBodyRent: type: object properties: lamports: $ref: '#/components/schemas/RedeemBodyRentLamports' required: - lamports description: (Solana Only) if your transaction requires a known amount of Rent to be paid, you can pass it here. title: RedeemBodyRent securitySchemes: wallet: type: apiKey in: header name: x-coinflow-auth-wallet description: The web3 wallet of the end user - see https://docs.coinflow.cash/api-reference/api-reference/authentication/get-session-key blockchain: type: apiKey in: header name: x-coinflow-auth-blockchain description: The blockchain associated with the end user - see https://docs.coinflow.cash/api-reference/api-reference/authentication/get-session-key userId: type: apiKey in: header name: x-coinflow-auth-user-id description: The external identifier of the end user - see https://docs.coinflow.cash/api-reference/api-reference/authentication/get-session-key merchant: type: apiKey in: header name: Authorization description: The API key of the merchant - see https://docs.coinflow.cash/api-reference/api-reference/authentication/get-session-key signedMessage: type: apiKey in: header name: x-coinflow-auth-signed-message description: The message signed by the users wallet merchantId: type: apiKey in: header name: x-coinflow-auth-merchant-id description: The merchant ID the session should be generated for sessionKey: type: apiKey in: header name: x-coinflow-auth-session-key description: The session key generated for the end user - see https://docs.coinflow.cash/api-reference/api-reference/authentication/get-session-key admin: type: apiKey in: header name: Authorization