Skip to content
Alchemy Logo

Admin API Quickstart

Create, configure, and manage an app using the Admin API.

This guide walks through creating an app, retrieving its details, updating its configuration, and deleting it.

  • An access key with App Management write permissions
    • Refer to the overview authentication section for instructions to create an access key

export ALCHEMY_ADMIN_BASE_URL="https://admin-api.alchemy.com/v1"
export ALCHEMY_ADMIN_ACCESS_KEY="YOUR_ACCESS_KEY_HERE"

Auth Header

export ALCHEMY_ADMIN_AUTH_HEADER="Authorization: Bearer $ALCHEMY_ADMIN_ACCESS_KEY"

Use this endpoint to retrieve the list of supported networks and their identifiers. These values are required when configuring network allowlists.

curl "$ALCHEMY_ADMIN_BASE_URL/chains" \
  -H "$ALCHEMY_ADMIN_AUTH_HEADER"

Create a new app by providing a name, description, and supported networks.

curl -X POST "$ALCHEMY_ADMIN_BASE_URL/apps" \
  -H "Content-Type: application/json" \
  -H "$ALCHEMY_ADMIN_AUTH_HEADER" \
  -d '{
    "name": "My App",
    "description": "Example app",
    "networkAllowlist": ["ETH_MAINNET", "ARB_MAINNET"],
    "products": ["node-api", "webhooks"]
  }'

Example response:

{
  "data": {
    "id": "k5c99fzeegrljz2i",
    "name": "Test App",
    "description": "App for full workflow test",
    "apiKey": "Ow7sB2EbdOgDvAU5P3N0V",
    "webhookApiKey": "1JIfTRjWbCv4gZS2IWEyTxKHO8eqa2C7",
    "chainNetworks": [
      {
        "name": "Ethereum Mainnet",
        "id": "ETH_MAINNET",
        "networkChainId": "1",
        "rpcUrl": "https://eth-mainnet.g.alchemy.com/v2/Ow7sB2EbdOgDvAU5P3N0V",
        "wsUrl": "wss://eth-mainnet.g.alchemy.com/v2/Ow7sB2EbdOgDvAU5P3N0V"
      }
    ],
    "products": [],
    "addressAllowlist": [],
    "originAllowlist": [],
    "ipAllowlist": [],
    "createdAt": "2026-02-05T16:03:03.121+00:00"
  }
}

Retrieve details for a single app using its app_id.

APP_ID="app_123"
 
curl "$ALCHEMY_ADMIN_BASE_URL/apps/$APP_ID" \
  -H "$ALCHEMY_ADMIN_AUTH_HEADER"

App updates are split between metadata updates and configuration updates.

  • Use PATCH /apps/{app_id} to update name or description
  • Use configuration sub-endpoints to update networks, allowlists, and IP restrictions

APP_ID="app_123"
 
curl -X PATCH "$ALCHEMY_ADMIN_BASE_URL/apps/$APP_ID" \
  -H "Content-Type: application/json" \
  -H "$ALCHEMY_ADMIN_AUTH_HEADER" \
  -d '{
    "name": "Renamed App",
    "description": "Updated description"
  }'

Update the set of networks this app is allowed to access. Network values must come from the Chains endpoint. The networks provided will replace the current list.

APP_ID="app_123"
 
curl -X PUT "$ALCHEMY_ADMIN_BASE_URL/apps/$APP_ID/networks" \
  -H "Content-Type: application/json" \
  -H "$ALCHEMY_ADMIN_AUTH_HEADER" \
  -d '{
    "networkAllowlist": ["ETH_MAINNET", "OPT_MAINNET"]
  }'

Update the origin URLs available for this app.

APP_ID="app_123"
 
curl -X PUT "$ALCHEMY_ADMIN_BASE_URL/apps/$APP_ID/origin-allowlist" \
  -H "Content-Type: application/json" \
  -H "$ALCHEMY_ADMIN_AUTH_HEADER" \
  -d '{
    "originAllowlist": [
      { "name": "Test Origin", "value": "https://example.com" }
    ]
  }'

Update the IP addresses that can send requests via this app.

APP_ID="app_123"
 
curl -X PUT "$ALCHEMY_ADMIN_BASE_URL/apps/$APP_ID/ip-allowlist" \
  -H "Content-Type: application/json" \
  -H "$ALCHEMY_ADMIN_AUTH_HEADER" \
  -d '{
    "ipAllowlist": [
      { "name": "Test IP", "value": "203.0.113.1" }
    ]
  }'

Permanently delete an app. This action cannot be undone.

APP_ID="app_123"
 
curl -X DELETE "$ALCHEMY_ADMIN_BASE_URL/apps/$APP_ID" \
  -H "$ALCHEMY_ADMIN_AUTH_HEADER"
Was this page helpful?