Skip to main content

Getting Started

Set up and run an Airnode in under 5 minutes.

Who should run an Airnode​

Airnode is designed for API providers to serve their own data on-chain. You should be the API provider or an authorized representative of the API provider. This is what makes Airnode a first-party oracle — the entity that controls the data source also controls the signing key.

If you are not the API provider, the trust properties change fundamentally. Consumers cannot verify that you are honestly relaying data from the upstream API, and DNS identity verification will only prove your domain — not the API provider's. See the Trust Model for details.

1. Generate a key​

airnode generate-mnemonic

This outputs a BIP-39 mnemonic and its corresponding Ethereum address. The address is your Airnode's on-chain identity. (airnode address re-derives it later from AIRNODE_MNEMONIC or AIRNODE_PRIVATE_KEY.)

2. Create config.yaml​

version: '1.0'

server:
port: 3000
host: '0.0.0.0'
rateLimit:
trustForwardedFor: false
window: 60000
max: 100
x402:
window: 60000
max: 30

settings:
maxConcurrentApiCalls: 50
proof: none

apis:
- name: MyAPI
url: https://api.example.com
endpoints:
- name: getPrice
path: /price
method: GET
parameters:
- name: symbol
in: query
required: true
encoding:
type: int256
path: $.price
times: '1e18'

See the Config Reference for all available fields.

3. Create .env​

AIRNODE_MNEMONIC=your twelve word mnemonic ... # from step 1 (or AIRNODE_PRIVATE_KEY=0x...)

Add any environment variables referenced in your config (e.g., ${COINGECKO_API_KEY}).

4. Validate​

airnode config validate -c config.yaml

Fix any schema errors before starting.

5. Start​

airnode start

The server starts and logs the airnode address, port, and number of endpoints.

6. Test​

curl http://localhost:3000/health

Expected response:

{
"status": "ok",
"airnode": "0x..."
}

Environment variables​

VariableRequiredDescription
AIRNODE_MNEMONICYes*BIP-39 mnemonic. Signs all responses. Takes precedence over AIRNODE_PRIVATE_KEY.
AIRNODE_PRIVATE_KEYYes*Hex-encoded private key (with 0x prefix). Signs all responses.
LOG_FORMATNotext (default) or json.
LOG_LEVELNodebug, info (default), warn, or error.

* At least one of AIRNODE_MNEMONIC or AIRNODE_PRIVATE_KEY is required. If both are set, the mnemonic takes precedence.

Bun automatically loads .env files from the working directory.

CLI flags​

FlagDefaultDescription
-c, --config <path>config.yamlPath to the config file.
-e, --env <path>.envPath to the .env file.

Next steps​