Skip to main content

Programmatic Access

Automate yield.xyz dashboard operations through the Programmatic API. This skill enables an AI agent to manage projects, API keys, yield enablement, fee configuration, and reporting without manual dashboard interaction.

When to Use

Activate this skill when the user asks to:
  • Create, list, update, or delete yield.xyz projects
  • Generate, rotate, or revoke API keys for a project
  • Enable or disable yield integrations for a project
  • Configure deposit, management, or performance fees
  • Pull transaction or staking reports across projects
  • Set up automated provisioning for new clients or workspaces
  • Query the status of fee configurations (REQUESTED, PROCESSING, LIVE)
  • Work with the admin/programmatic API (not the standard Yield API)

Authentication

The Programmatic API uses a separate Admin API Key, distinct from project-level Yield API keys. All requests require:
This key is obtained from the yield.xyz dashboard:
  1. Log in to the yield.xyz dashboard as an owner or admin.
  2. Open the Programmatic Access page, under Admin API keys.
  3. Create an admin API key.
The admin key is scoped to your team. It is shown only once at creation time and must be stored securely. It is a separate credential from project API keys and is not part of the public API reference.

Base URL

All programmatic endpoints are under /v1/programmatic/.

Step-by-Step Instructions

Step 1: Manage Projects

Projects are the top-level organizational unit. Typically one project per client, workspace, or environment. Create a project:
Response includes id, name, description, teamId, createdAt, updatedAt. List projects:
Update a project:
Delete a project:

Step 2: Manage API Keys

API keys are scoped to a project. These keys authenticate Yield API requests through the x-api-key header. Create a key:
IMPORTANT: The apiKey field is only returned at creation time. Store it immediately. List keys:
Update a key:
Delete (revoke) a key:

Step 3: Enable / Disable Yields

Control which yield integrations are available per project. Integration IDs follow the pattern {network}-{token}-{provider}-{type} (e.g., ethereum-eth-lido-staking). List enabled yields:
Enable yields (bulk):
Disable a single yield:
Disable yields (bulk):

Step 4: Configure Fees

Fees are set per integration, per project. Values are in basis points (100 bps = 1%). Create a fee configuration:
Fee configuration fields: Fee configuration lifecycle statuses: List fee configurations:
Update a fee configuration:
Pass null for a fee field to remove it. Delete a fee configuration:

Step 5: Pull Reports

Query transaction and staking activity across all projects.
Query parameters:

Provisioning Flow

When onboarding a new client or workspace, follow this sequence:
  1. POST /v1/programmatic/projects: Create a project
  2. POST /v1/programmatic/projects/{projectId}/keys: Mint an API key (store the apiKey value immediately)
  3. POST /v1/programmatic/projects/{projectId}/yields/enabled: Enable a curated set of yields
  4. POST /v1/programmatic/projects/{projectId}/fee-configuration: Apply fees (optional)
  5. GET /v1/programmatic/report-entries?projectId={projectId}: Monitor activity

Endpoint Reference

Error Handling

Edge Cases

  • Admin key vs project key: The X-ADMIN-API-KEY is for programmatic/admin endpoints only. Project-level keys (x-api-key) are for the standard Yield API (discovery, balances, actions).
  • Key shown once: The apiKey field on key creation is the only time the raw key value is returned. It cannot be retrieved again.
  • Fee deployment time: Fee configurations with status PROCESSING may take time as yield.xyz deploys onchain infrastructure (OAV or fee wrapper contracts).
  • Soft deletes: Deleting projects and keys are soft-deletes, the deletedAt field is set, and the resource stops functioning but is retained for auditing.
  • Pagination: All list endpoints support page and limit query parameters. Check hasNextPage to determine if more results exist.
  • Curated bundles: You can pre-define bundles of integration IDs (e.g., “Stablecoin Conservative”) and enable them in a single bulk call.