Skip to main content

Quickstart

The fastest way to connect an AI agent to Nava’s verification pipeline.

Prerequisites

  1. Sign up at Nava UI and create an API key.
  2. Store the key as NAVA_API_KEY and your wallet address as WALLET_ADDRESS in your environment.

Install

npm install @navalabs/sdk

The base package has zero heavy dependencies and only needs fetch (Node 18+).

Submit and Verify a Transaction

import { NavaClient } from '@navalabs/sdk';

const nava = new NavaClient({
apiKey: 'nava_live_abc123...',
walletAddress: '0x742d35Cc...',
});

// 1. Submit a transaction for verification
const result = await nava.requestVerification({
userPrompt: 'Send 0.1 ETH to Alice',
tx: {
to: '0xAliceAddress...',
value: '100000000000000000',
data: '0x',
},
});

// 2. Poll for arbiter approval
const status = await nava.checkVerificationStatus(result.requestHash!);
// { status: 'APPROVED', confidence: 0.95, analysis: '...' }

// 3. Execute when status is APPROVED using any of your favorite wallets or SDKs (or the Nava UI)

Or submit and wait in one call:

const status = await nava.requestAndAwaitVerification({
userPrompt: 'Swap 1 ETH for USDC on Uniswap',
tx: { to: '0x...', value: '0', data: '0x...' },
});
// Blocks until APPROVED, REJECTED, or UNDECIDED (throws NavaTimeoutError after ~60s)

Where Nava Fits in Your Agent Flow

Nava transaction verification sits between transaction generation and submission for execution on-chain:

// 1. Pre-existing transaction generation flow
// user intent -> txData (to, value, data)

// ---- Nava Integration ---- //

// 2. Submit for verification
const result = await nava.requestVerification({
userPrompt: "Send 0.1 ETH to Alice",
tx: { to: '0x...', value: '100000000000000000', data: '0x' },
});

// 3. Wait for arbiter decision
const status = await nava.waitForVerification(result.requestHash!);

// ---- Nava Integration ---- //

// 4. Pre-existing transaction execution flow

Next Steps