HTTP API
Base URL: https://app.mova.build
The API is public and needs no key. It holds very little: the chain is the source of truth for who owns a robot and which wallet is its own. All responses are JSON. Errors look like { "error": "message" }.
A robot ID is the robot’s peaq ID as a decimal number.
Robots
Section titled “Robots”List an owner’s robots
Section titled “List an owner’s robots”GET /api/robots?owner=<address>{ "robots": [ { "machine_id": "7609796266404622865478520861685648070859553970607516824731969204689381529297", "owner": "0x052d1a8ac2428b450cb0a50e522c18acc643c7a5", "name": "Delivery", "machine_type": "Delivery robot", "wallet": "0x159b7621191883a04e130c1755d22727d2182bf4", "tx_hash": "0xf985d4…7e77", "created_at": "2026-10-02 11:27:44", "scan_block": null } ]}Only robots registered through Mova are listed.
Get one robot
Section titled “Get one robot”GET /api/robots/:idReturns { "robot": { … } } with the same fields, or 404.
Index a robot
Section titled “Index a robot”POST /api/robots{ "machineId": "<id>", "name": "Courier 01", "txHash": "0x…", "startBlock": 78196459 }Call this after registering a robot on peaq, or after changing its wallet. Mova reads the owner, type and wallet from peaq itself, so the only thing you supply is the display name, and only the first time. txHash and startBlock are optional.
Payment notes
Section titled “Payment notes”Get a robot’s notes
Section titled “Get a robot’s notes”GET /api/robots/:id/memos{ "memos": { "0x1f63…bfa5": "Delivery, 1.8 km" } }Keys are Robinhood Chain transaction hashes, lowercased.
Attach a note
Section titled “Attach a note”POST /api/payments/memo{ "txHash": "0x…", "machineId": "<id>", "memo": "Delivery, 1.8 km" }Returns { "ok": true, "saved": true }. The first note for a transaction is kept; later ones return "saved": false. Notes are labels and aren’t verified. Up to 120 characters.
Credit
Section titled “Credit”GET /api/credit/:idPasses through peaq’s credit rating for the robot:
{ "did": "did:peaq:7609…9297", "mcr_score": 0, "mcr": "Provisioned", "bond_status": "bonded", "event_count": 0, "revenue_event_count": 0, "total_revenue": 0}mcr is the letter rating, or Provisioned for a robot that isn’t rated yet.
What isn’t in the API
Section titled “What isn’t in the API”Payments themselves. Read them from Robinhood Chain: they are USDG Transfer events to the robot’s wallet. Payments the robot made are Paid events on its spending account.