---
title: "Build an unsigned bridge intent after policy/spend checks"
method: POST
path: "/adapters/bridge/build"
tags: ["Adapters"]
---

# Build an unsigned bridge intent after policy/spend checks

`POST /adapters/bridge/build`

## Headers

- `X-Steward-Request-Timestamp` string
- `X-Steward-Request-Expires-At` string
- `X-Steward-Signature` string
- `X-Steward-Signing-Key-Id` string
- `Idempotency-Key` string

## Request body

- object
  - `agentId` string
  - `owner` string, required
  - `quote` object, required
    - `provider` string, required
    - `quoteId` string, required
    - `fromChainId` integer, required
    - `toChainId` integer, required
    - `fromToken` object
      - `address` string, required
      - `symbol` string
      - `decimals` integer
    - `toToken` object
      - `address` string, required
      - `symbol` string
      - `decimals` integer
    - `amountIn` string, required
    - `amountOut` string, required
    - `minAmountOut` string
    - `feeAmount` string
    - `recipient` string
    - `route` object[]
    - `slippageBps` integer
    - `expiresAt` integer
    - `direction` string
    - `executionMode` 'unsigned-transaction' | 'external-handoff'
    - `handoffUrl` string, uri
    - `feeBps` integer
    - `feeScope` 'final' | 'global-estimate' | 'not-applicable'
    - `feeObservedSlot` integer
    - `feeObservedAt` integer
    - `notices` string[]
  - `estimatedUsd` number

## Response `200`

JSON response

- object
  - `ok` true, required
  - `data` union, required
    - object
      - `unsignedIntent` object, required
        - `signed` false, required
        - `kind` 'evm-tx' | 'evm-typed-data' | 'abstract-intent', required
        - `chainId` integer, required
        - `to` string, required
        - `value` string, required
        - `data` string
        - `owner` string, required
        - `category` string, required
        - `provider` string, required
        - `metadata` object
    - object
      - `handoff` object, required
        - `kind` 'external-handoff', required
        - `category` 'bridge', required
        - `provider` string, required
        - `quoteId` string, required
        - `direction` string, required
        - `url` string, uri, required
        - `fromChainId` integer, required
        - `toChainId` integer, required
        - `amountIn` string, required
        - `estimatedUsd` number, required
        - `recipient` string, required
        - `recipientSensitive` boolean
        - `expiresAt` integer, required
        - `feeBps` integer, required
        - `feeScope` 'global-estimate' | 'owner-observed' | 'not-applicable', required
        - `feeObservedSlot` integer
        - `feeObservedAt` integer, required
        - `notices` string[], required

## Other responses

- `400` — JSON response
- `401` — JSON response
- `403` — JSON response
- `404` — JSON response
- `408` — JSON response
- `409` — JSON response

## Changes

- **2026-08-17** `261a7c8070b2` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/steward-fi/apis/steward-api/changes/adapters/bridge/build/post.md)

---

[API](https://skmtc.dev/steward-fi/apis/steward-api.md) · [All operations](https://skmtc.dev/steward-fi/apis/steward-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/steward-fi/steward-api/revisions/b88b4b97a664/schema)
