Single User Quickstart
This guide covers the fastest single-user path to a working end-to-end approval flow:
- Create a project.
- Issue an API key.
- Add one simple approval rule.
- Pair a signer.
- Run a script with
@beav3r/sdk. - Approve the request from the signer.
Before starting
Estimated time:
10-15 minutes
Required:
- a running Beav3r server
- the Beav3r dashboard at
https://dashboard.beav3r.ai - one active signer paired to the same project
- one project API key with access to the target project
First-run testing note:
- use
https://staging.server.beav3r.aifor staging or first-run evaluation - use
https://server.beav3r.aifor the hosted production server - self-hosted or alternate environments should replace the default base URL in the script or env file
If setup is not complete yet, use the supporting setup docs for projects, signers, and pairing.
Step 1: Create a project and API key
In the Beav3r dashboard at https://dashboard.beav3r.ai:
- Open
Projects. - Create a project.
- Open
Integrations. - Create an API key for that project.
- Copy the key.
Keep the project open. The same project will be used for the rule and signer steps.
Step 2: Add one simple rule
In Policy Studio, create a rule with:
- action type:
payments.send_usdt - user-facing label:
Send USDT - effect:
Require approval - reason:
Require approval above 10 USDT - condition field:
amount - operator:
gt - value:
10
This makes any request above 10 USDT route to signer approval.
Rule-to-payload contract
The technical rule fields must align exactly with the script payload.
| Dashboard rule field | Example value | Script field |
|---|---|---|
| action type | payments.send_usdt | actionType |
| condition field | amount | payload.amount |
| operator | gt | evaluated by policy |
| value | 10 | compared against payload.amount |
| user-facing label | Send USDT | rendered from policy and presentation |
Step 3: Pair a signer
In Integrations:
- Create a pairing session.
- Scan the QR code with the mobile signer.
- Confirm the signer shows as active.
Checkpoint: quick dashboard trigger (before script)
Before running the script, do one quick validation in the dashboard:
- Make sure the project approval mode is
bridge_all(Bridge Every Request). - In
Integrations, openTest trigger. - Send the quick trigger.
- Confirm the request appears in
Inboxand reaches the paired signer.
If this checkpoint works, continue to the SDK script steps below.
Step 4: Run a minimal SDK script
Install the package in an empty folder:
npm init -y
npm install @beav3r/sdkCreate single-user-quickstart.mjs:
import { Beav3r } from '@beav3r/sdk'
const client = new Beav3r({
baseUrl: process.env.BEAV3R_BASE_URL ?? 'https://staging.server.beav3r.ai',
apiKey: process.env.BEAV3R_API_KEY,
agentId: process.env.BEAV3R_AGENT_ID ?? 'single_user_quickstart',
defaultExpirySeconds: Number(process.env.BEAV3R_DEFAULT_EXPIRY_SECONDS ?? 180)
})
const result = await client.guardAndWait(
{
actionType: 'payments.send_usdt',
payload: {
amount: 25,
asset: 'USDT',
network: 'base',
recipient: '0x1111111111111111111111111111111111111111'
},
attributes: {
amount: 25
}
},
{
pollIntervalMs: 2000,
timeoutMs: 5 * 60 * 1000
}
)
console.log(JSON.stringify(result, null, 2))Run it:
BEAV3R_API_KEY=project_api_key node single-user-quickstart.mjsStep 5: Optional demo repo path
The official demo project is also available:
git clone https://github.com/beav3r-ai/beav3r-demo.git
cd beav3r-demo
npm installThen:
cp .env.example .envUpdate .env with the project API key:
BEAV3R_API_KEY=your_project_api_keyRun the included quickstart:
node beav3r-quickstart.mjsExpected result
In Beav3r:
- the request appears in
Inbox - the request status is
pending - the paired signer receives it
Because this example sends 25 USDT, it is above the 10 USDT threshold and should require approval.
After approval:
- the signer returns the decision
- Beav3r updates the action state
- the script logs a final result
Example success output:
{
"status": "approved",
"actionId": "act_demo_123",
"actionHash": "a741740cadadc260ca7e6101b0be43af5328a0d9c95bc7665a8f837c860df4",
"evaluation": {
"decision": "require_approval",
"severity": "elevated",
"reason": "Require approval above 10 USDT"
}
}Typical outcomes:
approved: signer approved the actionexecuted: Beav3r executed the action immediately after approvaldenied: policy denied the action before it reached a signerrejected: signer rejected the actionexpired: the request timed out before a decision
Common mistakes
If the request does not show up:
- check that the API key belongs to the intended project
- confirm the action type matches the rule exactly
- confirm the payload field name matches the rule condition
- confirm the signer is paired to that same project
- verify
BEAV3R_BASE_URLpoints at the running Beav3r server
If the request is denied immediately:
- check the project policy
- look for a deny rule that matches before the approval rule
If the request stays pending:
- check that the signer is still active
- confirm the mobile signer can receive notifications
- increase the script timeout for manual testing