v1.0.0
OpenAPI 3.0.3

YieldSeeker API

The documented external subset of the YieldSeeker v1 API.

Authentication

Authorization is required for user-scoped endpoints. Send the complete header value Signature <signature-token>, where the token is the base64-encoded authentication token produced by the wallet authentication flow.

User signatures are Sign-In with Ethereum (SIWE, EIP-4361) messages. Generate a SIWE message for the caller's wallet (domain must be one of YieldSeeker's allowed auth domains, and issued_at must be no more than 30 days old), have the wallet sign it, then base64-encode a JSON object of the form {"message": "<siwe-message>", "signature": "<hex-signature>"} to produce the signature token. A message with an expirationTime in the past, or one issued more than 30 days ago, is rejected. For complete signing and header instructions, see the developer authentication guide. For Vault Agent lifecycle, vault discovery, and user-controlled funding and withdrawal behavior, see the Vault Agent API integration guide.

X-Api-Key is optional. When provided, it identifies the integrator and is validated against the request origin. Omit it for normal first-party v1 requests.

Rate limits

Most operations are rate limited per caller (by user for signed requests, by IP for public ones), across one or more rolling windows. Each operation's description states its current limit; a request over that limit receives a 429 response with a Retry-After header giving the number of seconds to wait before retrying. Limits can change; treat the 429 response and Retry-After header as authoritative, not the documented number alone. See the rate limits guide for the current tiers.

Client Libraries

System

Platform-wide endpoints that need no user context: service health, on-chain contract status, and the assets/chains YieldSeeker currently supports. Use these to check the API is up and to discover what you can build against before creating any users or agents.

getHealth

Check API health

Lightweight liveness check. Returns ok if the API process is reachable; does not verify database, blockchain, or downstream provider connectivity.

Rate limited to 30 requests/minute, 300 requests/hour.

Responses
  • 200
    Type: object · HealthResponse

    Successful response

    • health
      Type: object · Health
      required
    application/json
Request Example for get/v1/health
curl /v1/health
{
  "health": {
    "status": "ok"
  }
}
getOnchainStatus

Get on-chain status

Returns the on-chain status of platform contracts: timelock configuration, pending operations, and role assignments.

Rate limited to 30 requests/minute, 300 requests/hour.

Responses
  • 200
    Type: object · GetOnchainStatusResponse

    Successful response

    • onchainStatus
      Type: object · OnchainStatus
      required
    application/json
Request Example for get/v1/onchain-status
curl /v1/onchain-status
{
  "onchainStatus": {
    "timelockDelaySeconds": 1,
    "contracts": [
      {
        "key": "string",
        "name": "string",
        "address": "string",
        "category": "string",
        "fieldValues": [
          {
            "name": "string",
            "value": "string",
            "valueType": "string",
            "valueLabel": "string"
          }
        ],
        "roles": [
          {
            "roleKey": "string",
            "roleLabel": "string",
            "members": [
              {
                "address": "string",
                "label": "string"
              }
            ]
          }
        ]
      }
    ],
    "registryEntries": [
      {
        "target": "string",
        "targetName": "string",
        "adapter": "string",
        "adapterName": "string"
      }
    ],
    "timelockOperations": [
      {
        "operationId": "string",
        "status": "string",
        "target": "string",
        "targetName": "string",
        "functionName": "string",
        "parameters": [
          {
            "name": "string",
            "value": "string",
            "valueType": "string",
            "valueLabel": "string"
          }
        ],
        "scheduledTransactionHash": "string",
        "executedTransactionHash": "string",
        "delay": 1,
        "unlocksAt": "string"
      }
    ]
  }
}
listSupportedAssets

List supported assets

Lists the base assets (e.g. USDC, WETH) supported for agents on a given chain, along with their observed APY range.

Rate limited to 30 requests/minute, 300 requests/hour.

Path Parameters
  • chainId
    Type: integer · Chainid
    required

    Integer numbers.

Responses
  • 200
    Type: object · GetSupportedAssetsResponse

    Successful response

    • supportedAssets
      Type: array object[] · Supportedassets
      required
    application/json
Request Example for get/v1/chains/{chainId}/supported-assets
curl /v1/chains/8453/supported-assets
{
  "supportedAssets": [
    {
      "asset": {
        "chainId": 1,
        "address": "string",
        "decimals": 1,
        "name": "string",
        "symbol": "string",
        "logoUri": "string",
        "totalSupply": "string",
        "isSpam": true
      },
      "minApy": 1,
      "maxApy": 1
    }
  ]
}
getPlatformStats

Get platform statistics

Returns public aggregate statistics for the YieldSeeker platform, including users, agents, tracked value, earned yield, transaction volume, and active-agent APY percentiles.

Responses
  • 200
    Type: object · GetPlatformStatsResponse

    Successful response

    • agentCount
      Type: integer · Agentcount
      required

      Total number of agents across the platform.

    • apy75thPercentile
      Type: number · Apy75Thpercentile
      required

      75th percentile APY across active agents, expressed as a percentage.

    • apyMax
      Type: number · Apymax
      required

      Maximum APY across active agents, expressed as a percentage.

    • totalTransactionCount
      Type: integer · Totaltransactioncount
      required

      Total number of transactions executed by agents.

    • totalTransactionValueUsd
      Type: number · Totaltransactionvalueusd
      required

      Total value of agent transactions, in USD.

    • totalTvlUsd
      Type: number · Totaltvlusd
      required

      Total value currently tracked across agents, in USD.

    • totalYieldEarnedUsd
      Type: number · Totalyieldearnedusd
      required

      Cumulative yield earned across agents, in USD.

    • userCount
      Type: integer · Usercount
      required

      Total number of registered users.

    application/json
Request Example for get/v1/platform-stats
curl /v1/platform-stats
{
  "userCount": 1,
  "agentCount": 1,
  "totalTvlUsd": 1,
  "totalYieldEarnedUsd": 1,
  "totalTransactionCount": 1,
  "totalTransactionValueUsd": 1,
  "apy75thPercentile": 1,
  "apyMax": 1
}

Users (Collapsed)

Manage the human (or integrator end-user) behind the wallet: create an account, look up details, and update a username. A user can own multiple agents, so these endpoints sit above the per-agent resources below.

Agents (Collapsed)

The core of YieldSeeker: create an agent, deploy its dedicated smart wallet, and track everything it owns - live yield positions, portfolio snapshots, historic performance, and lifetime statistics. This is where you spin up a new autonomous yield-seeking wallet for a user and watch its performance over time, right through to deactivating it once its work is done.

YieldSeeker Docs