Wagyu Public API 🐮
Base URL: https://api.wagyu.xyz
Rate Limits
| Endpoint | Limit |
|---|---|
Order creation (POST /v1/order, POST /v1/bridge/deposit, POST /v1/bridge/withdraw) | 5/min per IP |
Status checks (GET /v1/order/:id, GET /v1/bridge/order/:id) | 20/min per IP |
Quotes (POST /v1/quote) | 20/min per IP |
| All other endpoints | 20/min per IP |
Error Responses
All errors return JSON:
{ "error": "Error message here" }
| HTTP Code | Meaning |
|---|---|
| 400 | Bad request (invalid input) |
| 404 | Order not found |
| 429 | Rate limit exceeded |
| 500 | Server error |
Swap API
Cross-chain swaps between any assets.
Flow
- Get quote (optional, for preview)
- Create order → get
depositAddressanddepositChainId - Send tokens to
depositAddresson the correct chain - Poll order status until
completed - Funds arrive at your
toAddress
Get Supported Chains
curl https://api.wagyu.xyz/v1/chains
Response:
{ "chains": [ { "chainId": 42161, "name": "Arbitrum", "nativeToken": "ETH", "minSwapUsd": 15 }, { "chainId": 0, "name": "Monero", "nativeToken": "XMR", "minSwapUsd": 25 } ], "defaultMinSwapUsd": 15 }
Get Quote
# USDC on Arbitrum → XMR (100 USDC) curl -X POST https://api.wagyu.xyz/v1/quote \ -H "Content-Type: application/json" \ -d '{ "fromChainId": 42161, "toChainId": 0, "fromToken": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", "toToken": "XMR", "fromAmount": "100000000" }'
Request:
| Field | Type | Description |
|---|---|---|
fromChainId | number | Source chain ID (0 = Monero) |
toChainId | number | Destination chain ID (0 = Monero) |
fromToken | string | Token address or "XMR" |
toToken | string | Token address or "XMR" |
fromAmount | string | Amount in smallest units |
Response:
{ "fromAmount": "100000000", "fromAmountUsd": "100", "fromSymbol": "USDC", "toAmount": "220000000000", "toAmountUsd": "99.00", "toSymbol": "XMR", "estimatedTime": 300, "gasCostUsd": "0.50", "minReceived": "0.213400" }
Create Swap Order
curl -X POST https://api.wagyu.xyz/v1/order \ -H "Content-Type: application/json" \ -d '{ "fromChainId": 42161, "toChainId": 0, "fromToken": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", "toToken": "XMR", "fromAmount": "100000000", "toAddress": "4AdUndXHHZ..." }'
Request:
| Field | Type | Description |
|---|---|---|
fromChainId | number | Source chain ID |
toChainId | number | Destination chain ID |
fromToken | string | Token address or "XMR" |
toToken | string | Token address or "XMR" |
fromAmount | string | Amount in smallest units |
toAddress | string | Destination address |
Response:
{ "orderId": "ABC123", "depositAddress": "0x...", "depositChain": "Arbitrum", "depositChainId": 42161, "depositToken": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", "depositTokenSymbol": "USDC", "depositAmount": "100000000", "toAddress": "4AdUndXHHZ...", "expectedOutput": "220000000000", "expiresAt": "2026-01-11T12:00:00.000Z", "status": "awaiting_deposit" }
⚠️ Send exactly
depositAmountofdepositTokentodepositAddresson chaindepositChainId
Get Swap Order Status
curl https://api.wagyu.xyz/v1/order/ABC123
Response:
{ "orderId": "ABC123", "status": "completed", "depositAddress": "0x...", "depositChainId": 42161, "depositTokenSymbol": "USDC", "depositAmount": "100000000", "depositTxHash": "0x...", "toAddress": "4AdUndXHHZ...", "expectedOutput": "220000000000", "actualOutput": "219500000000", "createdAt": "2026-01-11T10:00:00.000Z", "completedAt": "2026-01-11T10:05:00.000Z" }
| Status | Description |
|---|---|
awaiting_deposit | Waiting for deposit |
deposit_detected | Deposit seen, waiting for confirmations |
deposit_confirmed | Confirmed, executing swap |
executing_swap | Swap in progress |
completed | Done |
failed | Failed (see errorMessage) |
expired | No deposit before expiry |
Bridge API
Converts between XMR (Monero) and XMR1 (Hyperliquid L1 token).
Flow
- Create order → get
depositAddress - Send funds to
depositAddress - Poll order status until
completed - Funds arrive at your
destination
Get Rates
curl https://api.wagyu.xyz/v1/bridge/rates
Response:
{ "rates": [ { "exchange": "Wagyu", "rate": 496.55, "eta": "Instant" }, { "exchange": "FixedFloat", "rate": 498.67, "eta": "~30min" } ], "wagyuRate": { "rate": 496.55, "eta": "Instant" } }
Create Deposit Order (XMR → XMR1)
curl -X POST https://api.wagyu.xyz/v1/bridge/deposit \ -H "Content-Type: application/json" \ -d '{"toAddress": "0xYourHyperliquidAddress"}'
Request:
| Field | Type | Description |
|---|---|---|
toAddress | string | Hyperliquid address (0x...) |
Response:
{ "orderId": "dep_ABC123", "depositAddress": "8...", "destination": "0x...", "expiresAt": "2026-01-11T12:00:00.000Z" }
- Send XMR to
depositAddress, receive XMR1 atdestination
Create Withdraw Order (XMR1 → XMR)
curl -X POST https://api.wagyu.xyz/v1/bridge/withdraw \ -H "Content-Type: application/json" \ -d '{"toAddress": "4YourMoneroAddress..."}'
Request:
| Field | Type | Description |
|---|---|---|
toAddress | string | Monero address |
Response:
{ "orderId": "wd_ABC123", "depositAddress": "0x...", "destination": "4YourMoneroAddress...", "expiresAt": "2026-01-11T12:00:00.000Z" }
- Send XMR1 to
depositAddresson Hyperliquid, receive XMR atdestination
Get Bridge Order Status
curl https://api.wagyu.xyz/v1/bridge/order/dep_ABC123
Response:
{ "id": "dep_ABC123", "type": "deposit", "status": "completed", "amount": "1.5", "confirmations": 20, "requiredConfirmations": 20, "tx_in": "xmr_txid...", "tx_out": "hl_txid...", "created_at": "2026-01-11T10:00:00.000Z", "completed_at": "2026-01-11T10:40:00.000Z" }
| Status | Description |
|---|---|
awaiting_deposit | Waiting for deposit |
pending_confirmations | Deposit detected, waiting for confirmations |
processing | Processing the transfer |
completed | Done |
failed | Failed (see failure_reason) |
expired | No deposit received before expiry |
Chain IDs
| Chain | ID |
|---|---|
| Monero | 0 |
| Ethereum | 1 |
| BSC | 56 |
| Base | 8453 |
| Arbitrum | 42161 |
| Solana | 1151111081099710 |
| Bitcoin | 20000000000001 |
Token Decimals
| Token | Decimals | Example |
|---|---|---|
| XMR | 12 | 1 XMR = 1000000000000 |
| USDC | 6 | 1 USDC = 1000000 |
| ETH | 18 | 1 ETH = 1000000000000000000 |
Notes
- Orders expire after 2 hours if no deposit is received
- Minimum swap: $15-40 depending on chain
- XMR confirmations required: 20 blocks
- A fee system will be available soon
Moo 🐮.