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/registerRequest Body
| Field | Type | Description |
|---|---|---|
wallet_address | string | Your wallet address (0x-prefixed hex) |
signature | string | EIP-191 signature of the message |
nonce | integer | Current 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:
| Header | Value |
|---|---|
x-api-key | Your 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 .