Passer au contenu principal

Installation

npm install @agentwallex/sdk

Initialisation du client

import { AgentWallex } from "@agentwallex/sdk";

const aw = new AgentWallex({
  apiKey: process.env.AGENTWALLEX_API_KEY!,
  environment: "sandbox",  // "sandbox" | "production"
  baseUrl: undefined,       // Custom endpoint (optional)
  timeout: 30000,           // Request timeout in ms (default: 30000)
});
ParametreTypePar defautDescription
apiKeystringRequisVotre cle API (awx_...)
environment"sandbox" | "production""sandbox"Environnement cible
baseUrlstringURL de base personnalisee (remplace l’environnement)
timeoutnumber30000Timeout de requete en millisecondes

Agents

aw.agents.create(params)

Creez un nouvel agent avec un portefeuille securise par MPC.
const agent = await aw.agents.create({
  name: "my-agent",
  chain: "eip155:8453",
  policies: {
    maxTransactionAmount: "100",
    dailyLimit: "1000",
    allowedAddresses: ["0x..."],
    allowedTokens: ["USDC"],
    requireHumanApproval: false,
  },
  metadata: { team: "growth" },
});
Retourne :
ChampTypeDescription
idstringIdentifiant unique de l’agent
namestringNom d’affichage de l’agent
wallet.addressstringAdresse du portefeuille on-chain
wallet.chainstringIdentifiant de chaine CAIP-2
statusstring"active" ou "frozen"
createdAtstringHorodatage ISO 8601

aw.agents.get(agentId)

Recuperez un agent par ID.
const agent = await aw.agents.get("agent_abc123");

aw.agents.list(params?)

Listez tous les agents de votre compte.
const { agents, pagination } = await aw.agents.list({
  limit: 20,
  offset: 0,
  status: "active",
});

aw.agents.freeze(agentId)

Gelez immediatement le portefeuille d’un agent, empechant toutes les transactions.
await aw.agents.freeze("agent_abc123");

aw.agents.unfreeze(agentId)

Reactiver le portefeuille d’un agent apres un gel (soumis a une periode de refroidissement de 10 minutes).
await aw.agents.unfreeze("agent_abc123");

Paiements

aw.payments.send(params)

Envoyez un paiement on-chain direct.
const tx = await aw.payments.send({
  agentId: "agent_abc123",
  to: "0xRecipientAddress",
  amount: "50.00",
  token: "USDC",
  memo: "Payment for API access",
});
Retourne :
ChampTypeDescription
idstringID de la transaction
hashstringHash de la transaction on-chain
statusstring"pending", "confirmed", "failed"
amountstringMontant envoye
tokenstringSymbole du jeton
feestringFrais de gas reseau payes

aw.payments.get(transactionId)

Obtenez les details et le statut d’une transaction.
const tx = await aw.payments.get("tx_xyz789");

aw.payments.list(params)

Listez les transactions d’un agent.
const { transactions } = await aw.payments.list({
  agentId: "agent_abc123",
  limit: 50,
  status: "confirmed",
});

Micropaiements x402

aw.x402.createSession(params)

Creez une session de paiement x402 avec un budget de depenses.
const session = await aw.x402.createSession({
  agentId: "agent_abc123",
  budgetLimit: "100.00",
  chain: "eip155:84532",
  ttlSeconds: 3600,
  allowedUrls: ["https://paid-api.example.com/v1/data"],
});

aw.x402.check(params)

Verifiez si une URL cible supporte la negociation de paiement x402.
const info = await aw.x402.check({
  url: "https://paid-api.example.com/v1/data",
});

aw.x402.pay(params)

Negociez et completez un paiement x402.
const result = await aw.x402.pay({
  agentId: "agent_abc123",
  targetUrl: "https://paid-api.example.com/v1/data",
  sessionId: session.id,     // optional
  chain: "eip155:84532",     // optional
});

aw.x402.sessionPay(sessionId, params)

Payez en utilisant un budget de session existant.
await aw.x402.sessionPay(session.id, {
  targetUrl: "https://paid-api.example.com/v1/data",
});

aw.x402.httpInterceptor(params)

Creez un wrapper HTTP fetch qui gere automatiquement les challenges x402 v2 :
const fetchWithPayment = aw.x402.httpInterceptor({
  agentId: "agent_abc123",
  chain: "eip155:84532",
});

// Automatically handles 402 -> pay -> retry flow
const response = await fetchWithPayment("https://paid-api.example.com/v1/data");
const data = await response.json();
L’intercepteur :
  1. Lit l’en-tete PAYMENT-REQUIRED d’une reponse 402
  2. Soumet le paiement via AgentWallex
  3. Retente la requete avec l’en-tete PAYMENT-SIGNATURE

Politiques

aw.policies.update(agentId, policies)

Mettez a jour les politiques de depenses d’un agent.
await aw.policies.update("agent_abc123", {
  maxTransactionAmount: "200",
  dailyLimit: "2000",
  allowedAddresses: ["0xAddr1", "0xAddr2"],
  velocityLimit: { maxCount: 100, windowSeconds: 3600 },
});

aw.policies.get(agentId)

Obtenez les politiques actuelles d’un agent.
const policies = await aw.policies.get("agent_abc123");

aw.policies.applyTemplate(agentId, templateName)

Appliquez un modele de politique a un agent.
await aw.policies.applyTemplate("agent_abc123", "conservative");

aw.policies.createTemplate(name, rules)

Creez un modele de politique reutilisable.
await aw.policies.createTemplate("my-template", {
  maxTransactionAmount: "200",
  dailyLimit: "2000",
  allowedTokens: ["USDC"],
  velocityLimit: { maxCount: 50, windowSeconds: 3600 },
});

Webhooks

aw.webhooks.create(params)

Enregistrez un point de terminaison webhook.
const webhook = await aw.webhooks.create({
  url: "https://your-app.com/webhooks/agentwallex",
  events: [
    "payment.completed",
    "payment.failed",
    "agent.frozen",
    "policy.violated",
  ],
  secret: "whsec_your_signing_secret",
});

Gestion des erreurs

Le SDK fournit des classes d’erreur typees :
import {
  AgentWallexError,
  PolicyViolationError,
} from "@agentwallex/sdk";

try {
  await aw.payments.send({ ... });
} catch (error) {
  if (error instanceof PolicyViolationError) {
    console.log(`Policy violated: ${error.rule}`);
    console.log(`Details: ${error.message}`);
  } else if (error instanceof AgentWallexError) {
    console.log(`API error: ${error.code} - ${error.message}`);
  }
}
Classe d’erreurDeclenchee quand
AgentWallexErrorClasse de base pour toutes les erreurs API
PolicyViolationErrorTransaction bloquee par le moteur de politiques
AuthenticationErrorCle API invalide ou manquante
NotFoundErrorLa ressource n’existe pas
RateLimitErrorLimite de debit depassee

Types TypeScript

Tous les types sont exportes depuis le package :
import type {
  Agent,
  Payment,
  Transaction,
  Policy,
  X402Session,
  WebhookEvent,
} from "@agentwallex/sdk";