Open app

API reference

Markdown

Create a bridge order

POST/v2/bridges

Create a native bridge order for one asset and direction (supply your own sessionId only with a valid integrator key).

Authentication: None required. Optional: integrator key in X-Integrator-Key.

#Request body

Send one of these 2 shapes:

#Shape 1

  • toAddress · string · required — Destination address. Its chain-specific validity is checked by the engine.
  • sessionId · string (pattern ^[0-9a-f-]{16,64}$) — Optional session credential for an integrator to group its own orders. Requires a valid integrator API key.
  • refundAddress · string (max 256) — Refund destination. Its chain-specific validity is checked by the engine.
  • source · object — Where the visit that created this order came from. Marketing only: stored apart from the order, counted in reports, never published back on any order read.
    • utmSource · string (pattern ^[a-z0-9._-]{1,64}$) — The landing link's utm_source.
    • utmMedium · string (pattern ^[a-z0-9._-]{1,64}$) — The landing link's utm_medium.
    • utmCampaign · string (pattern ^[a-z0-9._-]{1,64}$) — The landing link's utm_campaign.
    • referrer · string (pattern ^(?=.{1,253}$)[a-z0-9-]{1,63}(?:\.[a-z0-9-]{1,63})+$) — Hostname of the site the visitor came from. Never a full URL.
    • landing · string (pattern ^\/[A-Za-z0-9/._-]{0,199}$) — Path of the visit's first page.
  • asset · "xmr" · "trx" · "zec" · required — Registered native-bridge asset key, never a display symbol.
  • direction · "deposit" · required — Mint the wrapped asset from a native-coin deposit.

#Shape 2: with senderAddress

  • toAddress · string · required — Destination address. Its chain-specific validity is checked by the engine.
  • sessionId · string (pattern ^[0-9a-f-]{16,64}$) — Optional session credential for an integrator to group its own orders. Requires a valid integrator API key.
  • refundAddress · string (max 256) — Refund destination. Its chain-specific validity is checked by the engine.
  • source · object — Where the visit that created this order came from. Marketing only: stored apart from the order, counted in reports, never published back on any order read.
    • utmSource · string (pattern ^[a-z0-9._-]{1,64}$) — The landing link's utm_source.
    • utmMedium · string (pattern ^[a-z0-9._-]{1,64}$) — The landing link's utm_medium.
    • utmCampaign · string (pattern ^[a-z0-9._-]{1,64}$) — The landing link's utm_campaign.
    • referrer · string (pattern ^(?=.{1,253}$)[a-z0-9-]{1,63}(?:\.[a-z0-9-]{1,63})+$) — Hostname of the site the visitor came from. Never a full URL.
    • landing · string (pattern ^\/[A-Za-z0-9/._-]{0,199}$) — Path of the visit's first page.
  • asset · "xmr" · "trx" · "zec" · required — Registered native-bridge asset key, never a display symbol.
  • direction · "withdraw" · required — Return the native coin against the wrapped asset.
  • senderAddress · string or null — Intake hint only: the Hyperliquid address you intend to return the wrapped asset from. Fees and any pause bypass are bound to the sender the workflow actually verifies on-chain.

#Response

200 returns an object with:

  • product = "bridge"
    • orderId · string · required
    • product · "bridge" · required
    • sessionId · string (pattern ^[0-9a-f-]{16,64}$) · required — 16–64 character hexadecimal/hyphen owner-session credential.
    • asset · "xmr" · "trx" · "zec" · required — Registered native-bridge asset key, never a display symbol.
    • status · "awaiting_deposit" · "awaiting_xmr1" · "awaiting_trx1" · "awaiting_zec1" · "processing" · "completed" · "failed" · "expired" · "refunded" · "needs_review" · required
    • customerState · one of the variants below · required — Authoritative customer display/action state. Clients must not infer lifecycle from status or resource presence.
      • Nested fields: see openapi.json.
    • destination · string · required
    • expiresAt · string · required
    • direction · "deposit" · required
    • depositAddress · string · required
    • depositAddressForms · array of object
      • Nested fields: see openapi.json.
  • product = "bridge"
    • orderId · string · required
    • product · "bridge" · required
    • sessionId · string (pattern ^[0-9a-f-]{16,64}$) · required — 16–64 character hexadecimal/hyphen owner-session credential.
    • asset · "xmr" · "trx" · "zec" · required — Registered native-bridge asset key, never a display symbol.
    • status · "awaiting_deposit" · "awaiting_xmr1" · "awaiting_trx1" · "awaiting_zec1" · "processing" · "completed" · "failed" · "expired" · "refunded" · "needs_review" · required
    • customerState · one of the variants below · required — Authoritative customer display/action state. Clients must not infer lifecycle from status or resource presence.
      • Nested fields: see openapi.json.
    • destination · string · required
    • expiresAt · string · required
    • direction · "withdraw" · required
    • xmr1DepositAddress · string or null · required

Errors use the standard error envelope: branch on code, never on the message.

#Example

curl
curl -X POST 'https://api-beta.wagyu.xyz/v2/bridges' \
  -H 'content-type: application/json' \
  -d '{
    "asset": "xmr",
    "direction": "deposit",
    "toAddress": "<your-hyperliquid-address>"
  }'
JavaScript
const res = await fetch('https://api-beta.wagyu.xyz/v2/bridges', {
  method: 'POST',
  headers: {"content-type":"application/json"},
  body: JSON.stringify({
    "asset": "xmr",
    "direction": "deposit",
    "toAddress": "<your-hyperliquid-address>"
  }),
});
const data = await res.json();
Python
import requests

res = requests.post('https://api-beta.wagyu.xyz/v2/bridges', json={
        "asset": "xmr",
        "direction": "deposit",
        "toAddress": "<your-hyperliquid-address>"
    }, timeout=30)
data = res.json()

No response is captured for this route: calling it creates or changes a real order. The response fields above come from the live contract.

Tip: every page is also plain Markdown, and /llms.txt indexes them for AI tools.