Overview
The Earn contract address (the same on every chain) and per-chain
display names and minimum strategy sizes. A chain missing from
chains is not currently served. minStrategyUsdc is sizing
guidance only, not enforced by POST /v1/strategies. banner is the
first-party announcement strip the Earn app renders above its nav, and
is null whenever none is active. Responses carry
Cache-Control: public, max-age=300.
Endpoint
GET https://earn-api.quicknode.dev/functions/v1/api/v1/config
Authorization
Include the published apikey header. This read request is public and does not require a SIWE signature.
Parameters
This endpoint does not accept path or query parameters.
Example request
curl --request GET \
--url 'https://earn-api.quicknode.dev/functions/v1/api/v1/config' \
--header 'Accept: application/json' \
--header 'apikey: <EARN_PUBLIC_API_KEY>'
Response
| Field | Type | Required | Description |
|---|---|---|---|
| earnContract | string | Yes | The Quicknode Earn contract address (the same on every chain). |
| chains | array<object> | Yes | One entry per served chain; a chain missing here is not currently served. |
| chains[].chainId | integer | Yes | Numeric identifier of the served chain. |
| chains[].name | string | Yes | Display name of the chain. |
| chains[].minStrategyUsdc | number | null | Yes | Suggested minimum strategy size in decimal USDC. This is UI guidance and is not enforced by `POST /v1/strategies`. Returns null when unset. |
| banner | object | null | Yes | Site-wide announcement banner, or null when none is active. |
| banner.text | string | When present | Message displayed in the announcement banner. |
| banner.buttonCta | string | When present | Label displayed on the banner button. |
| banner.buttonIcon | string | null | When present | HTTPS URL or site-relative path of the icon displayed beside the button label. Returns null when unset. |
| banner.buttonUrl | string | When present | HTTPS destination opened by the banner button. |
Example response
{
"earnContract": "0x48b415841165304f7EfaA7D5dD5FC65cc7B4bd8e",
"chains": [
{
"chainId": 1,
"name": "Ethereum",
"minStrategyUsdc": 5000
},
{
"chainId": 10,
"name": "Optimism",
"minStrategyUsdc": 250
},
{
"chainId": 130,
"name": "Unichain",
"minStrategyUsdc": 250
},
{
"chainId": 137,
"name": "Polygon",
"minStrategyUsdc": 500
},
{
"chainId": 143,
"name": "Monad",
"minStrategyUsdc": 250
},
{
"chainId": 8453,
"name": "Base",
"minStrategyUsdc": 500
},
{
"chainId": 42161,
"name": "Arbitrum",
"minStrategyUsdc": 500
}
],
"banner": {
"text": "Join the Quicknode Earn Telegram Group To Chat And Stay Up To Date",
"buttonCta": "Telegram",
"buttonIcon": "/banner/telegram.svg",
"buttonUrl": "https://t.me/quicknode_earn"
}
}
HTTP responses
| Status | Description |
|---|---|
| 200 | The deployment config. |
| 429 | Rate limit exceeded. `Retry-After` (seconds) tells you when to retry. Reads, feedback, and push writes are keyed per IP; create/update/delete are keyed per wallet+IP; deposit/withdraw/claim calldata is keyed per strategy+IP. |
| 500 | Deployment config unavailable. |
OpenAPI source
This page is based on operation getDeploymentConfig in the Earn OpenAPI 3.1 specification.