# Read a bridge order

> Read a bridge order with an owner session or destination proof

`GET /v2/bridges/{id}`

Read a bridge order with an owner session or destination proof.

**Authentication:** Required: the order’s owner session in `X-Session-ID`, or the destination proof `?verify=<destination-address>` (read-only).

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string (pattern `^[A-Za-z0-9:_-]{1,128}$`) | Yes | Public order identifier. Not a credential: every read still requires the owner session or the destination proof. |

## Response

`200` returns an object with:

- **product = "bridge"**
  - `orderId` · string · **required**
  - `product` · `"bridge"` · **required**
  - `status` · `"awaiting_deposit"` · `"awaiting_xmr1"` · `"awaiting_trx1"` · `"awaiting_zec1"` · `"processing"` · `"completed"` · `"failed"` · `"expired"` · `"refunded"` · `"needs_review"` · **required**
  - `asset` · `"xmr"` · `"trx"` · `"zec"` · **required** — Registered native-bridge asset key, never a display symbol.
  - `direction` · `"deposit"` · **required**
  - `chainId` · integer or null · **required** — Non-negative integer chain identifier.
  - `toAddress` · string or null · **required**
  - `createdAt` · string or null · **required**
  - `updatedAt` · string or null · **required**
  - `fromChainId` · integer or null — Non-negative integer chain identifier.
  - `depositChainId` · integer or null — Non-negative integer chain identifier.
  - `fromToken` · string
  - `depositToken` · string
  - `fromTokenSymbol` · string
  - `depositTokenSymbol` · string
  - `fromTokenDecimals` · integer (0–36)
  - `depositTokenDecimals` · integer (0–36)
  - `fromAmount` · string
  - `depositAmount` · string
  - `toChainId` · integer or null — Non-negative integer chain identifier.
  - `toToken` · string
  - `toTokenSymbol` · string
  - `toTokenDecimals` · integer (0–36)
  - `expectedOutput` · string
  - `depositTxHash` · string or null
  - `receivingTxHash` · string or null
  - `sessionId` · string or null
  - `refundAddress` · string or null
  - `refundRequestedAt` · string or null
  - `expiresAt` · string
  - `amountUsd` · number
  - `bonusStage` · `"none"` · `"coinflip"`
  - `coinflipRequested` · boolean
  - `fundingProvider` · `"privy"` or null
  - `integratorFeeUsd` · number or null
  - `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`._
  - `confirmations` · number
  - `requiredConfirmations` · number
  - `depositObserved` · boolean
  - `errorMessage` · string or null · **required**
  - `actualOutput` · string — What the customer received, in atomic units of `deliveredToken` when present, otherwise of `toToken`. Only on completed orders.
  - `deliveredToken` · object — Present only when the order completed in a different asset than `toToken`; `actualOutput` is then denominated in this token.
    - _Nested fields: see `openapi.json`._
  - `coinflipLost` · boolean · **required**
  - `hasReview` · boolean · **required**
  - `refundRecovery` · object or null
    - _Nested fields: see `openapi.json`._
  - `rewards` · object
    - _Nested fields: see `openapi.json`._
  - `destination` · string · **required**
  - `amount` · string or number
  - `txIn` · string or null
  - `txOut` · string or null
  - `txid` · string or null
  - `bridgeSettlement` · object or null
    - _Nested fields: see `openapi.json`._
  - `receivedXmr` · number or null
  - `delivered` · boolean or null
  - `completedAt` · string or null
  - `depositAddress` · string · **required**
  - `depositAddressForms` · array of object
    - _Nested fields: see `openapi.json`._
- **product = "bridge"**
  - `orderId` · string · **required**
  - `product` · `"bridge"` · **required**
  - `status` · `"awaiting_deposit"` · `"awaiting_xmr1"` · `"awaiting_trx1"` · `"awaiting_zec1"` · `"processing"` · `"completed"` · `"failed"` · `"expired"` · `"refunded"` · `"needs_review"` · **required**
  - `asset` · `"xmr"` · `"trx"` · `"zec"` · **required** — Registered native-bridge asset key, never a display symbol.
  - `direction` · `"withdraw"` · **required**
  - `chainId` · integer or null · **required** — Non-negative integer chain identifier.
  - `toAddress` · string or null · **required**
  - `createdAt` · string or null · **required**
  - `updatedAt` · string or null · **required**
  - `fromChainId` · integer or null — Non-negative integer chain identifier.
  - `depositChainId` · integer or null — Non-negative integer chain identifier.
  - `fromToken` · string
  - `depositToken` · string
  - `fromTokenSymbol` · string
  - `depositTokenSymbol` · string
  - `fromTokenDecimals` · integer (0–36)
  - `depositTokenDecimals` · integer (0–36)
  - `fromAmount` · string
  - `depositAmount` · string
  - `toChainId` · integer or null — Non-negative integer chain identifier.
  - `toToken` · string
  - `toTokenSymbol` · string
  - `toTokenDecimals` · integer (0–36)
  - `expectedOutput` · string
  - `depositTxHash` · string or null
  - `receivingTxHash` · string or null
  - `sessionId` · string or null
  - `refundAddress` · string or null
  - `refundRequestedAt` · string or null
  - `expiresAt` · string
  - `amountUsd` · number
  - `bonusStage` · `"none"` · `"coinflip"`
  - `coinflipRequested` · boolean
  - `fundingProvider` · `"privy"` or null
  - `integratorFeeUsd` · number or null
  - `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`._
  - `confirmations` · number
  - `requiredConfirmations` · number
  - `depositObserved` · boolean
  - `errorMessage` · string or null · **required**
  - `actualOutput` · string — What the customer received, in atomic units of `deliveredToken` when present, otherwise of `toToken`. Only on completed orders.
  - `deliveredToken` · object — Present only when the order completed in a different asset than `toToken`; `actualOutput` is then denominated in this token.
    - _Nested fields: see `openapi.json`._
  - `coinflipLost` · boolean · **required**
  - `hasReview` · boolean · **required**
  - `refundRecovery` · object or null
    - _Nested fields: see `openapi.json`._
  - `rewards` · object
    - _Nested fields: see `openapi.json`._
  - `destination` · string · **required**
  - `amount` · string or number
  - `txIn` · string or null
  - `txOut` · string or null
  - `txid` · string or null
  - `bridgeSettlement` · object or null
    - _Nested fields: see `openapi.json`._
  - `receivedXmr` · number or null
  - `delivered` · boolean or null
  - `completedAt` · string or null
  - `xmr1DepositAddress` · string or null · **required**

Errors use the [standard error envelope](https://docs.wagyu.xyz/actions-and-retries.md#the-error-envelope): branch on `code`, never on the message.

## Example

<!-- curl -->
```bash
curl 'https://api-beta.wagyu.xyz/v2/bridges/<orderId>' \
  -H 'x-session-id: <sessionId>'
```

<!-- JavaScript -->
```javascript
const res = await fetch('https://api-beta.wagyu.xyz/v2/bridges/<orderId>', {
  headers: {"x-session-id":"<sessionId>"},
});
const data = await res.json();
```

<!-- Python -->
```python
import requests

res = requests.get('https://api-beta.wagyu.xyz/v2/bridges/<orderId>', headers={"x-session-id":"<sessionId>"}, timeout=30)
data = res.json()
```

_No response is captured for this route: it needs a real order. The response fields above come from the live contract._

---
Source: https://docs.wagyu.xyz/api-reference/get-bridge-order · Built from the live Wagyu API on 2026-11-04.
