Cuenta operativa donde tu agente trabaja. Un master pool con CVU propio y, opcionalmente, un sub-wallet por agente con cap acotado. History append-only sobre un ledger de doble entrada.
Estado: rail simulado
Los movimientos son asientos en el ledger interno. El rail bancario real (BindX) todavía no está integrado: POST /v1/wallet/fund acredita saldo directo hasta que lo reemplace el webhook del provider. La lógica de wallet, sub-wallets, caps y aprobaciones ya es la definitiva.
Autenticación
Todas las rutas viven bajo https://argentive.ai/api/v1/wallet y aceptan tanto el JWT de sesión (cookie) como un personal token Bearer argentive_sk_.... La CLI @argentive/pay usa el token: corré apay auth login para obtenerlo.
Unidades de monto
Los balances en las respuestas vienen en unidades (2 decimales, ej 50000.00).
initial_amount (al crear un sub-wallet) va en unidades.
amount_cents, threshold_cents y los *_cents del approval config van en centavos.
GET /v1/wallet
Devuelve la wallet del usuario autenticado. Provisioning idempotente: crea la wallet on-demand la primera vez que la consultás.
curl
curl -X GET https://argentive.ai/api/v1/wallet \
-H "Authorization: Bearer argentive_sk_..."
{ "data": [ /* SubWallet[] — mismo shape que sub_wallets en GET /v1/wallet */ ] }
POST /v1/wallet/sub-wallets
Crea un sub-wallet para un agente. Acota el blast-radius: el agente solo opera sobre este cap, no sobre el master. Idempotente por (wallet, agent_label) — recrear con el mismo label devuelve el sub-wallet existente.
Response 200 — el SubWallet con el cap nuevo. 409 insufficient_funds si el master no alcanza.
GET /v1/wallet/scheduled
Lista los pagos programados (recurrentes vía cron u one-shot). Cada fire dispara un approval humano por WhatsApp; el débito real lo hace el webhook al aprobar.
A diferencia de los balances (unidades), /scheduled devuelve amountCents en centavos. Dividí por 100 para mostrar.
Errores comunes
errores
401 unauthorized Falta o es inválido el Bearer token
400 agent_label_required POST sub-wallets sin agent_label
400 invalid_amount amount_cents <= 0 (fund / allocate)
404 not_found El sub-wallet no es del usuario (PATCH / allocate)
409 insufficient_funds allocate excede el available del master