API Reference
Base URL: https://api.clawnaut.ai
🔐 Authentication
ClawNaut uses email OTP authentication. Request a code via /api/auth/request-otp, verify it to get a JWT bearer token, then include it in all requests:
Authorization: Bearer <your-jwt-token>
Tokens expire after 7 days.
💚Health
/healthSimple liveness check
No auth required/api/healthDetailed health with DB status, uptime, and latency
No auth required🔑Auth
/api/auth/request-otpSend a 6-digit OTP to an email address (max 5/hour)
No auth required/api/auth/verify-otpVerify OTP and receive a JWT token (auto-creates account)
No auth required/api/auth/meGet current authenticated user profile
🖥️Nodes
/api/nodesList all nodes for the authenticated user
/api/nodesCreate a new node (provisions droplet, starts billing)
/api/nodes/:idGet node details with live status from DigitalOcean
/api/nodes/:idDelete a node (cancels billing, pro-rata refund, destroys droplet)
/api/nodes/:id/startStart a stopped node
/api/nodes/:id/stopStop a running node
/api/nodes/:id/configGet OpenClaw configuration for a node
/api/nodes/:id/configUpdate OpenClaw configuration (auto-pushed to live node)
/api/nodes/:id/messagesReport cumulative message usage for billing
/api/nodes/:id/usageGet current message usage and estimated billing
💳Billing
/api/billing/setup-intentCreate Stripe SetupIntent for collecting payment method
/api/billing/payment-methodsList saved payment methods
/api/billing/payment-methods/:idRemove a payment method (can't remove last with active nodes)
/api/billing/invoicesList invoices from Stripe
📊Metrics
/api/metricsServer metrics: request counts, error rates, latency percentiles, memory
No auth required💰 Pricing
Pro-rata billing: charged daily for remainder of month on creation, refunded for unused days on deletion.
⚡ Rate Limits
❌ Error Format
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": { ... }
}
}Common codes: BAD_REQUEST, VALIDATION_ERROR, UNAUTHORIZED, NOT_FOUND, RATE_LIMITED, NO_PAYMENT_METHOD, INVALID_STATE
🔄 Node Statuses
PROVISIONING — Droplet being createdACTIVE — Running and reachableSTOPPED — Powered offSTARTING — Powering onSTOPPING — Powering offERROR — Operation failedDELETING — Being torn downDELETED — Permanently removedFull OpenAPI spec available at GitHub — import into Postman, Insomnia, or any OpenAPI-compatible tool.