A new API key can generated by calling the /register endpoint.
The endpoint requires the following parameters:
account: the account's Ethereum addresssigning_key: a randomly generated Ethereum addressexpiry: UNIX timestamp in nanosecondsaccount_signature: signature generated using theaccount's private keysigning_key_signature: signature generated using thesigning_key's private key
To generate the signing_key, account_signature and signing_key_signature, you can follow the example code below:
- Generate
signing_key:
const signer = ethers.Wallet.createRandom()- Generate
account_signature:
// First we hash the register data
const registerHash = ethers.utils._TypedDataEncoder.hash(
{
name: "Aevo Mainnet",
version: "1",
chainId: 1,
},
{
Register: [
{ name: "key", type: "address" },
{ name: "expiry", type: "uint256" },
],
},
{
key: await signer.getAddress(),
expiry: ethers.constants.MaxUint256.toString(),
}
);
// Then we sign the hash
const res = await promisify(provider.provider.sendAsync)({
method: "eth_sign",
params: [account.toLowerCase(), registerHash],
});
// This is the account_signature
const accountSignature = res.result;- Generate
signing_key_signature:
// This is the signing_key_signature
const signingKeySignature = await signer._signTypedData(
{
name: "Aevo Mainnet",
version: "1",
chainId: 1,
},
{
SignKey: [{ name: "account", type: "address" }],
},
{
account: your_wallet_address
}
);