developer onboarding

Try the 0watch API before you create an account.

Use live public endpoints, inspect the current OpenAPI contract, then copy the exact JS, Python, or curl call you need for the authenticated path once you are ready to monitor a real wallet.

0watch API OpenAPI loading… 0 documented routes

Run public demo calls against the current API host.

Loading explorer state…

Endpoint response

Copy the request in the language your team already uses.

These are the first four calls most production integrations make after signup.

What your incident endpoint receives

wallet.alert.triggered

Use this shape to wire Slack, PagerDuty, or your own response worker before a real wallet is added.

{
  "id": 42,
  "event": "wallet.alert.triggered",
  "detectedAt": 1741550000000,
  "walletAddress": "0x8f5b8f1d39c0c9e4d5d6ddfb66914318e403d5c6",
  "severity": "critical",
  "anomalyType": "large_transfer",
  "txHash": "0x2df3271e5f7b72b5d6c9a98887c182d6e25cf0f6be6b8f78f8bbf6f0a3a4b2c1",
  "details": {
    "direction": "outbound",
    "thresholdWei": "5000000000000000000",
    "valueWei": "12750000000000000000",
    "chainId": 8453
  }
}

Preview a rule before it becomes an outage page.

critical outbound filter

Threshold-only alerts are fine for day one. Teams usually add direction, severity, and wallet scoping immediately after the first real incident.

{
  "name": "High-value treasury outflow",
  "walletAddress": "0x8f5b8f1d39c0c9e4d5d6ddfb66914318e403d5c6",
  "channels": [
    "webhook",
    "telegram"
  ],
  "mode": "all",
  "severity": "critical",
  "conditions": [
    {
      "field": "txType",
      "operator": "eq",
      "value": "eth_transfer"
    },
    {
      "field": "valueWei",
      "operator": "gte",
      "value": "10000000000000000000"
    },
    {
      "field": "direction",
      "operator": "eq",
      "value": "outbound"
    }
  ]
}

Ship the first integration without reading five docs pages.

multi-language

This request is the handoff point from “the API looks real” to “my wallet is actually monitored.”

$ curl
curl -X POST https://api.0agent.ai/api/webhooks \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: owk_...' \
  -d '{
    "url": "https://ops.example.com/0watch",
    "wallet_address": "0x8f5b8f1d39c0c9e4d5d6ddfb66914318e403d5c6",
    "threshold_eth": 5
  }'

$ javascript
const res = await fetch('https://api.0agent.ai/api/webhooks', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': process.env.OWATCH_API_KEY,
  },
  body: JSON.stringify({
    url: 'https://ops.example.com/0watch',
    wallet_address: '0x8f5b8f1d39c0c9e4d5d6ddfb66914318e403d5c6',
    threshold_eth: 5,
  }),
});
const json = await res.json();

$ python
import os
import requests

res = requests.post(
    'https://api.0agent.ai/api/webhooks',
    headers={
        'Content-Type': 'application/json',
        'X-API-Key': os.environ['OWATCH_API_KEY'],
    },
    json={
        'url': 'https://ops.example.com/0watch',
        'wallet_address': '0x8f5b8f1d39c0c9e4d5d6ddfb66914318e403d5c6',
        'threshold_eth': 5,
    },
    timeout=10,
)
json = res.json()

Move from exploration to a live monitored wallet.