Skip to main content
Version: 1.0.0

1delta API v1

Unified API for DeFi data and actions.

Machine-readable spec

ArtefactURL
OpenAPI 3.1 (enriched, what this site renders)https://docs.1delta.io/openapi.json
OpenAPI 3.1 (raw, from the API server)https://portal.1delta.io/v1/openapi.json
Endpoint index for LLMshttps://docs.1delta.io/llms.txt
Full flattened reference for LLMshttps://docs.1delta.io/llms-full.txt

If you are pointing a coding agent at this API, give it llms-full.txt — it carries every endpoint, parameter, field and example as plain text, with no JavaScript required.

Authentication & rate limits

Every endpoint is public. Send an API key as the x-api-key header to raise your rate limit; get one at auth.1delta.io. Unauthenticated traffic is limited per IP — treat 429 as retryable with exponential backoff rather than assuming a fixed budget.

There is no authentication failure mode: an unrecognised key is ignored rather than rejected, so a request never fails with 401 because of a bad key.

Response Envelope

Every endpoint returns a consistent JSON envelope. Integrators can rely on the same top-level shape regardless of the endpoint called.

Success

{
"success": true,
"data": { ... },
"actions": { "transactions": [...], "permissions": [...] } | null
}
  • data — Informational payload (market data, quotes, simulation results, user positions, etc.). Present on all responses; null when the endpoint only produces transaction calldata with no additional info.
  • actions — Transaction calldata and approval/permission transactions that the caller should execute on-chain. Only populated by action endpoints; null on data endpoints.
    • actions.transactions — Array of { to, data, value } objects ready to be sent as EVM transactions.
    • actions.permissions — Envelope-level array of approval/permission transactions (ERC-20 approves, credit delegations) that must be executed before the main transactions. Each entry has a human-readable description.

Note on permissions vs permissionTxns: the envelope exposes a single deduplicated actions.permissions array. Inside richer action responses (e.g. loop alternatives), each individual quote also carries its own permissionTxns — the per-quote subset needed if that specific alternative is executed. Most integrators only need actions.permissions.

Error

{
"success": false,
"error": { "code": "MISSING_PARAM", "message": "marketUid is required" }
}
  • error.code — Machine-readable error code (e.g. MISSING_PARAM, INVALID_PARAM, ACTION_FAILED, NOT_FOUND, ORIGIN_FAILED).
  • error.message — Human-readable description.

The envelope is the same for every failure, so success is the only field you need to branch on. Note that a missing or malformed required parameter currently surfaces as HTTP 502 with error.code = ORIGIN_FAILED rather than a 400 — branch on success, not on the status code. See Errors & retries.


Identifiers

Most endpoints address a market with a marketUid: lender:chainId:address, e.g. AAVE_V3:1:0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2. The lender segment comes from the LenderId set and address is the underlying asset, not the receipt token. See Market identifiers.


Data (/v1/data/*)

Cacheable market data, prices, yields, and user positions. These endpoints always return actions: null — only the data field is populated.

Actions (/v1/actions/*)

Transaction builders organized by category:

  • Lending — deposit, withdraw, borrow, repay, mode, enable-collateral, repay-with-atoken
  • Loop — leverage, close, collateral-swap, debt-swap, migrate (cross-lender), refinance (see also Data › Loop for range calculations)
  • Swap — spot (same-chain meta-aggregator), x-chain (bridge aggregation)
  • Allocate — batch operations

All action endpoints support GET (query parameters only) and POST (query parameters + JSON body for post-trade simulation). The allocate endpoint is POST-only.

For loop and swap operations, omit account for a quote-only response (data contains quotes, actions is null), or include it to build full transaction calldata (actions is populated with ready-to-send transactions).

Action endpoints never sign or broadcast anything. They return calldata; your wallet or signer sends it. Execute actions.permissions first, then one transaction from actions.transactions (or exactly one entry from actions.alternatives where present). See the Quickstart.

Simulation (POST)

POST the same query parameters as GET, plus a JSON body with the user's current balanceData and aprData. The response includes the standard fields plus a simulation object in data with projected post-trade health factor, borrow capacity, and APR data.

Execution Modes (lending only)

  • direct (default): Raw protocol interaction (deposit/withdraw/borrow/repay only)
  • proxy: Routes through 1delta composer contracts

Authentication

Optional. Without a key, requests are limited to 10 per 15 minutes. Get your key from https://auth.1delta.io/

Security Scheme Type:

apiKey

Header parameter name:

x-api-key