Only this pageAll pages
Powered by GitBook
1 of 35

Pareto

Loading...

Product

Loading...

Loading...

Users

Loading...

Loading...

Guides

Loading...

Loading...

Loading...

Loading...

Loading...

Developers

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Resources

Loading...

Tranching

Credit Vaults can optionally activate a tranching mechanism to allow users to tailor their lending experience to various risk appetites.

Senior class

This class offers intrinsic protection on funds, given by Junior deposits. Senior Tranche LPs intrinsically have a first lien on the underlying assets, i.e., they are first in line to be repaid in case of default (hack or loss of funds).

Junior class

This class offers a greater yield by dragging more exposure to the underlying yield. Junior Tranche LPs have a second lien or no lien at all in case of default (hack or loss of funds).

The Junior class is designed to receive a higher share of yield compared to the Senior one, to proportionally compensate for the higher risk taken.

Yield split

The Tranching feature relies on a unique mechanism that manages the return distribution dynamically conditional to the liquidity deposited on each side (Senior, Junior) of the Credit Vault.

  • Senior class receives most of the underlying yield when liquidity is low on the Junior side (low coverage), or receives a guaranteed minimum portion of the underlying yield when Junior liquidity is high (high coverage)

  • Junior class receives outperforming APYs, no matter the Senior class liquidity

Yield and loss scenarios

Let's assume to have a Credit Vault generating a 10% yield (base APY), where users deposit 10,000,000 DAI split as follows: 70% on the Senior class, and 30% on the Junior class.

Standard case

Between 50 and 99% of the total vault's liquidity lying on the Senior side

Side
Liquidity
Expected APY

Senior

8,000,000 DAI

8%

Junior

2,000,000 DAI

18%

The Senior Yield share is equal to 80%. Senior funds coverage is 25% and the Junior overperformance vs base APY is 1.8x. The Tranche coverage is 20%.

Hedge case #1

Majority of the total vault's liquidity lies on the Senior side (≥99%). See the Formulae section.

Side
Liquidity
Expected APY

Senior

9,999,900 DAI

10%

Junior

100 DAI

20%

The Senior Yield share is set to 99% (HC#1). Senior funds coverage is 0% and the Junior overperformance vs base APY is 1.99x. The Tranche coverage is 0% as well.

Hedge case #2

Less than half of the total vault's liquidity lies on the Senior side (≤50%). See the Formulae section.

Side
Liquidity
Expected APY

Senior

4,000,000 DAI

5%

Junior

6,000,000 DAI

13%

The Senior Yield share is set to 50% (HC#2). Senior funds coverage is 150% and the Junior overperformance vs base APY is 1.33x. The Tranche coverage is 60%.

Formulae

Liquidity ratios

First, we define the Senior and Junior TVL ratios as

TVL ratioSr=LiquiditySeniorLiquiditySenior+Junior\text{TVL ratio}_{Sr} = \frac{\text{Liquidity}_{Senior}}{\text{Liquidity}_{Senior + Junior}}TVL ratioSr​=LiquiditySenior+Junior​LiquiditySenior​​

TVL ratioJr=LiquidityJuniorLiquiditySenior+Junior\text{TVL ratio}_{Jr} = \frac{\text{Liquidity}_{Junior}}{\text{Liquidity}_{Senior + Junior}}TVL ratioJr​=LiquiditySenior+Junior​LiquidityJunior​​

Senior and Junior yields

The Senior return can be calculated as

\text{APY}_{Sr} = \text{Base APY} \times \text{Yield share}_{Sr} \qquad \tag{1}

where the Base APY is the underlying Tranches yield and the Yield share of the Senior side is a piecewise function conditional to the liquidity on the Senior tranche.

Yield shareSr={99%if TVL ratioSr≥99%LiquiditySeniorLiquiditySenior+Juniorif TVL ratioSr>50%50%if TVL ratioSr≤50%\text{Yield share}_{Sr} = \begin{dcases} 99\% & \text{if } \text{TVL ratio}_{Sr} \geq 99\% \\ \\ \dfrac{\text{Liquidity}_{Senior}}{\text{Liquidity}_{Senior + Junior}} & \text{if } \text{TVL ratio}_{Sr} > 50\% \\ \\ 50\% & \text{if } \text{TVL ratio}_{Sr} \leq 50\% \\ \end{dcases}Yield shareSr​=⎩⎨⎧​99%LiquiditySenior+Junior​LiquiditySenior​​50%​if TVL ratioSr​≥99%if TVL ratioSr​>50%if TVL ratioSr​≤50%​

The Junior return can be calculated as

\text{APY}_{Jr} = \frac{(\text{Base APY} - \text{APY}_{Sr}) \times \text{TVL ratio}_{Sr}}{\text{TVL ratio}_{Jr}} + \text{Base APY} \qquad \tag{2}

When Senior liquidity represents 50-99% of the funds in the Tranche, we use Equation (1) to compute the Yield share of the Senior side.

Alternatively, we use some fixed percentages. There are two hedge cases:

  1. The majority of the vault's liquidity lying on the Senior side (more than 99%)

  2. Less than half of the vault's liquidity lying on the Senior side (less than 50%)

Yield shareSr={99%if LiquiditySeniorLiquiditySenior+Junior≥99%50%if LiquiditySeniorLiquiditySenior+Junior≤50%\text{Yield share}_{Sr} = \begin{dcases} 99\% & \text{if } \dfrac{\text{Liquidity}_{Senior}}{\text{Liquidity}_{Senior + Junior}} \geq 99\% \\ \\ 50\% & \text{if } \dfrac{\text{Liquidity}_{Senior}}{\text{Liquidity}_{Senior + Junior}} \leq 50\% \\ \end{dcases}Yield shareSr​=⎩⎨⎧​99%50%​if LiquiditySenior+Junior​LiquiditySenior​​≥99%if LiquiditySenior+Junior​LiquiditySenior​​≤50%​

In the first case, we set the Yield share of the Senior class equal to 99% while in the second case, we set it equal to 50%. These two hedge cases link to the principle that

  • Senior class receives most of the underlying yield when liquidity is low on the Junior side (low coverage), or receives a guaranteed minimum portion of the underlying yield when Junior liquidity is high (high coverage)

  • Junior class receives outperforming APYs, no matter the Senior class liquidity

The guaranteed minimum portion, aka the Yield share of the Senior Tranches, has been set to half the Base APY (see HC#2) when the Senior liquidity is smaller than the Junior one.

Senior coverage and Junior overperformance

The formulas of the Senior coverage provided by the Junior counterparty and the Junior boosted yield vs the underlying return are

CoverageSr=LiquidityJuniorLiquiditySenior\text{Coverage}_{Sr} = \frac{\text{Liquidity}_{Junior}}{\text{Liquidity}_{Senior}}CoverageSr​=LiquiditySenior​LiquidityJunior​​

OverperformanceJr=APYJrBase APY\text{Overperformance}_{Jr} = \frac{\text{APY}_{Jr}}{\text{Base APY}}OverperformanceJr​=Base APYAPYJr​​

The Senior coverage should not be confused with the overall Tranche coverage that is computed in proportion to the whole tranche TVL

Tranche coverage=LiquidityJuniorLiquidityTranche\text{Tranche coverage} = \frac{\text{Liquidity}_{Junior}}{\text{Liquidity}_{Tranche}}Tranche coverage=LiquidityTranche​LiquidityJunior​​

Overview

Welcome to Pareto’s official documentation! Pareto is a private credit marketplace that connects institutional lenders and borrowers, offering scalable yield opportunities and bridging institutional capital with on-chain credit markets. Designed for asset managers, digital asset funds, and institutional investors, our comprehensive infrastructure provides seamless access to regulatory-compliant alternative credit solutions. Built on transparency, scalability, and automation, Pareto’s Credit Vaults eliminate bureaucratic friction, reduce operational costs, and enhance capital efficiency.

Whether you're a liquidity provider, borrower, curator, or integrator, here you will find everything you need to understand how to securely and efficiently interact with the protocol and its components.

Credit Vaults

Credit Vaults (CVs) are a suite of smart contracts built to simplify on-chain lending and credit position management for borrowers and lenders. They provide the infrastructure for real-world financing, making it more transparent and efficient.

Features

Credit Vaults introduce several innovations to address inefficiencies in traditional DeFi lending and offer a customized experience for borrowers, curators, and lenders:

  • Diverse IRM: CVs support both fixed and variable interest rate models. Variable rates are usually benchmarked to third-party data sources, making vault performance easy to monitor.

  • Flexible lending cycles: Funds are locked for short periods (typically 1 to 4 weeks), called lending cycles, allowing high capital utilization and predictable fund management.

  • Regulation compliance: Native support for privacy-preserving verification and KYC ensures compatibility with regulatory requirements.

Flow of funds

Credit Vaults operate on a cycle-based system. Funds are borrowed in fixed time intervals known as lending cycles. The IRM and the duration of the first cycle are defined at vault deployment. Thereafter, at the end of each cycle, the curator can update these parameters.

  1. Before the first cycle starts, whitelisted lenders deposit funds.

  2. The curator triggers the start of the cycle.

  3. The borrower receives the funds directly in their wallet.

  4. Interest accrues for lenders throughout the cycle.

The process repeats, with updated terms, if applicable, for all the following cycles.

Redeems

While deposits happen in a single step, withdrawals are a two-step process:

1

Withdraw request

A user requests to redeem funds (principal and/or accrued interest) at the end of Cycle I.

2

Funds claim

At the end of Cycle II, the borrower repays interest and any requested withdrawals. Users who requested to exit can now claim their funds.

Early exit

When the interest rate of the next lending cycle is lower than the previous one by 1% or more (or otherwise provided in the Credit Agreement), lenders are entitled to an early exit and can redeem funds with a shorter waiting period, i.e., within 72 hours.

For example, a lender requests a withdrawal on Jan 31 during Cycle I, where the interest rate is 15%. If the Cycle II rate drops to 12%, the lender qualifies for an early exit and can claim his funds 72 hours after Cycle II starts (i.e., on Feb 3).

Architecture

The diagram illustrates the architecture of Credit Vaults

The curator, with the express consent of lenders and the borrower, retains the authority to modify, amend, or adjust CV's parameters as necessary to accommodate requests from lenders or the borrower, or to ensure alignment with the terms and conditions outlined in the MLA.

Assets deposited into a Credit Vault are sent directly to borrower wallets. Only whitelisted borrowers can access loans, and only registered users who complete verification through can provide liquidity.

Keyring

Borrowers

Borrowers are essential to offer yield strategies to liquidity providers on Pareto. They can leverage proprietary expertise to collect new funds from DeFi users while providing yield strategies that are traditionally limited to TradFi institutions.

Key responsibilities

  • At the start of each cycle (also referred to as "loan cycle" or "loan period" in the Credit Agreement), the borrower automatically receives funds deposited into the CV.

  • The borrower’s wallet address is fixed and cannot be modified after smart contract deployment.

  • Prior to the end of each cycle, the borrower must ensure to have approved (i.e., set allowance) the CV main contract to automatically settle interest payouts and withdrawal requests.

  • The borrower’s wallet must maintain sufficient funds to cover interest and standard withdrawal requests at the end of the cycle and repricing withdrawals once a new lending cycle begins.

Curator app

From the manager app, borrowers can easily see the status of the current lending cycle, a countdown to the epoch end, and the wallet allowance and balance.

The Pareto manager app is a specialized front-end interface designed for configuring and managing Credit Vaults. Available at , this tool provides real-time visibility into fund inflows and outflows. Only whitelisted addresses can interact with the manager app.

Implementation note: Some actions are not yet implemented in the manager app. For this reason, curators should interact directly with through verified sources such as or . Always verify contract addresses before interaction.

manager.pareto.credit
vault contracts
Etherscan
Blockscout

Verification

Keyring offers streamlined and flexible solutions

  1. Through Keyring Connect, it is possible to seamlessly inherit compliance verification from third-party platforms such as Coinbase, Binance, Kraken, and other centralized exchanges. This process includes credentials and information, including entity jurisdiction, source of capital, source of wealth, source of funds, directors, UBOs, significant controllers, and letters of authorization.

  2. Alternatively, if required by the Borrower for more comprehensive verification needs, Keyring Pro lets borrowers establish bespoken KYC/KYB policies, requesting more detailed information and document uploads from lenders. A live register of verified lenders is maintained within Credit Vaults.

The verification and KYC compliance on Credit Vaults is processed through .

Keyring

Addresses

Onboarding

This guide outlines the steps required to complete the onboarding for liquidity providers on Pareto. The process consists of two main phases: verification and contract signature.

To begin:

  • Select a Credit Vault (e.g., the Fasanara pool)

  • Connect a supported wallet

1

Verification

By default, Credit Vaults offer a zero-knowledge (ZK) verification method powered by Keyring Connect. In select cases, a standard KYC process with document uploads should be followed instead.

Keyring Connect integrates existing KYC credentials from centralized exchanges such as Binance, Kraken, and Coinbase. This enables seamless verification while preserving privacy and minimizing data exposure.

  • Install the Keyring Chrome extension

  • Launch the verification process

  • Create or log in to a Keyring account. Verify the account

  • Select a centralized exchange (CEX) within the extension to link credentials

  • Authenticate and complete the verification process

  • Generate credentials. A blockchain transaction will be triggered to cover attestation fees

  • Refresh the app page

Note: Verified credentials aren't shared across all vaults on Pareto. New credentials must be generated for each vault the user interacts with. Keyring may request periodic re-authentication, similar to session revalidation flows (e.g., Google OAuth).

2

Contract signature

Before depositing, users are required to sign two agreements:

  1. Terms and Conditions (T&C) that govern interaction with Pareto

  2. Master Loan Agreement (MLA) that governs the lending relationship between the liquidity provider and the borrower (e.g., Fasanara Digital)

These contracts are signed on-chain, linking a unique ID to the user’s address via e-signature. The contract signature requires the execution of a transaction from the verified wallet. Users will be prompted to sign an on-chain message to complete this step.

Visit

app.pareto.credit

Deposit

Users can deposit during the cycle buffer period, i.e., the 6 to 24 hours between the end of the previous lending cycle and the start of the new one. Alternatively, users can use the Queue contract to schedule their deposit while a cycle is running.

During a buffer period

Users should sign two transactions:

1

Spending approval

To allow Pareto’s smart contract to process users’ deposits

2

Deposit

To execute the lending action

Upon completion:

  • The user’s wallet will reflect a reduction in the deposited stablecoin

While a lending cycle is running

Alternatively, users can use the Queue contract to schedule their deposit while a cycle is running. Users will queue a deposit request, which will be processed by the pool curator at the first available buffer period.

The same Spending Approval and deposit flow applies

1

Spending approval

To allow Pareto’s smart contract to process users’ deposits

2

Request deposit

To execute the deposit request action

3

Claim LP tokens

The user will need to claim Credit Vault LP tokens representing his position in the pool after the new lending cycle starts

Upon completion of steps 1, and 2:

  • The user’s wallet will reflect a reduction in the deposited stablecoin

Curators

Curators are an integral part of the Credit Vault setup and are essential for stakeholder relations and vault activities. They can leverage underwriting on-chain expertise to enhance capital efficiency, mitigate counterparty risk, and elevate market transparency with institutional-grade credit structuring.

New curators should begin with this overview to build a solid foundation, while experienced curators may reference specific sections for targeted guidance.

Key responsibilities

  • The curator is responsible for opening and closing lending cycles. At the start of a cycle, funds are transferred from the CV to the borrower's wallet. At the end of the cycle, the curator closes the cycle and automatically retrieves interest and processes any withdrawal requests.

  • The curator manages the execution of pending deposit and withdrawal requests in the queue contracts.

  • If needed, the curator can adjust vault parameters such as APR, fees, and lending cycle length.

Curator app

From the manager app, curators can easily see the status of the current lending cycle, a countdown to the epoch end, and the borrower's wallet allowance and balance. When a lending cycle ends, they can close it and adjust the length and APR for the following cycle.

Once is completed, users can proceed to deposit into the selected Credit Vault.

The user will receive representing his position in the pool

The user will need to claim his representing his position in the pool after the new lending cycle starts

The Pareto manager app is a specialized front-end interface designed for configuring and managing Credit Vaults. Available at , this tool provides real-time visibility into fund inflows and outflows. Only whitelisted addresses can interact with the manager app.

Implementation note: Some actions are not yet implemented in the manager app. For this reason, curators should interact directly with through verified sources such as or . Always verify contract addresses before interaction.

onboarding
Credit Vault LP tokens
Credit Vault LP tokens
manager.pareto.credit
vault contracts
Etherscan
Blockscout

Redeem

Users can withdraw during the cycle buffer period, i.e., the 6 to 24 hours between the end of the previous lending cycle and the start of the new one. Alternatively, users can use the Queue contract to schedule their withdrawal while a cycle is running. The exit request will be processed by the pool curator at the first available buffer period.

While deposits happen in a single step, withdrawals are a two-step process happening during two different cycles:

1

Spending approval

To allow Pareto’s smart contract to process users’ LP tokens exit request

2

Withdrawal request

A user requests to redeem funds (principal and/or accrued interest) at the end of Cycle I.

3

Funds claim

At the end of the following cycle (Cycle II), the borrower repays interest and any requested withdrawals. Users who requested to exit can now claim their funds.

Upon completion of steps 1, and 2

  • The user will need to claim his stablecoins representing his initial deposit, plus any interest generated after the new lending cycle starts

Early exit

When the interest rate of the next lending cycle is lower than the previous one by 1% or more (or otherwise provided in the Credit Agreement), lenders are entitled to an early exit and can redeem funds with a shorter waiting period, i.e., within 72 hours.

For example, a lender requests a withdrawal on Jan 31 during Cycle I, where the interest rate is 15%. If the Cycle II rate drops to 12%, the lender qualifies for an early exit and can claim his funds 72 hours after Cycle II starts (i.e., on Feb 3).

Similarly, users can use the Queue contract to schedule their redemptions while a cycle is running. Users will queue a withdrawal request, which will be processed by the pool curator at the first available buffer period.

The user’s wallet will reflect a reduction in the representing his position in the pool

Credit Vault LP tokens

Governance

Ethereum

Optimism

Arbitrum

Polygon

Description
Address

Timelock

Treasury multisig

Developers multisig

Pauser multisig

Description
Address

Timelock

Treasury multisig

Description
Address

Timelock

Treasury multisig

Description
Address

Timelock

Treasury multisig

0xDa86e15d0Cda3A05Db930b248d7a2f775e575A44
0xFb3bD022D5DAcF95eE28a6B07825D4Ff9C5b3814
0xe8eA8bAE250028a8709A3841E0Ae1a44820d677b
0xBaeCba470C229984b75BC860EFe8e97AE082Bb9f
0xa3a3741c48298e21EEbE5A59bEAF6f89DC0E0c4c
0xFDbB4d606C199F091143BD604C85c191a526fbd0
0xB988641E8D493B5BfF65e63819975b6B33477057
0xF40d482D7fc94C30b256Dc7E722033bae68EcF90
0x45f4fb4D0CCC439bB7B85Ba63064958ab7e31EE4
0x61A944Ca131Ab78B23c8449e0A2eF935981D5cF6

Integrators

This guide describes how to integrate Credit Vaults into Web3 applications using both the Pareto REST API and smart contracts. It is intended for technical audiences familiar with Web3 and frontend frameworks.

Smart contract instantiation

To interact with on-chain vaults, tokens, and queue contracts, a Web3 contract instance must be created using the ABI and contract address:

const contract = new web3.eth.Contract(abi, address);

API access

1. Required vault data

These steps outline the minimum data required to render a vault and enable interactions.

1

Use either:

  • GET /v1/vaults/{_id} — by ID

  • GET /v1/vaults?address=0x... — by address

Only vaults with visibility: PUBLIC should be displayed to users.

2

Retrieve Signatures

Each vault contains a signatures array of the form:

interface VaultSignature {
  _id: string;
  entity: "ALL" | "LENDER" | "MANAGER";
}

Filter all entries where entity === 'LENDER'and use the _id values to load them. This returns the full signature definitions required to enable future user interactions.

GET /v1/signatures?_id=signatureId1,signatureId2
3

Retrieve token information with:

GET /v1/tokens/{vault.tokenId}

4

Fetch up-to-date vault metrics. This includes share price, APRs, TVL, and queue configuration.

GET /v1/vault-latest-block?vaultId={vault._id}

2. Required wallet access data

Defines the required checks and data fetches needed immediately after wallet connection to verify access and authorization for vault operations.

1

Check wallet access

To verify if a wallet is allowed to interact with the vault, instantiate the contract using the cdoEpoch ABI and address retrieved from the vault JSON:

const cdoEpochContract = new web3.eth.Contract(
  vault.cdoEpoch.abi,
  vault.cdoEpoch.address
);
const isAllowed = await cdoEpochContract.methods
  .isWalletAllowed(walletAddress)
  .call();
2

Signature Validation

Check if the required signatures have been signed:

GET /v1/signatures/{signatureId}/check?walletAddress=0x...123

otherwise

const hash = await web3.eth.personal.sign(
  atob(walletMessage),
  walletAddress,
  ""
);

Submit the signed hash:

POST /v1/signatures/{signatureId}/sign

3

Retrieve Wallet Position

Retrieve the wallet position to track users' deposits, claims, and balances.

GET /v1/vault/position?walletAddress={walletAddress}

3. Deposit flow

Outlines the required contract state and transactions to successfully execute a deposit into a vault.

1

Verify allowance and balance

Instantiate the token contract using the vault token ABI and address:

const tokenContract = new web3.eth.Contract(token.abi, token.address);
const allowance = await tokenContract.methods
  .allowance(walletAddress, spenderAddress)
  .call({ from: walletAddress });
const balance = await tokenContract.methods
  .balanceOf(walletAddress)
  .call({ from: walletAddress });

Spender can be found in:

  • vault.cdoEpoch.address if NETTING

  • vault.depositQueue.address if RUNNING

2

Approve token spending

Make sure the amount respects the token's decimals (6 for USDC, USDT, 18 for the majority of ERC-20 tokens).

await tokenContract.methods
  .approve(spenderAddress, amount)
  .send({ from: walletAddress });
3

Submit Deposit Transaction

// during NETTING period
await cdoEpochContract.methods.depositAA(amount).send({ from: walletAddress });
// during cycle RUNNING
await depositQueueContract.methods
  .requestDeposit(amount)
  .send({ from: walletAddress });

4. Withdraw flow

Describes how to prepare, calculate, and submit a withdrawal request from a vault, depending on its current status and configuration.

1

Fetch user balance and max withdrawable amount

const vaultTokenContract = new web3.eth.Contract(
  vaultToken.abi,
  vaultToken.address
);
const balance = await vaultTokenContract.methods
  .balanceOf(walletAddress)
  .call({ from: walletAddress });
const maxWithdrawable = await cdoEpochContract.methods
  .maxWithdrawable(walletAddress, vault.address)
  .call({ from: walletAddress });
2

Check allowance

The allowance must be verified only when the vault is in RUNNING state and uses the withdrawQueue. In this case, the withdrawQueue contract address should be used as spender.

const spender = vault.cdoEpoch.withdrawQueue.address;
const allowance = await tokenContract.methods
  .allowance(walletAddress, spender)
  .call({ from: walletAddress });
3

Compute the LP tokens required

const percentage = 1000000 / maxWithdrawable;
const lpAmount = LPDeposited * percentage;
4

Submit withdrawal request

Track requests in the block.requests array

// during NETTING period
await vaultContract.methods
  .requestWithdraw(lpAmount, vault.address)
  .send({ from: walletAddress });
// during cycle RUNNING
await withdrawQueueContract.methods
  .requestWithdraw(lpAmount)
  .send({ from: walletAddress });

Managing requests

All deposit requests (during the RUNNING state), and all withdrawals (instant or standard) are tracked under the requests array of the vaultBlock object. Each entry in this array represents a user-initiated interaction awaiting processing.

Request schema
interface VaultBlockRequest {
  type: "DEPOSIT" | "WITHDRAW" | "REDEEM";
  amount: iBigInt;
  block: Block;
  isInstant?: boolean;
  requestedOn: string;
  walletId: string;
  walletAddress: string;
  status:
    | "PENDING"
    | "PROCESSED"
    | "CLAIMABLE"
    | "INSTANT_CLAIMABLE"
    | "CLAIMED";
  epochNumber?: number;
}

where

  • type: Indicates if it's a DEPOSIT, WITHDRAW, or REDEEM.

  • status: Tracks the lifecycle of the request (e.g., PENDING, CLAIMABLE, etc.).

  • isInstant: Only present for withdrawals that qualify as "instant".

  • block: Indicates the vault block in which the request was recorded.

Requests are retrieved from the latest vault block:

GET /v1/vault-latest-block?vaultId={vaultId}

Deposit requests

  • Cancel the request if status === 'PENDING'

await cdoEpochContract.methods
  .deleteRequest(request.epochNumber)
  .send({ from: walletAddress });
  • Claim the request if status === 'CLAIMED'

await cdoEpochContract.methods
  .claimDepositRequest(request.epochNumber)
  .send({ from: walletAddress });

Redeem requests

Handled via the main vault contract vault.cdoEpoch

  • If status === 'CLAIMED':

await cdoEpochContract.methods
  .claimWithdrawRequest(request.epochNumber)
  .send({ from: walletAddress });
  • If request.isInstant === true:

await cdoEpochContract.methods
  .claimInstantWithdrawRequest(request.epochNumber)
  .send({ from: walletAddress });

Withdraw requests

Handled via the queue contract vault.cdoEpoch.withdrawQueue

  • If status === 'CLAIMED'

await withdrawQueueContract.methods
  .claimWithdrawRequest(request.epochNumber)
  .send({ from: walletAddress });

Product

Ethereum

Fasanara Digital

Optimism

FalconX

Arbitrum

Bastion Trading

Polygon

Bastion Trading

This pattern is required for calling methods such as depositAA, requestWithdraw, approve. Refer to the for full syntax details.

All API routes below belong to the public Pareto API at https://api.pareto.credit. Refer to the for a complete overview.

Load

Retrieve underlying

Fetch latest

If isAllowed is false, initiate a KYC flow using . Only after KYC is completed, it's possible to proceed with next steps.

For each vault deployed, the underling token, main contract, strategy, LP token, and queue contract, if available, are listed. The ABI of the Credit Vault contracts can be found here:

Description
Address
Description
Address
Description
Address
Description
Address
Web3.js documentation
API chapter
Vault Entity
Token
Vault Block
Keyring Connect SDK
JSON

Token USDC

Contract

Strategy

LP token

Queue

Token USDC

Contract

Strategy

LP token

Queue

Token USDT

Contract

Strategy

LP token

Queue

Token USDT

Contract

Strategy

LP token

Queue

Operators

Operators represent key entities that interact with the Pareto protocol. These can be protocol partners, borrowers, or curators responsible for deploying or managing vaults.

Structure

Each operator object includes:

  • _id (string) — Unique identifier

  • name (string) — Name of the operator

  • code (string) — Unique internal code

  • type (string) — One of: PROTOCOL, BORROWER, CURATOR

  • description (object) — Multilingual description (e.g. { en: "This is a protocol operator" })

  • shortDescription (object) — Short version of the description

  • caption (object) — Promotional caption

  • rating (string) — Internal rating indicator

  • location (string) — Geographic reference

  • links (object) —

    • website (string)

    • twitter (string)

    • linkedIn (string)

    • crunchbase (string)

  • createdAt, updatedAt (string) — ISO timestamps (UTC Unix time)

  • createdBy, updatedBy (string) — Actor IDs for auditing

Endpoints

Lenders

Lenders, such as asset managers, digital asset funds, and other professional investors, are an integral part of the Credit Vault setup and are an essential element of the lending-borrowing equation.

Key responsibilities

  • Lenders must allow Credit Vaults (spending allowance) to execute their deposit/redeem requests.

  • Lenders can deposit funds between lending cycles or queue their deposit requests if the cycle is running. Upon deposit, lenders receive the equivalent in LP tokens in their wallet, representing their principal and accrued interest. The Credit Vault LP tokens accumulate interest through their exchange rate; over time, each cvToken becomes convertible into an increasing amount of the deposited funds, which represents the interest accrued according to the Credit Agreement.

  • Lenders can redeem funds by sending a withdrawal request to claim back funds at the end of the following lending cycle. When completing the withdrawal request, lenders send back an amount of LP tokens proportional to the withdrawal amount. At the end of the next lending cycle, they can complete the process by claiming their funds.

    • When the interest rate of the next lending cycle is lower than the previous one by 1% or more (or otherwise provided in the Credit Agreement), lenders are entitled to an early exit and can redeem funds with a shorter waiting period, i.e., within 72 hours.

API

Pareto APIs provide access to campaign data, vault analytics, token information, and third-party integrated services.

Base URL
https://api.pareto.credit/

This is the active major version v1 of the API. All endpoints listed are part of the v1 namespace.

Quick start

  1. Use your preferred HTTP client (e.g., Postman, Axios, cURL)

  2. Add your API key as a Bearer Token in the Authorization header

  3. Start by fetching vaults or campaign data:

curl -H "Authorization: Bearer YOUR_API_KEY" https://api.pareto.credit/v1/vaults

Endpoints

A campaign is a points-based engagement program that allows users to earn rewards by interacting with Pareto.

  • GET /v1/campaigns — List all campaigns

  • GET /v1/campaigns/:campaignId — Get campaign by ID

  • GET /v1/campaigns/:campaignId/points — Get campaign points

  • GET /v1/chains — List supported chains

  • GET /v1/chains/:chainId — Get chain by ID

An entity managing or integrating with Pareto products.

  • GET /v1/operators — List all operators

  • GET /v1/operators/:operatorId — Get operator by ID

  • GET /v1/token-blocks — List all token blocks

  • GET /v1/token-blocks/:tokenBlockId — Get token block by ID

  • GET /v1/tokens — List all tokens

  • GET /v1/tokens/:tokenId — Get token by ID

  • GET /v1/transactions — List all protocol transactions

A yield-generating smart contract product.

  • GET /v1/vaults — List all vaults

  • GET /v1/vaults/:vaultId — Get vault by ID

  • GET /v1/vaults/performances — Vault performance overview

  • GET /v1/vaults/:vaultId/integrations — Integrations by vault ID

  • GET /v1/vault-blocks — List all vault blocks

  • GET /v1/vault-blocks/:vaultBlockId — Get vault block by ID

  • GET /v1/vault-latest-blocks — Latest block data for vaults

  • GET /v1/vault-categories — List all vault categories

  • GET /v1/vault-categories/:typeId — Get category by ID

A predefined period for vault accounting.

  • GET /v1/vault-epochs — List all vault epochs

  • GET /v1/vault-performances — List all performance metrics

  • GET /v1/vault-performances/:vaultPerformanceId — Get performance by ID

  • GET /v1/vault-types — List all vault types

  • GET /v1/vault-types/:typeId — Get vault type by ID

Listing

All listing endpoints across the API (e.g., /vaults, /transactions, /tokens, etc.) follow a consistent response format in consuming paginated data throughout the API:

  • data: an array of returned resources.

  • totalCount: the total number of resources matching the query, useful for pagination.

{
  "data": [ /* items */ ],
  "totalCount": 123
}

Pagination, sorting, fields

To control the number of items returned per request, you can use:

  • limit — Number of items to return (default: 50, max: 200)

  • offset — Number of items to skip before starting to collect the result set

GET /v1/vaults?limit=10&offset=20

The sort query parameter allows you to sort results by one or more fields:

  • Use field for ascending order

  • Use -field for descending order

GET /v1/vaults?sort=-createdAt

Some endpoints support the fields parameter, which lets you request only specific fields per object:

This can be useful for optimizing network performance and response size.

GET /v1/vaults?fields=_id,name,createdAt

Campaigns

Campaigns are point-based programs used to incentivize user activities on Pareto. Users can earn points by interacting with vaults or participating in social activities.

Structure

Each campaign object includes:

  • _id (string) — Unique identifier

  • code (string) — Campaign code

  • name (object) — Multilingual name, e.g. { en: "My Campaign" }

  • description (object) — Multilingual description

  • rules (array) — Conditions for earning points:

    • name, description (object) — i18n fields

    • trigger (string) — DEPOSIT or DEPOSIT_REQUEST

    • deposit (object) —

      • type: BALANCE or AGE

      • value: number

    • reward (object) —

      • type: AMOUNT or MULTIPLIER

      • value: number

    • frequency (object) — repetition rules (value, unit)

  • referrals (array) — Invite codes with activation flag

  • startDate / endDate (string) — ISO datetime

  • link (string) — URL

  • galxeId (number) — External reference

  • createdAt, updatedAt (string) — ISO timestamp

  • createdBy, updatedBy (string) — Actor IDs

Endpoints

Token blocks

Token blocks are periodic snapshots of token-related data captured at specific blockchain blocks. These are used in vault logic and on-chain analytics.

Structure

Each token block object includes:

  • _id (string) — Unique identifier

  • tokenId (string) — ID of the associated token

  • tokenAddress (string) — Ethereum address of the token (0x... format)

  • price (string) — Price of the token at this block

  • block (object) —

    • number (number) — Block number

    • timestamp (number) — Unix timestamp (UTC)

  • createdAt, updatedAt (string) — ISO timestamps

  • createdBy, updatedBy (string) — Actor IDs

Lenders must be whitelisted and complete the required via Keyring before being allowed to interact with Credit Vaults.

Request an API key via . Once approved, you will receive a key for authentication

0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
0xf6223C567F21E33e859ED7A045773526E9E3c2D5
0xC35D078092872Ec1f2ae82bcd6f0b6b89F0850de
0x45054c6753b4Bce40C5d54418DabC20b070F85bE
0x0b4F695B05902efc14344d19ED1d0B0E061C8A3E
0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
0xD2c0D848aA5AD1a4C12bE89e713E70B73211989B
0x2BCf124aa4f7F32f0fe54f498d924B934C942B31
0x24e16F9Fad32891f8bA69cE8fEdd273A2649331A
0x463465c334742D72907CA5fB97db44688B4EC3dC
0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9
0x3919396Cd445b03E6Bb62995A7a4CB2AC544245D
0x5b11507F8A91005aD1591F54ef64133AabA6d06E
0x97F476F664A95106931f78113489e0361Cf1c9Fa
0x133F1C751f25C2AAf0E83f0609A67074915144A4
0xc2132d05d31c914a87c6611c10748aeb04b58e8f
0xF9E2AE779a7d25cDe46FccC41a27B8A4381d4e52
0x4Ddb301403Ee3C4B4099ED128b34c36d86f6df35
0xaE65d6C295E4a28519182a632FB25b7C1966AED7
0xeAB324e9450d1EfFa087ccE8eff6C1FB476d60Ff
verification
this form
Campaigns
Chains
Operators
Token blocks
Tokens
Transactions
Vaults
Vault blocks
Vault categories
Vault epochs
Vault performances
Vault types

Chains

Chains represent the supported blockchain networks that Pareto interacts with. These include the networks where vaults are deployed, where user interactions occur, and where transactions are tracked.

Structure

Each chain object includes:

  • _id (string) — Unique identifier for the chain

  • name (string) — Human-readable name of the blockchain (e.g., "Ethereum")

  • chainId (string) — Network ID used internally by Pareto

  • nativeToken (string) — Symbol of the native currency (e.g., ETH, MATIC)

  • explorerUrl (string) — Block explorer base URL for linking transactions or accounts

  • icon (string) — Optional icon URL

  • createdAt, updatedAt (string) — ISO timestamps (UTC Unix time)

Endpoints

Vault categories

Vault categories group vaults by their investment profile, strategy type, or risk classification. They provide high-level metadata for sorting and UI filtering.

Structure

Each vault category object includes:

  • _id (string) — Unique identifier

  • code (string) — Unique category code (e.g. "CAT_1", "STRATEGY")

  • name (object) — Multilingual name (e.g., { en: "Stable Yield" })

  • description (object) — Multilingual description

  • createdAt, updatedAt (string) — ISO timestamps (UTC Unix time)

  • createdBy, updatedBy (string) — Actor IDs

Endpoints

Vaults

Vaults are the core contracts of the Pareto protocol. They represent on-chain vehicles that accept user deposits, deploy strategies, and accrue yield over time.

Each vault is tied to a specific strategy, chain, and token, and is managed by one or more operators.

Structure

Each vault object includes:

  • _id (string) — Unique identifier

  • tokenId (string) — Accepted token reference

  • chainId (string) — Blockchain network identifier

  • typeId (string) — Reference to vault type

  • categoryId (string) — Vault category

  • operatorIds (array[string]) — Managing entities

  • name (string) — Name of the vault

  • address (string) — On-chain vault contract address

  • symbol (string) — Symbol of the share token

  • protocol (string) — Strategy protocol (e.g., AaveV2, Clearpool, Morpho, etc.)

  • contractType (string) — Contract logic (e.g., BestYield, CDO, CDO_EPOCH)

  • abi (array) — ABI definition

  • description, shortDescription, caption (object) — Multilingual metadata

  • keyInfo (array) — Key-value UI information

  • visibility (string) — One of: PUBLIC, RESTRICTED, HIDDEN

  • status (string) — Deployment status (e.g., READY, PAUSED, DISABLED)

  • feePercentage (number) — Vault fee as percentage

  • createdAt, updatedAt (string) — ISO timestamps

  • createdBy, updatedBy (string) — System actor IDs

Endpoints

Tokens

Tokens are ERC-20 compatible assets used in vaults and tracked by the Pareto protocol across multiple chains.

Structure

Each token object includes:

  • _id (string) — Unique identifier

  • name (string) — Name of the token

  • symbol (string) — Token symbol (e.g. USDC, WETH)

  • chainId (string) — Chain this token belongs to

  • address (string) — On-chain contract address (0x...)

  • decimals (number) — Token decimal precision

  • color (string) — UI color reference for this token

  • oracle (object) — Price oracle metadata:

    • address (string) — Oracle contract address

    • abi (array) — Oracle ABI definition

    • protocol (string) — Data source (e.g., Idle, AaveV2, Morpho, Clearpool)

    • fee (number, optional) — Optional oracle fee

    • Additional optional config fields (e.g. fromBlock, USDCAddress, ...)

  • createdAt, updatedAt (string) — ISO timestamps

  • createdBy, updatedBy (string) — System actor IDs

Endpoints

Vault blocks

Vault blocks are detailed blockchain-based snapshots of a vault’s state at a specific block height. They are used for calculating APR/APY, tracking liquidity, and generating analytics.

Structure

Each vault block object includes:

  • _id (string) — Unique identifier

  • vaultId (string) — Vault being tracked

  • vaultAddress (string) — Smart contract address of the vault

  • block (object):

    • number (number) — Block number

    • timestamp (number) — Unix timestamp of the block

  • APRs (object) — Non-compounded APRs:

    • BASE, HARVEST, REWARDS, GROSS, NET, FEE (number)

  • APYs (object) — Compounded yield rates:

    • BASE, HARVEST, REWARDS, GROSS, NET, FEE (number)

  • totalSupply (string) — Total shares issued by the vault

  • price (string) — Price per share

  • TVL (object) —

    • token (string) — TVL in vault token

    • USD (string) — TVL in USD

  • pools (array of objects) — Breakdown of pool-level performance:

    • address (string)

    • protocol (string)

    • rates: { supply: number, borrow: number }

    • utilization: { supplied: string, borrowed: string, rate: number }

    • available: { toBorrow: string, toWithDraw: string }

  • allocations (array) — Optional pool allocation breakdown

  • createdAt, updatedAt (string) — ISO timestamps

  • createdBy, updatedBy (string) — Actor IDs

Endpoints

Vault latest blocks

Vault latest blocks are real-time snapshots of the most recent state for each vault. Unlike vault blocks (historical), these represent the current or latest available data.

Endpoints

Audits

Security

Audits

Pareto’s products have undergone multiple audits by both security firms and independent experts. A full list of security reports is available on the Audits page.

Monitoring

Continuous surveillance extends to the front end, smart contract vulnerabilities, private keys, and multi-signature wallets.

Date
Scope
Auditor
Report

Jan 2025

Credit vaults

Nov 2024

CVs withdraw queue

Oct 2024

CVs deposit queue

Oct 2024

Credit vaults

Aug 2024

Credit vaults

Pareto’s protocols are secured by the , which provides real-time monitoring and protection to prevent fund losses. The system detects and mitigates cyberattacks, automatically pausing on-chain smart contracts (see Pauser under Addresses) before any assets are compromised.

Audits
Hypernative Platform
Sherlock
Link
Hans Friese
Link
Hans Friese
Link
Hans Friese
Link
Hans Friese
Link

Vault epochs

Vault epochs define fixed-duration accounting periods used in vault logic to compute returns, manage liquidity flows, and determine claim availability.

Structure

Each vault epoch object includes:

  • _id (string) — Unique identifier

  • vaultId (string) — Vault the epoch belongs to

  • vaultAddress (string) — Address of the vault

  • block (object) —

    • number (number) — Block number

    • timestamp (number) — Unix timestamp

  • count (number) — Epoch sequence index

  • status (string) — One of: WAITING, RUNNING, DEFAULTED, CURE

  • startDate (string) — ISO 8601 start date

  • endDate (string) — ISO 8601 end date

  • startCureDate (string) — When cure phase begins (if applicable)

  • apr (number) — Estimated APR

  • lastApr (number) — APR from previous epoch

  • expectedInterest (string) — Interest forecasted during this epoch

  • unclaimedFees (string) — Fees not yet claimed

  • deposits (string) — Total deposits in epoch

  • duration (number) — Duration in seconds

  • bufferDuration (number) — Buffer window after epoch ends

  • withdrawType (string) — Either INSTANT or STANDARD

  • withdraws (object) —

    • amount (string)

    • fees (string)

  • depositQueue (object) —

    • amount (string)

    • lastAmount (string)

    • isInstant (boolean)

  • withdrawQueue (object) —

    • amount (string)

    • lastAmount (string)

    • isInstant (boolean)

  • instantWithdraws (object) —

    • allowed (boolean)

    • delay (number)

    • amount (string)

    • aprDelta (number)

    • deadline (string) — ISO 8601 date

    • disabled (boolean)

  • createdAt, updatedAt (string) — ISO 8601 timestamps

  • createdBy, updatedBy (string) — Actor IDs

Endpoints

Vault types

Vault types define internal classifications for vault contracts, distinguishing between different logic structures, yield mechanisms, or operational modes. These types are useful for rendering vault metadata, sorting/filtering in UI, or determining strategy compatibility.

Structure

Each vault type object includes:

  • _id (string) — Unique identifier

  • code (string) — Internal reference code for the vault type

  • name (object) — Multilingual object (e.g., { en: "Fixed Rate" })

  • description (object) — Multilingual description object

  • createdAt, updatedAt (string) — ISO UTC timestamps

  • createdBy, updatedBy (string) — Actor IDs

Endpoints

Media kit

Pareto brand guidelines provide logos, icons, and descriptions about the brand.

About Pareto

Tagline

Pareto is an on-chain private credit marketplace.

Short description

Pareto is a private credit marketplace that connects institutional lenders and borrowers, providing scalable, yield-generating opportunities and bridging institutional capital on-chain.

Boilerplate description

Pareto is a private credit marketplace that connects institutional lenders and borrowers, providing scalable, yield-generating opportunities and bridging institutional capital on-chain.

Tailored for asset managers, digital asset funds, and other professional investors, Pareto offers seamless access to regulatory-compliant alternative credit products. Its infrastructure emphasizes transparency, automation, and flexibility. Credit Vaults are the core primitive: they eliminate utilization-based inefficiencies, reduce operational overhead, and improve capital efficiency for both lenders and borrowers.

As the financial landscape evolves, Pareto aims to set a new standard for institutional credit with fully automated, data-driven lending solutions.

Brand assets

Logos

Pareto's logo visually represents the core principles of liquidity flow, financial connectivity, and cyclical capital movement, emphasizing the Pareto 80/20 principle.

Typography

Colors

Primary colors

Secondary colors

Primary font:

Secondary font:

GT Sectra
GT America Mono

Transactions

Transactions represent user and system interactions with Pareto vaults such as deposits, redemptions, and claims.

Structure

Each transaction object includes:

  • _id (string) — Unique identifier

  • type (string) — One of: DEPOSIT, REDEEM, CLAIM

  • status (string) — One of: PENDING, SUCCESS, FAILED

  • hash (string) — Transaction hash on-chain

  • chainId (string) — Blockchain ID where the transaction occurred

  • walletAddress (string) — Wallet initiating the transaction

  • vaultId (string) — Associated vault

  • epochId (string) — Related epoch (if applicable)

  • tokenId (string) — Token involved

  • amount (string) — Amount transacted

  • amountUSD (string) — USD equivalent of the transaction

  • gasFeeUSD (string) — Gas fee in USD

  • block: (object)

    • number (number) — Block number

    • timestamp (number) — Unix timestamp of the block

  • createdAt, updatedAt (string) — ISO timestamps

  • createdBy, updatedBy (string) — Actor identifiers

Endpoints

104KB
Pareto's logo.zip
archive
Cover

#254839

Cover

#081912

Cover

#E3E8E2

Cover

#70B19E

Cover

#48685A

Cover

#D7E4EA

Vault performances

Vault performances track yield metrics, user activity, and reward distributions for vaults. These metrics are used in analytics, reporting, and performance visualization on Pareto.

Structure

Each vault performance object includes:

  • _id (string) — Unique identifier

  • vaultId (string) — Vault being tracked

  • vaultBlockId (string) — Related vault block reference

  • block (object) — Block information:

    • number (number) — Block number

    • timestamp (number) — Unix timestamp

  • age (number) — Block age in seconds

  • holders (number) — Number of unique users in the vault

  • realizedAPY (number) — Realized annual percentage yield

  • accruedRewards (array of objects) —

    • tokenId (string) — Reward token ID

    • amount (string) — Raw amount of rewards

    • amountUSD (string) — Value in USD

    • APR (number) — APR contribution

    • percentage (number) — Share of total reward

  • earnings (object) —

    • USD (string) — USD-denominated earnings

    • token (string) — Token earnings amount

    • percentage (number) — Share of vault value

  • createdAt, updatedAt (string) — ISO 8601 timestamps

  • createdBy, updatedBy (string) — Actor IDs

Endpoints

List all token blocks

get
Responses
200
A list of token blocks
application/json
get
GET /v1/token-blocks HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

A list of token blocks

{
  "data": [
    {
      "_id": "text",
      "tokenId": "text",
      "chainId": "text",
      "blockNumber": 1,
      "price": 1,
      "liquidity": 1,
      "volume": 1,
      "timestamp": "2025-05-14T04:01:05.245Z",
      "createdAt": "2025-05-14T04:01:05.245Z",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}

Get token block by ID

get
Path parameters
tokenBlockIdstringRequired
Responses
200
Token block details
application/json
get
GET /v1/token-blocks/{tokenBlockId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

Token block details

{
  "_id": "text",
  "tokenId": "text",
  "chainId": "text",
  "blockNumber": 1,
  "price": 1,
  "liquidity": 1,
  "volume": 1,
  "timestamp": "2025-05-14T04:01:05.245Z",
  "createdAt": "2025-05-14T04:01:05.245Z",
  "updatedAt": "2025-05-14T04:01:05.245Z",
  "createdBy": "text",
  "updatedBy": "text"
}
Claim LP tokens preview when a deposit was made during a cycle running

List all vault epochs

get
Responses
200
A list of vault epochs
application/json
get
GET /v1/vault-epochs HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

A list of vault epochs

{
  "data": [
    {
      "_id": "text",
      "vaultId": "text",
      "vaultAddress": "text",
      "block": {
        "number": 1,
        "timestamp": 1
      },
      "count": 1,
      "status": "WAITING",
      "startDate": "2025-05-14T04:01:05.245Z",
      "endDate": "2025-05-14T04:01:05.245Z",
      "startCureDate": "2025-05-14T04:01:05.245Z",
      "apr": 1,
      "lastApr": 1,
      "expectedInterest": "text",
      "unclaimedFees": "text",
      "deposits": "text",
      "duration": 1,
      "bufferDuration": 1,
      "withdrawType": "INSTANT",
      "withdraws": {
        "amount": "text",
        "fees": "text"
      },
      "depositQueue": {
        "amount": "text",
        "lastAmount": "text",
        "isInstant": true
      },
      "withdrawQueue": {
        "amount": "text",
        "lastAmount": "text",
        "isInstant": true
      },
      "instantWithdraws": {
        "allowed": true,
        "delay": 1,
        "amount": "text",
        "aprDelta": 1,
        "deadline": "2025-05-14T04:01:05.245Z",
        "disabled": true
      },
      "createdAt": "2025-05-14T04:01:05.245Z",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}

List all operators

get
Responses
200
A list of operators
application/json
get
200

A list of operators

Get operator by ID

get
Path parameters
operatorIdstringRequired
Responses
200
Operator details
application/json
get
200

Operator details

List all transactions

get
Query parameters
typestringOptional
statusstringOptional
walletAddressstringOptional
vaultIdstringOptional
chainIdstringOptional
Responses
200
A list of transactions
application/json
get
200

A list of transactions

List all vault categories

get
Responses
200
A list of vault categories
application/json
get
200

A list of vault categories

Get vault category by ID

get
Path parameters
typeIdstringRequired
Responses
200
Vault category details
application/json
get
200

Vault category details

List all vault types

get
Responses
200
A list of vault types
application/json
get
200

A list of vault types

Get vault type by ID

get
Path parameters
typeIdstringRequired
Responses
200
A single vault type
application/json
get
200

A single vault type

List all chains

get
Responses
200
A list of chains
application/json
get
200

A list of chains

Get chain by ID

get
Path parameters
chainIdstringRequired
Responses
200
Chain details
application/json
get
200

Chain details

GET /v1/operators HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "data": [
    {
      "_id": "text",
      "name": "text",
      "description": "text",
      "image": "text",
      "vaults": [
        "text"
      ],
      "createdAt": "2025-05-14T04:01:05.245Z",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}
GET /v1/operators/{operatorId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "_id": "text",
  "name": "text",
  "description": "text",
  "image": "text",
  "vaults": [
    "text"
  ],
  "createdAt": "2025-05-14T04:01:05.245Z",
  "updatedAt": "2025-05-14T04:01:05.245Z",
  "createdBy": "text",
  "updatedBy": "text"
}
GET /v1/transactions HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "data": [
    {
      "_id": "text",
      "type": "DEPOSIT",
      "status": "PENDING",
      "hash": "text",
      "chainId": "text",
      "walletAddress": "text",
      "vaultId": "text",
      "epochId": "text",
      "tokenId": "text",
      "amount": "text",
      "amountUSD": "text",
      "gasFeeUSD": "text",
      "block": {
        "number": 1,
        "timestamp": 1
      },
      "createdAt": "2025-05-14T04:01:05.245Z",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}
GET /v1/vault-categories HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "data": [
    {
      "_id": "text",
      "typeId": "text",
      "name": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      },
      "description": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      },
      "icon": "text",
      "createdAt": "2025-05-14T04:01:05.245Z",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}
GET /v1/vault-categories/{typeId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "_id": "text",
  "typeId": "text",
  "name": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "description": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "icon": "text",
  "createdAt": "2025-05-14T04:01:05.245Z",
  "updatedAt": "2025-05-14T04:01:05.245Z",
  "createdBy": "text",
  "updatedBy": "text"
}
GET /v1/vault-types HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "data": [
    {
      "_id": "text",
      "code": "text",
      "name": {
        "en": "text"
      },
      "description": {
        "en": "text"
      },
      "createdAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}
GET /v1/vault-types/{typeId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "_id": "text",
  "code": "text",
  "name": {
    "en": "text"
  },
  "description": {
    "en": "text"
  },
  "createdAt": "2025-05-14T04:01:05.245Z",
  "createdBy": "text",
  "updatedAt": "2025-05-14T04:01:05.245Z",
  "updatedBy": "text"
}
GET /v1/chains HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "data": [
    {
      "_id": "text",
      "name": "text",
      "hex": "text",
      "blocksPerYear": 1,
      "tokenSymbol": "text",
      "chainID": 1,
      "RPCs": [
        {
          "provider": "INFURA",
          "https": "text",
          "wss": "text",
          "name": "text",
          "isPublic": true
        }
      ],
      "color": "text",
      "isDisabled": true,
      "createdAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}
GET /v1/chains/{chainId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "_id": "text",
  "name": "text",
  "hex": "text",
  "blocksPerYear": 1,
  "tokenSymbol": "text",
  "chainID": 1,
  "RPCs": [
    {
      "provider": "INFURA",
      "https": "text",
      "wss": "text",
      "name": "text",
      "isPublic": true
    }
  ],
  "color": "text",
  "isDisabled": true,
  "createdAt": "2025-05-14T04:01:05.245Z",
  "createdBy": "text",
  "updatedAt": "2025-05-14T04:01:05.245Z",
  "updatedBy": "text"
}

List all tokens

get
Responses
200
A list of tokens
application/json
get
GET /v1/tokens HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

A list of tokens

{
  "data": [
    {
      "_id": "text",
      "name": "text",
      "symbol": "text",
      "decimals": 1,
      "address": "text",
      "chainId": "text",
      "logoURI": "text",
      "underlying": true,
      "createdAt": "2025-05-14T04:01:05.245Z",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}

Get token by ID

get
Path parameters
tokenIdstringRequired
Responses
200
Token details
application/json
get
GET /v1/tokens/{tokenId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

Token details

{
  "_id": "text",
  "name": "text",
  "symbol": "text",
  "decimals": 1,
  "address": "text",
  "chainId": "text",
  "logoURI": "text",
  "underlying": true,
  "createdAt": "2025-05-14T04:01:05.245Z",
  "updatedAt": "2025-05-14T04:01:05.245Z",
  "createdBy": "text",
  "updatedBy": "text"
}

List all vaults

get
Responses
200
A list of vaults
application/json
get
GET /v1/vaults HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

A list of vaults

{
  "data": [
    {
      "_id": "text",
      "tokenId": "text",
      "chainId": "text",
      "typeId": "text",
      "categoryId": "text",
      "operatorIds": [
        "text"
      ],
      "name": "text",
      "address": "text",
      "symbol": "text",
      "protocol": "Idle",
      "contractType": "BestYield",
      "abi": [
        {}
      ],
      "description": {
        "en": "text"
      },
      "shortDescription": {
        "en": "text"
      },
      "caption": {
        "en": "text"
      },
      "keyInfo": [
        {
          "label": {
            "en": "text"
          },
          "value": {
            "en": "text"
          }
        }
      ],
      "visibility": "HIDDEN",
      "status": "PAUSED",
      "feePercentage": 1,
      "createdAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}

Get vault by ID

get
Path parameters
vaultIdstringRequired
Responses
200
Single vault object
application/json
get
GET /v1/vaults/{vaultId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

Single vault object

{
  "_id": "text",
  "tokenId": "text",
  "chainId": "text",
  "typeId": "text",
  "categoryId": "text",
  "operatorIds": [
    "text"
  ],
  "name": "text",
  "address": "text",
  "symbol": "text",
  "protocol": "Idle",
  "contractType": "BestYield",
  "abi": [
    {}
  ],
  "description": {
    "en": "text"
  },
  "shortDescription": {
    "en": "text"
  },
  "caption": {
    "en": "text"
  },
  "keyInfo": [
    {
      "label": {
        "en": "text"
      },
      "value": {
        "en": "text"
      }
    }
  ],
  "visibility": "HIDDEN",
  "status": "PAUSED",
  "feePercentage": 1,
  "createdAt": "2025-05-14T04:01:05.245Z",
  "createdBy": "text",
  "updatedAt": "2025-05-14T04:01:05.245Z",
  "updatedBy": "text"
}

Aggregated vault performance list

get
Responses
200
Vaults performance metrics
application/json
get
GET /v1/vaults/performances HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

Vaults performance metrics

{
  "data": [
    {}
  ],
  "totalCount": 1
}

Get integrations related to a vault

get
Path parameters
vaultIdstringRequired
Responses
200
Integration data
application/json
get
GET /v1/vaults/{vaultId}/integrations HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

Integration data

{
  "ANY_ADDITIONAL_PROPERTY": "anything"
}

List all vault blocks

get
Responses
200
A list of vault blocks
application/json
get
GET /v1/vault-blocks HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

A list of vault blocks

{
  "data": [
    {
      "_id": "text",
      "vaultId": "text",
      "vaultAddress": "text",
      "block": {
        "number": 1,
        "timestamp": 1
      },
      "APRs": {
        "BASE": 1,
        "HARVEST": 1,
        "REWARDS": 1,
        "GROSS": 1,
        "NET": 1,
        "FEE": 1
      },
      "APYs": {
        "BASE": 1,
        "HARVEST": 1,
        "REWARDS": 1,
        "GROSS": 1,
        "NET": 1,
        "FEE": 1
      },
      "totalSupply": "text",
      "price": "text",
      "TVL": {
        "token": "text",
        "USD": "text"
      },
      "pools": [
        {
          "address": "text",
          "protocol": "text",
          "rates": {
            "supply": 1,
            "borrow": 1
          },
          "utilization": {
            "supplied": "text",
            "borrowed": "text",
            "rate": 1
          },
          "available": {
            "toBorrow": "text",
            "toWithDraw": "text"
          }
        }
      ],
      "allocations": [],
      "createdAt": "2025-05-14T04:01:05.245Z",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}

Get vault block by ID

get
Path parameters
vaultBlockIdstringRequired
Responses
200
Vault block details
application/json
get
GET /v1/vault-blocks/{vaultBlockId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

Vault block details

{
  "_id": "text",
  "vaultId": "text",
  "vaultAddress": "text",
  "block": {
    "number": 1,
    "timestamp": 1
  },
  "APRs": {
    "BASE": 1,
    "HARVEST": 1,
    "REWARDS": 1,
    "GROSS": 1,
    "NET": 1,
    "FEE": 1
  },
  "APYs": {
    "BASE": 1,
    "HARVEST": 1,
    "REWARDS": 1,
    "GROSS": 1,
    "NET": 1,
    "FEE": 1
  },
  "totalSupply": "text",
  "price": "text",
  "TVL": {
    "token": "text",
    "USD": "text"
  },
  "pools": [
    {
      "address": "text",
      "protocol": "text",
      "rates": {
        "supply": 1,
        "borrow": 1
      },
      "utilization": {
        "supplied": "text",
        "borrowed": "text",
        "rate": 1
      },
      "available": {
        "toBorrow": "text",
        "toWithDraw": "text"
      }
    }
  ],
  "allocations": [],
  "createdAt": "2025-05-14T04:01:05.245Z",
  "updatedAt": "2025-05-14T04:01:05.245Z",
  "createdBy": "text",
  "updatedBy": "text"
}

List all vault performance entries

get
Responses
200
Vault performance data
application/json
get
GET /v1/vault-performances HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

Vault performance data

{
  "data": [
    {
      "_id": "text",
      "vaultId": "text",
      "vaultBlockId": "text",
      "block": {
        "number": 1,
        "timestamp": 1
      },
      "age": 1,
      "holders": 1,
      "realizedAPY": 1,
      "accruedRewards": [
        {
          "tokenId": "text",
          "amount": "text",
          "amountUSD": "text",
          "APR": 1,
          "percentage": 1
        }
      ],
      "earnings": {
        "USD": "text",
        "token": "text",
        "percentage": 1
      },
      "createdAt": "2025-05-14T04:01:05.245Z",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}

Get vault performance by ID

get
Path parameters
vaultPerformanceIdstringRequired
Responses
200
Vault performance entry
application/json
get
GET /v1/vault-performances/{vaultPerformanceId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

Vault performance entry

{
  "_id": "text",
  "vaultId": "text",
  "vaultBlockId": "text",
  "block": {
    "number": 1,
    "timestamp": 1
  },
  "age": 1,
  "holders": 1,
  "realizedAPY": 1,
  "accruedRewards": [
    {
      "tokenId": "text",
      "amount": "text",
      "amountUSD": "text",
      "APR": 1,
      "percentage": 1
    }
  ],
  "earnings": {
    "USD": "text",
    "token": "text",
    "percentage": 1
  },
  "createdAt": "2025-05-14T04:01:05.245Z",
  "updatedAt": "2025-05-14T04:01:05.245Z",
  "createdBy": "text",
  "updatedBy": "text"
}

List all campaigns

get
Responses
200
A list of campaigns
application/json
get
200

A list of campaigns

Get campaign by ID

get
Path parameters
campaignIdstringRequired
Responses
200
Campaign details
application/json
get
200

Campaign details

GET /v1/campaigns HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "data": [
    {
      "_id": "text",
      "code": "text",
      "name": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      },
      "description": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      },
      "rules": [
        {
          "name": {
            "ANY_ADDITIONAL_PROPERTY": "text"
          },
          "description": {
            "ANY_ADDITIONAL_PROPERTY": "text"
          },
          "trigger": "DEPOSIT",
          "deposit": {
            "type": "BALANCE",
            "value": 1
          },
          "reward": {
            "type": "AMOUNT",
            "value": 1
          },
          "frequency": {
            "value": 1,
            "unit": "seconds"
          }
        }
      ],
      "referrals": [
        {
          "code": "text",
          "isActive": true
        }
      ],
      "startDate": "2025-05-14T04:01:05.245Z",
      "endDate": "2025-05-14T04:01:05.245Z",
      "link": "text",
      "galxeId": 1,
      "createdAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}
GET /v1/campaigns/{campaignId} HTTP/1.1
Host: api.pareto.credit
Accept: */*
{
  "_id": "text",
  "code": "text",
  "name": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "description": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "rules": [
    {
      "name": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      },
      "description": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      },
      "trigger": "DEPOSIT",
      "deposit": {
        "type": "BALANCE",
        "value": 1
      },
      "reward": {
        "type": "AMOUNT",
        "value": 1
      },
      "frequency": {
        "value": 1,
        "unit": "seconds"
      }
    }
  ],
  "referrals": [
    {
      "code": "text",
      "isActive": true
    }
  ],
  "startDate": "2025-05-14T04:01:05.245Z",
  "endDate": "2025-05-14T04:01:05.245Z",
  "link": "text",
  "galxeId": 1,
  "createdAt": "2025-05-14T04:01:05.245Z",
  "createdBy": "text",
  "updatedAt": "2025-05-14T04:01:05.245Z",
  "updatedBy": "text"
}

List the latest block snapshot per vault

get
Responses
200
Latest vault state per block
application/json
get
GET /v1/vault-latest-blocks HTTP/1.1
Host: api.pareto.credit
Accept: */*
200

Latest vault state per block

{
  "data": [
    {
      "vaultId": "text",
      "vaultAddress": "text",
      "block": {
        "number": 1,
        "timestamp": 1
      },
      "TVL": {
        "token": "text",
        "USD": "text"
      },
      "price": "text",
      "APRs": {
        "BASE": 1,
        "HARVEST": 1,
        "REWARDS": 1,
        "GROSS": 1,
        "NET": 1,
        "FEE": 1
      },
      "createdAt": "2025-05-14T04:01:05.245Z",
      "updatedAt": "2025-05-14T04:01:05.245Z",
      "createdBy": "text",
      "updatedBy": "text"
    }
  ],
  "totalCount": 1
}