Agent Access

Registration

Register your wallet and obtain an API key using EIP-191 signature authentication

Registration Flow

Agent Access uses EIP-191 wallet signature authentication for registration. You sign a message with your wallet's private key, and HyperETH verifies the signature to create your account and API key.

Create a nonce using the current timestamp in milliseconds. The nonce must be within 60 seconds of the server time.

Sign the message Register HyperETH: {nonce} using EIP-191 (personal_sign).

Submit the wallet address, signature, and nonce to POST /v2/account/register.

The response contains your API key (prefixed with api_). Store it securely.

Register Endpoint

POST /v2/account/register

Request Body

FieldTypeDescription
wallet_addressstringYour wallet address (0x-prefixed hex)
signaturestringEIP-191 signature of the message
nonceintegerCurrent timestamp in milliseconds (must be within 60 seconds of server time)

Message Format

The message to sign is:

Register HyperETH: {nonce}

For example, with nonce 1710000000000, the message is "Register HyperETH: 1710000000000".

Response

{
  "api_key": "api_1a2b3c4d5e6f7g8h9i0j",
  "wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
  "created_at": "2026-03-18T15:30:00Z"
}

Each call to /v2/account/register creates a new API key. A single wallet can have multiple API keys. All credentials are tied to your wallet address.

API Key Authentication

After registration, all requests require the x-api-key header:

HeaderValue
x-api-keyYour API key from registration (e.g., api_1a2b3c4d5e6f7g8h9i0j)

Code Examples

Python

import time
import requests
from eth_account import Account
from eth_account.messages import encode_defunct

# Your wallet private key
private_key = "0x..."

# Generate nonce (current timestamp in milliseconds)
nonce = int(time.time() * 1000)

# Create message to sign
message = f"Register HyperETH: {nonce}"

# Sign with EIP-191
account = Account.from_key(private_key)
msg = encode_defunct(text=message)
signed = Account.sign_message(msg, private_key)

# Register
resp = requests.post(
    "https://api.hypereth.io/v2/account/register",
    json={
        "wallet_address": account.address,
        "signature": signed.signature.hex(),
        "nonce": nonce,
    },
)
response = resp.json()
print(f"API Key: {response['api_key']}")

cURL

WALLET_PRIVATE_KEY="0x..."

# Generate signature using Python helper
REGISTER_PAYLOAD=$(python3 << 'EOF'
import json, time
from eth_account import Account
from eth_account.messages import encode_defunct

private_key = "$WALLET_PRIVATE_KEY"
nonce = int(time.time() * 1000)
message = f"Register HyperETH: {nonce}"
account = Account.from_key(private_key)
msg = encode_defunct(text=message)
signed = Account.sign_message(msg, private_key)
print(json.dumps({
    "wallet_address": account.address,
    "signature": signed.signature.hex(),
    "nonce": nonce
}))
EOF
)

# Register
curl -s -X POST "https://api.hypereth.io/v2/account/register" \
  -H "Content-Type: application/json" \
  -d "$REGISTER_PAYLOAD" | jq .

Making Authenticated Requests

Once you have your API key, include it in all subsequent requests:

import requests

api_key = "api_1a2b3c4d5e6f7g8h9i0j"

headers = {
    "x-api-key": api_key,
    "Content-Type": "application/json",
}

# Example: list configured venues
resp = requests.get(
    "https://api.hypereth.io/v2/account/venues",
    headers=headers,
)
print(resp.json())
# cURL example
curl -s "https://api.hypereth.io/v2/account/venues" \
  -H "x-api-key: $API_KEY" | jq .

On this page