Stay Liquid Yield-as-a-Service API (0.3.0)

Securely earn DeFi yield on your idle stablecoin reserves. This API helps businesses automate allocation, rebalancing, and execution across secure, risk-evaluated pools using Stay Liquid's Risk Engine.

You configure your security preferences, and we provide pool recommendations and transaction payloads to join/exit pools. No need to build DeFi infrastructure.

Download OpenAPI description
Overview
Stay Liquid Support

support@stayliquid.co

Languages
Servers
Mock server

https://docs.stayliquid.co/_mock/apis/

https://api.stayliquid.co/

webhooks

Webhooks

Notify user about rebalance actionsWebhook

Request

Payload sent by Stay Liquid to the customer's webhook endpoint containing suggested portfolio rebalancing actions.

Security
bearerAuth
Bodyapplication/jsonrequired
account_idstringrequired
portfolio_snapshotobject(Portfolio)required
portfolio_snapshot.​portfolio_idstring
Example: "portfolio_abc123"
portfolio_snapshot.​allocationsArray of objects(PoolAllocation)
portfolio_snapshot.​total_value_usdnumber

Total value of the portfolio in USD

Example: 100000
suggested_actionsArray of objects(RebalanceAction)required
suggested_actions[].​action_typestring

Type of rebalancing action

Enum"join""exit""adjust"
Example: "join"
suggested_actions[].​pool_idstring

Target pool ID

Example: "curve-arb-eusd-usdc"
suggested_actions[].​allocation_change_bpsinteger

Change in allocation percentage in basis points (negative for decrease)

Example: 500
suggested_actions[].​payloadobject(RawPayload)
timestampstring(date-time)required
application/json
{ "account_id": "string", "portfolio_snapshot": { "portfolio_id": "portfolio_abc123", "allocations": [], "total_value_usd": 100000 }, "suggested_actions": [ {} ], "timestamp": "2019-08-24T14:15:22Z" }

Responses

User successfully received rebalance notification

Get all supported yield pools

Request

Retrieve details about available yield pools, including supported stablecoins and security scores. Useful for identifying suitable pools based on your risk criteria.

Security
bearerAuth
curl -i -X GET \
  https://docs.stayliquid.co/_mock/apis/supported-pools \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

List of supported pools

Bodyapplication/jsonArray [
pool_idstring

Unique pool identifier

Example: "curve-arb-eusd-usdc"
protocolstring

Protocol providing the yield pool

Example: "curve"
chainstring

Blockchain network name

Example: "arbitrum"
stablecoinsArray of strings

List of stablecoins in the pool

Example: ["eUSD","USDC"]
security_scoreinteger

Security score from 0 (low) to 100 (high)

Example: 86
]
Response
application/json
[ { "pool_id": "curve-arb-eusd-usdc", "protocol": "curve", "chain": "arbitrum", "stablecoins": [], "security_score": 86 } ]

Get security score for a given pool

Request

Fetch the security score of a specified yield pool to evaluate risk before investing. Helps in making informed decisions about pool selection.

Security
bearerAuth
Query
pool_namestringrequired

Name of the pool (e.g., 'curve-arb-eusd-usdc')

curl -i -X GET \
  'https://docs.stayliquid.co/_mock/apis/pool-security-score?pool_name=string' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Security score of the pool

Bodyapplication/json
exchange_namestring

Name of the pool

Example: "curve-arb-eusd-usdc"
security_scoreinteger

Security score from 0 (low security) to 100 (high security)

Example: 85
Response
application/json
{ "exchange_name": "curve-arb-eusd-usdc", "security_score": 85 }

Get optimal stablecoin portfolio allocation

Request

Get a personalized recommendation for stablecoin allocations based on your organization's configured security preferences. Ideal for automating yield optimization.

Security
bearerAuth
Query
organization_idstringrequired

Unique identifier for your organization

curl -i -X GET \
  'https://docs.stayliquid.co/_mock/apis/portfolio-recommendation?organization_id=string' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Recommended portfolio

Bodyapplication/json
portfolio_idstringread-only

Unique ID for recommended portfolio

Example: "portfolio_abc123"
allocationArray of objects(PoolAllocation)
Response
application/json
{ "portfolio_id": "portfolio_abc123", "allocation": [ {} ] }

Get rebalancing suggestions

Request

Use this endpoint to explicitly retrieve rebalancing suggestions and payloads if you opted out of automatic webhook notifications. Receive actionable suggestions and transaction payloads for rebalancing your portfolio according to your set security, yield goals, and rebalancing frequency settings. Simplifies the rebalancing process.

Security
bearerAuth
Query
organization_idstringrequired

Unique identifier for your organization

curl -i -X GET \
  'https://docs.stayliquid.co/_mock/apis/auto-rebalance?organization_id=string' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Rebalancing action and payloads

Bodyapplication/json
rebalancingobject
payloadsArray of objects(RawPayload)
Response
application/json
{ "rebalancing": { "exit_pools": [], "enter_pools": [], "adjust_allocations": [] }, "payloads": [ {} ] }

Set or update security and rebalancing preferences

Request

Configure or update your organization's security, yield, and rebalancing preferences. Essential for tailoring portfolio management to your specific risk tolerance.

Security
bearerAuth
Bodyapplication/jsonrequired
organization_idstringrequired

Organization's unique ID

Example: "org-123"
min_security_scoreintegerrequired

Minimum acceptable security score (0–100, higher score means better security)

Example: 40
rebalance_frequency_daysintegerrequired

How often do you want to rebalance your portfolio in days

Example: 7
rebalance_webhook_urlstring(uri)required

The webhook URL where rebalancing notifications should be sent.

Example: "https://customer-webhook-url.com/stayliquid-rebalance"
min_yieldinteger

Minimum acceptable yield in percent in basis points (0–10000). 1% = 100 basis points

Example: 500
allowed_poolsArray of strings

A list of allowed pools (format protocol-chain-poolname-stables)

curl -i -X POST \
  https://docs.stayliquid.co/_mock/apis/security-preferences \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "organization_id": "org-123",
    "min_security_score": 40,
    "rebalance_frequency_days": 7,
    "rebalance_webhook_url": "https://customer-webhook-url.com/stayliquid-rebalance",
    "min_yield": 500,
    "allowed_pools": [
      "string"
    ]
  }'

Responses

Preferences updated

Bodyapplication/json
statusstring
Example: "ok"
Response
application/json
{ "status": "ok" }

Get raw transaction payloads to join or exit pools

Request

Obtain encoded raw transaction payloads for joining or exiting yield pools. Streamlines integration by directly providing ready-to-send blockchain transactions.

Security
bearerAuth
Bodyapplication/jsonrequired
portfolio_idstringrequired

ID of the portfolio to apply action on

Example: "portfolio_abc123"
actionstringrequired

Action to perform on pools

Enum"join""exit"
Example: "join"
target_poolsArray of stringsrequired

List of pool IDs to act on

Example: ["curve_usdc_pool"]
curl -i -X POST \
  https://docs.stayliquid.co/_mock/apis/transaction-payload \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "portfolio_id": "portfolio_abc123",
    "action": "join",
    "target_pools": [
      "curve_usdc_pool"
    ]
  }'

Responses

Transaction payloads

Bodyapplication/json
payloadsArray of objects(RawPayload)
Response
application/json
{ "payloads": [ {} ] }

Submit signed transaction payloads

Request

This endpoint is for submitting signed transaction payloads received via rebalance webhook.

Security
bearerAuth
Bodyapplication/jsonrequiredArray [
chainstringrequired

Target chain for the transaction

tostringrequired

Smart contract address

signed_datastringrequired

Encoded signed transaction data

valuestringrequired

Value to send with transaction (in wei)

]
curl -i -X POST \
  https://docs.stayliquid.co/_mock/apis/submit-signed-payloads \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '[
    {
      "chain": "string",
      "to": "string",
      "signed_data": "string",
      "value": "string"
    }
  ]'

Responses

Successful submission

Bodyapplication/json
statusstring
Example: "ok"
Response
application/json
{ "status": "ok" }