Skip to main content

Documentation Index

Fetch the complete documentation index at: https://yieldxyz.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Overview

This guide walks through every capability of the Yield.xyz Programmatic API. Use it to automate project provisioning, API key lifecycle, yield enablement, fee configuration, and reporting — all without touching the dashboard.
For background on what Programmatic Access is and when to use it, see the Programmatic Access documentation.

Prerequisites

Before you begin, you need a Programmatic Access API Key:
1

Log in to the dashboard

2

Open the Developers section

Click your avatar (top-right) → </> Developers
3

Create an Admin API Key

Click Create API Key and store the key securely — it is only displayed once
Description
All requests in this guide require the following header:
X-ADMIN-API-KEY: <your-admin-api-key>
Base URL:
https://api.stakek.it

Projects

A project maps to a logical grouping — typically one per client, workspace, or environment. Each project has its own API keys, enabled yields, and fee configurations.

Create a Project

curl -X POST https://api.stakek.it/v1/programmatic/projects \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Corp",
    "description": "Production yield integration"
  }'
Response:
{
  "id": "b1c2d3e4-...",
  "name": "Acme Corp",
  "description": "Production yield integration",
  "teamId": "a1b2c3d4-...",
  "autoComplaintBansEnabled": false,
  "createdAt": "2026-03-05T10:00:00.000Z",
  "updatedAt": "2026-03-05T10:00:00.000Z",
  "deletedAt": null
}

List Projects

curl https://api.stakek.it/v1/programmatic/projects \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>"
Returns all projects belonging to your team.

Update a Project

curl -X PATCH https://api.stakek.it/v1/programmatic/projects/{projectId} \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Corp (Updated)",
    "autoComplaintBansEnabled": true
  }'
FieldTypeRequiredDescription
namestringNoUpdated project name
descriptionstringNoUpdated description
autoComplaintBansEnabledbooleanNoEnable/disable auto-ban on complaints

Delete a Project

curl -X DELETE https://api.stakek.it/v1/programmatic/projects/{projectId} \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>"
Soft-deletes the project and associated resources.

API Keys

API keys are scoped to a project. These are the keys your application passes to the Yield API (X-API-KEY header) for staking, balance, and action requests.

Create a Key

curl -X POST https://api.stakek.it/v1/programmatic/projects/{projectId}/keys \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production Key",
    "info": "Used by backend services"
  }'
Response:
{
  "id": "k1e2y3...",
  "apiKey": "sk_live_32refr-rwer231...",
  "name": "Production Key",
  "info": "Used by backend services",
  "category": "default",
  "projectId": "b1c2d3e4-...",
  "lastUsedAt": null,
  "createdAt": "2026-03-05T10:00:00.000Z",
  "updatedAt": "2026-03-05T10:00:00.000Z",
  "deletedAt": null
}
The apiKey value is only returned at creation time. Store it securely immediately — you will not be able to retrieve it again.

List Keys

curl https://api.stakek.it/v1/programmatic/projects/{projectId}/keys \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>"

Update a Key

curl -X PATCH https://api.stakek.it/v1/programmatic/projects/{projectId}/keys/{keyId} \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated Key Name",
    "info": "Updated metadata"
  }'

Delete a Key

curl -X DELETE https://api.stakek.it/v1/programmatic/projects/{projectId}/keys/{keyId} \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>"
Soft-deletes the key. It will no longer authenticate Yield API requests.

Enabled Yields

Control which yield integrations are available for a project. An integration is a specific yield opportunity identified by an integrationId (e.g., ethereum-eth-lido-staking, optimism-usdt-aave-v3-lending).

List Enabled Yields

curl "https://api.stakek.it/v1/programmatic/projects/{projectId}/yields/enabled?page=1&limit=10" \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>"
Response:
{
  "data": [
    { "integrationId": "ethereum-eth-lido-staking" },
    { "integrationId": "optimism-usdt-aave-v3-lending" }
  ],
  "hasNextPage": false,
  "page": 1,
  "limit": 10
}
Query ParameterTypeDefaultDescription
pagenumber1Page number
limitnumber10Items per page

Enable Yields (Bulk)

curl -X POST https://api.stakek.it/v1/programmatic/projects/{projectId}/yields/enabled \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>" \
  -H "Content-Type: application/json" \
  -d '[
    { "integrationId": "ethereum-eth-lido-staking" },
    { "integrationId": "optimism-usdt-aave-v3-lending" },
    { "integrationId": "arbitrum-eth-aave-v3-lending" }
  ]'
You can curate bundles of yield integrations (e.g., “Stablecoin Conservative”, “Blue-chip DeFi”) and enable an entire bundle in a single call by passing all the relevant integrationId values.

Disable a Single Yield

curl -X DELETE https://api.stakek.it/v1/programmatic/projects/{projectId}/yields/enabled/{integrationId} \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>"

Disable Yields (Bulk)

curl -X DELETE https://api.stakek.it/v1/programmatic/projects/{projectId}/yields/enabled \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "integrationIds": [
      "ethereum-eth-lido-staking",
      "optimism-usdt-aave-v3-lending"
    ]
  }'

Fee Configuration

Configure fees on a per-integration basis within a project. Fees are expressed in basis points (bps), where 100 bps = 1%.
Applying fees may require Yield.xyz to deploy onchain infrastructure (e.g., an OAV or fee wrapper). The fee configuration status reflects this lifecycle: REQUESTEDPROCESSINGLIVE.

Create a Fee Configuration

curl -X POST https://api.stakek.it/v1/programmatic/projects/{projectId}/fee-configuration \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "integrationId": "optimism-usdt-aave-v3-lending",
    "depositFeeBps": 50,
    "performanceFeeBps": 1000
  }'
This configures a 0.5% deposit fee and 10% performance fee on the Aave USDT lending pool on Optimism. Response:
{
  "id": "fc1e2...",
  "projectId": "b1c2d3e4-...",
  "integrationId": "optimism-usdt-aave-v3-lending",
  "depositFeeBps": 50,
  "managementFeeBps": null,
  "performanceFeeBps": 1000,
  "allocatorVaultContractAddress": null,
  "feeWrapperContractAddress": null,
  "status": "REQUESTED"
}
FieldTypeRequiredDescription
integrationIdstringYesTarget yield integration
depositFeeBpsnumberNoDeposit fee in bps (1–10000)
managementFeeBpsnumberNoManagement fee in bps (1–10000)
performanceFeeBpsnumberNoPerformance fee in bps (1–10000)

List Fee Configurations

curl "https://api.stakek.it/v1/programmatic/projects/{projectId}/fee-configuration?page=1&limit=10" \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>"

Update a Fee Configuration

curl -X PATCH https://api.stakek.it/v1/programmatic/projects/{projectId}/fee-configuration/{feeConfigurationId} \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "performanceFeeBps": 500
  }'
Pass null for a fee field to remove it.

Delete a Fee Configuration

curl -X DELETE https://api.stakek.it/v1/programmatic/projects/{projectId}/fee-configuration/{feeConfigurationId} \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>"

Reports

Pull transaction and staking activity across all projects belonging to your team. Use query parameters to filter and sort results.

List Report Entries

curl "https://api.stakek.it/v1/programmatic/report-entries?page=1&limit=10&sort=createdAtDesc" \
  -H "X-ADMIN-API-KEY: <your-admin-api-key>"
Query ParameterTypeDescription
projectIdstringFilter by project
integrationIdstringFilter by yield integration
walletAddressstringFilter by wallet address
validatorAddressstringFilter by validator address
statusstringFilter by action status (SUCCESS, FAILED, PROCESSING, etc.)
typestringFilter by action type (STAKE, UNSTAKE, CLAIM_REWARDS, etc.)
sortstringcreatedAtAsc or createdAtDesc
pagenumberPage number
limitnumberItems per page
Response:
{
  "data": [
    {
      "address": {
        "address": "0xabc..."
      },
      "action": {
        "id": "act-123",
        "integrationId": "ethereum-eth-lido-staking",
        "type": "STAKE",
        "status": "SUCCESS",
        "amount": "1.5",
        "USDAmount": "4500.00",
        "createdAt": "2026-02-20T12:00:00.000Z",
        "completedAt": "2026-02-20T12:05:00.000Z"
      },
      "metadata": {
        "name": "Lido Staking",
        "type": "liquid-staking"
      }
    }
  ],
  "hasNextPage": true,
  "page": 1,
  "limit": 10
}

A typical integration follows this sequence when onboarding a new client or workspace:
1

Create a project

POST /v1/programmatic/projects — one project per client or workspace
2

Mint an API key

POST /v1/programmatic/projects/{projectId}/keys — the key is used by the client or your backend to call the Yield API
3

Enable yields

POST /v1/programmatic/projects/{projectId}/yields/enabled — enable a curated set of yield integrations
4

Configure fees (optional)

POST /v1/programmatic/projects/{projectId}/fee-configuration — apply deposit, management, or performance fees
5

Monitor with reports

GET /v1/programmatic/report-entries — pull activity data for reconciliation and analytics

Fee Configuration Lifecycle

When a fee configuration is created, it may go through several statuses before becoming active:
StatusDescription
REQUESTEDFee configuration has been submitted
PROCESSINGYield.xyz is deploying the required onchain infrastructure (OAV or fee wrapper)
LIVEFee configuration is active and being applied
CHANGES_REQUESTEDAn update has been requested and is being processed
Some fee configurations require Yield.xyz to deploy a dedicated Optimized Allocator Vault (OAV) or fee wrapper contract onchain. This is handled automatically — the status field reflects the deployment progress.

OpenAPI Specification

The full OpenAPI specification for the Programmatic API is available directly in the Yield.xyz dashboard:
  1. Log in to dashboard.yield.xyz
  2. Click your avatar → </> Developers
  3. The OpenAPI spec is displayed in the developer section
Description

Next Steps

Programmatic Access Docs

Overview of capabilities and authentication

Fee Configuration

Learn more about how fees work in Yield.xyz

Projects & API Keys

Understand project and key concepts

OAVs

Learn about Optimized Allocator Vaults