Skip to main content
POST
https://partners-backend-1038109371738.europe-west1.run.app
/
api
/
v1
/
optimizer
/
{chain_id}
/
optimize
curl -X POST "https://partners-backend-1038109371738.europe-west1.run.app/api/v1/optimizer/8453/optimize" \
  -H "Content-Type: application/json" \
  -H "X-Partner-API-Key: your-api-key" \
  -H "X-Partner-Name: your-partner-name" \
  -d '{
    "total_capital": "1000000000",
    "token_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "current_allocations": {
      "aave": "500000000",
      "compound": "500000000"
    },
    "protocols": ["aave", "compound", "moonwell", "fluid"],
    "wallet_address": "0x1234567890123456789012345678901234567890"
  }'
{
  "optimization_result": {
    "allocations": [
      {
        "protocol": "aave",
        "allocation": "700000000",
        "apr": 5.5
      },
      {
        "protocol": "compound",
        "allocation": "300000000",
        "apr": 4.8
      }
    ],
    "total_costs": 0.05,
    "weighted_apr_initial": 5.0,
    "weighted_apr_final": 5.29,
    "apr_improvement": 5.8
  },
  "action_plan": [
    {
      "action_type": "withdraw",
      "protocol": "compound",
      "amount": "200000000",
      "underlying_amount": "200000000"
    },
    {
      "action_type": "deposit",
      "protocol": "aave",
      "amount": "200000000"
    }
  ],
  "calldata": [
    {
      "contract_address": "0xA88594D404727625A9437C3f886C7643872296AE",
      "function_name": "withdraw",
      "parameters": ["200000000"],
      "value": "0",
      "protocol": "compound",
      "description": "Withdraw 200000000 from Compound"
    },
    {
      "contract_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "function_name": "approve",
      "parameters": ["0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf", "200000000"],
      "value": "0",
      "protocol": "aave",
      "description": "Approve USDC for Aave"
    },
    {
      "contract_address": "0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf",
      "function_name": "supply",
      "parameters": ["0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "200000000", "0x0000000000000000000000000000000000000000", "0"],
      "value": "0",
      "protocol": "aave",
      "description": "Deposit 200000000 to Aave"
    }
  ]
}
SDK Alternative: Use giza.optimizer.optimize() for a simpler TypeScript interface. See SDK docs

Description

Calculates the optimal capital allocation across DeFi lending protocols. Returns the optimal allocation, an action plan to achieve it, and execution-ready calldata. This endpoint is the core of the IaaS (Intelligence as a Service) integration.

Path Parameters

chain_id
integer
required
The blockchain chain ID

Request Body

total_capital
string
required
Total capital to allocate (as bigint string, e.g., “1000000000” for 1000 USDC)
token_address
string
required
Token address to optimize for
current_allocations
object
required
Current allocations by protocol (protocol name → amount as bigint string)Example: {"aave": "500000000", "compound": "500000000"}
protocols
array
required
List of protocol names to consider for optimization
constraints
array
Optional constraints for optimization. Each constraint is an object with kind and params.Constraint types and required parameters:
KindParamsDescription
min_protocolsmin_protocols (int), min_fraction_per_protocol (float, optional)Minimum number of protocols to use
max_amount_per_protocolprotocol (string), max_ratio (float 0-1)Cap a protocol at a percentage of total capital
max_allocation_amount_per_protocolprotocol (string), max_amount (int)Cap a protocol at an absolute amount
min_amountmin_amount (int)Minimum amount for any used protocol
min_allocation_amount_per_protocolprotocol (string), min_amount (int)Minimum amount for a specific protocol
exclude_protocolprotocol (string)Exclude a protocol from optimization
Example:
[
  { "kind": "min_protocols", "params": { "min_protocols": 2 } },
  { "kind": "max_amount_per_protocol", "params": { "protocol": "aave", "max_ratio": 0.5 } },
  { "kind": "exclude_protocol", "params": { "protocol": "compound" } }
]
wallet_address
string
Optional wallet address that will execute the transactions. Example: "0x1234567890123456789012345678901234567890"

Response

optimization_result
object
Optimization results
action_plan
array
Ordered list of actions to execute
calldata
array
Execution-ready transaction data
curl -X POST "https://partners-backend-1038109371738.europe-west1.run.app/api/v1/optimizer/8453/optimize" \
  -H "Content-Type: application/json" \
  -H "X-Partner-API-Key: your-api-key" \
  -H "X-Partner-Name: your-partner-name" \
  -d '{
    "total_capital": "1000000000",
    "token_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "current_allocations": {
      "aave": "500000000",
      "compound": "500000000"
    },
    "protocols": ["aave", "compound", "moonwell", "fluid"],
    "wallet_address": "0x1234567890123456789012345678901234567890"
  }'
{
  "optimization_result": {
    "allocations": [
      {
        "protocol": "aave",
        "allocation": "700000000",
        "apr": 5.5
      },
      {
        "protocol": "compound",
        "allocation": "300000000",
        "apr": 4.8
      }
    ],
    "total_costs": 0.05,
    "weighted_apr_initial": 5.0,
    "weighted_apr_final": 5.29,
    "apr_improvement": 5.8
  },
  "action_plan": [
    {
      "action_type": "withdraw",
      "protocol": "compound",
      "amount": "200000000",
      "underlying_amount": "200000000"
    },
    {
      "action_type": "deposit",
      "protocol": "aave",
      "amount": "200000000"
    }
  ],
  "calldata": [
    {
      "contract_address": "0xA88594D404727625A9437C3f886C7643872296AE",
      "function_name": "withdraw",
      "parameters": ["200000000"],
      "value": "0",
      "protocol": "compound",
      "description": "Withdraw 200000000 from Compound"
    },
    {
      "contract_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "function_name": "approve",
      "parameters": ["0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf", "200000000"],
      "value": "0",
      "protocol": "aave",
      "description": "Approve USDC for Aave"
    },
    {
      "contract_address": "0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf",
      "function_name": "supply",
      "parameters": ["0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "200000000", "0x0000000000000000000000000000000000000000", "0"],
      "value": "0",
      "protocol": "aave",
      "description": "Deposit 200000000 to Aave"
    }
  ]
}