> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trustware.io/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /status

> Poll transaction progress after submitting the receipt. Returns status, transaction hashes, and the metadata you passed to /route.

`GET https://api.trustware.io/api/v1/route-intent/:intentId/status`

Poll this endpoint after submitting the receipt to track bridge and swap progress through to final settlement. The `metadata` field echoes exactly what you passed in the `POST /route` call — use it to attribute the transaction to the correct user or internal record.

Poll until status reaches `success` or `failed`.

## Path parameters

| Parameter  | Description                               |
| ---------- | ----------------------------------------- |
| `intentId` | The `intentId` returned by `POST /route`. |

## Response

```json theme={null}
{
  "data": {
    "id": "bc5a5e82-1ecb-453b-bf78-c7c3ccdc3223",
    "intent_id": "d9a10f42-7243-498d-914a-269a18b93660",
    "sdk_request": true,
    "from_address": "0xeb212fe20f26243ec4d4df2dd49c8aa9fa75a201",
    "to_address": "0xeb212fe20f26243ec4d4df2dd49c8aa9fa75a201",
    "from_chain_id": "43114",
    "to_chain_id": "137",
    "source_tx_hash": "0x4c8f91363c5f5e3ac2154f94995f5beac2993cc595af552c2681538af627e05d",
    "dest_tx_hash": "0x9b7e3f0a...",
    "request_id": "eeaa53a4f2e254896ae690edac309e68",
    "status": "bridging",
    "routing_provider": "squid",
    "quote_to_amount_usd": "0.19000000",
    "to_amount_wei": "198584",
    "poll_attempt": 1,
    "next_poll_at": "2026-04-15T03:13:54.289994Z",
    "create_date": "2026-04-15T03:13:22.592483Z",
    "update_date": "2026-04-15T03:13:24.290292Z"
  }
}
```

## Status values

The `status` field on the response is one of four values:

| `status`    | Meaning                                                                                                       |
| ----------- | ------------------------------------------------------------------------------------------------------------- |
| `submitted` | The receipt has been submitted; tracking has started. Continue polling.                                       |
| `bridging`  | Assets are in transit across the bridge. Continue polling.                                                    |
| `success`   | Route completed successfully. Final amounts and destination hash are available.                               |
| `failed`    | The route failed. If funds moved on the source chain, a refund has been initiated back to the source address. |

If `intentId` is unknown or no receipt has been submitted yet, the endpoint returns HTTP `404 Not Found` rather than a status value.

### Auxiliary status fields

A few separate fields surface conditions that are not part of the main `status` enum:

| Field              | Meaning                                                                                                           |
| ------------------ | ----------------------------------------------------------------------------------------------------------------- |
| `gas_status`       | Set to `"needs_gas"` when the destination chain step stalled due to insufficient gas. Present only when relevant. |
| `routing_provider` | The bridge provider used for this route (e.g. `"squid"`, `"lifi"`). Useful when triaging a `failed` status.       |

## Response fields

| Field                 | Description                                                                           |
| --------------------- | ------------------------------------------------------------------------------------- |
| `id`                  | Trustware internal transaction record ID.                                             |
| `intent_id`           | The `intentId` from the route response.                                               |
| `sdk_request`         | `true` when the intent originated from a Trustware SDK API key.                       |
| `from_address`        | Source wallet address.                                                                |
| `to_address`          | Destination wallet address.                                                           |
| `from_chain_id`       | Source chain ID.                                                                      |
| `to_chain_id`         | Destination chain ID.                                                                 |
| `source_tx_hash`      | Transaction hash on the source chain.                                                 |
| `dest_tx_hash`        | Transaction hash on the destination chain. Populated once the route settles.          |
| `status`              | Current status. One of `submitted`, `bridging`, `success`, `failed`.                  |
| `routing_provider`    | Bridge/swap provider used for this route (e.g. `"squid"`, `"lifi"`).                  |
| `quote_to_amount_usd` | Expected destination USD value from the quote.                                        |
| `to_amount_wei`       | Destination token amount received (in smallest unit). Populated on `success`.         |
| `gas_status`          | Optional. Surfaces conditions such as `"needs_gas"` when the destination step stalls. |
| `poll_attempt`        | Number of times this intent has been polled.                                          |
| `next_poll_at`        | Suggested timestamp for the next poll.                                                |
| `create_date`         | When the intent record was created (ISO 8601).                                        |
| `update_date`         | When the status was last updated (ISO 8601).                                          |

## Polling guidance

Use `next_poll_at` as the suggested time for your next request rather than a fixed interval. This avoids unnecessary requests while the bridge is in transit.

On `failed` status: if the source chain transaction confirmed but the bridge failed, Trustware initiates a refund to the source address. Your application should not trigger any downstream payout until `success` is confirmed.

<Note>
  The `status` endpoint will become a WebSocket stream in a future release. The polling interface will remain supported.
</Note>
