---
title: "Create Intent"
method: POST
path: "/intent-operations"
tags: ["Intents"]
---

# Create Intent

`POST /intent-operations`

Submits a quoted intent for execution. Takes the `intentId` from `POST /quotes` (`routes[].intentId`) plus signatures (origin, destination, optionally target-execution) and optional EIP-7702 authorizations.

## Headers

- `x-api-version` '2026-01.alps', required
- `x-api-key` string, required

## Request body

- object
  - `signedIntentOp` object, required
    - `sponsor` string, required — Account whose funds the intent operation will spend. Identical to the account that signed the origin signatures — this field is named `sponsor` because in TheCompact it sponsors the resource-lock claim, not because there's a separate gas-sponsor party.
    - `nonce` string, uint256, required — Intent operation nonce — a one-time identifier scoped to the orchestrator's intent registry, not an EVM transaction nonce. Used to prevent replay of the same quote.
    - `targetExecutionNonce` string, uint256 — Nonce for the optional target-execution signature (smart-session flows). Omitted for EOA accounts.
    - `expires` integer, required — Unix timestamp (seconds) after which the orchestrator will refuse to submit this intent.
    - `elements` object[], required — Per-chain legs of the bundle. One element per origin chain involved in fulfilling the destination mandate.
      - `arbiter` string, required — Contract that adjudicates settlement on this chain (TheCompact arbiter).
      - `chainId` string, uint256, required — Chain ID where the element is executed
      - `idsAndAmounts` unknown[], required — Resource-locked balances pledged on this chain, as `[ERC-6909 tokenId, amount]` pairs.
        - unknown
      - `spendTokens` unknown[], required — Subset of `idsAndAmounts` actually drawn down to fund this element. Same `[ERC-6909 tokenId, amount]` shape.
        - unknown
      - `mandate` object, required — Mandate containing execution details
        - `recipient` string, required — Address that receives the output tokens on the destination chain.
        - `tokenOut` unknown[], required — Tokens to deliver on the destination chain, as `[ERC-6909 tokenId, amount]` pairs.
          - unknown
        - `destinationChainId` string, uint256, required — Target chain ID for the mandate
        - `fillDeadline` integer, required — Unix timestamp (seconds) after which the destination fill is no longer valid.
        - `preClaimOps` object, required — Origin-chain ops that run immediately before funds are claimed by the relayer (e.g. user approvals, vault withdraws).
          - `vt` string, required — ERC-7579 encoded execution mode (first byte) and signature mode (second byte) for `destinationOps` / `preClaimOps`. Pre-computed by the orchestrator — clients pass through unchanged.
          - `ops` object[], required — Array of operations to perform
            - `to` string, required — Target contract address for execution
            - `value` string, uint256, required — Amount of ETH (in wei) sent in the execution
            - `data` string, required — Encoded function call data
        - `destinationOps` object, required — Destination-chain ops that run after funds are delivered (e.g. user's target contract call).
          - `vt` string, required — ERC-7579 encoded execution mode (first byte) and signature mode (second byte) for `destinationOps` / `preClaimOps`. Pre-computed by the orchestrator — clients pass through unchanged.
          - `ops` object[], required — Array of operations to perform
            - `to` string, required — Target contract address for execution
            - `value` string, uint256, required — Amount of ETH (in wei) sent in the execution
            - `data` string, required — Encoded function call data
        - `qualifier` object, required — Settlement-layer-specific witness data binding this mandate to a relayer route.
          - `settlementContext` union, required
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `encodedVal` string, required — ABI-encoded settlement-layer witness data. Format depends on `settlementContext.settlementLayer`. Clients should treat this as opaque bytes and pass through unchanged.
        - `minGas` string, uint256, required — Minimum gas reserved for pre-claim ops on this chain, in gas units. Packed with `preClaimGasStipend` as `uint128` for the settlement contract.
        - `swapDestinations` object[] — Swap execution data for arbitrary output tokens, aligned by index with tokenOut
          - `tokenIn` string, required
          - `amountIn` string, uint256, required
          - `amountOut` string, uint256, required
          - `slippage` number, required
          - `quoter` string, required
          - `executions` object[], required
            - `to` string, required — Target contract address for execution
            - `value` string, uint256, required — Amount of ETH (in wei) sent in the execution
            - `data` string, required — Encoded function call data
            - `senderAddressPlaceholder` string
            - `recipientAddressPlaceholder` string
          - `outputDecimals` number, required
          - `outputSymbol` string, required
      - `swapOrigins` object — Swap execution data for arbitrary input tokens, keyed by spendToken address
      - `bundleId` string, uint256 — Per-element nonce override used when this element is dispatched as its own intent (post-bridge destination ops). Unset elements fall back to the bundle-level nonce. Today only the destination-ops element on a bridge + destination-ops bundle sets this.
    - `serverSignature` string, required — HMAC digest of the bundle's canonical encoding. Set by the orchestrator at quote time and verified at submit to ensure the bundle wasn't tampered with between calls.
    - `signedMetadata` object, required — Signed metadata containing prices, fees, and gas parameters
      - `strategy` 'ACROSS' | 'ECO' | 'SAME_CHAIN' | 'TOKENLESS' | 'RELAY' | 'OFT' | 'NEAR' | 'RHINO' | 'CCTP_FAST' | 'CCTP_CHEAP' — Planning strategy that produced this bundle (e.g. `ACROSS`, `RELAY`, `INTENT_EXECUTOR`). Pinned in metadata so the submission path can dispatch to the matching execution code.
      - `schemeId` string — Serialization scheme version for this bundle (e.g. `v1`). Used to migrate the bundle format without breaking in-flight quotes.
      - `tokenPrices` object, required — Snapshot of token-to-USD prices at quote time. Pinned here so cost figures remain consistent across the quote-submit window.
      - `gasPrices` object, required — Gas prices per chain in wei
      - `opGasParams` object, required — OP-stack L1-fee parameters (`l1BaseFee`, `l1BlobBaseFee`, scalars) per chain at quote time. Used to reproduce the L1 data-cost component of OP-stack chain gas — pinned so the cost does not drift between quote and submit.
        - `estimatedCalldataSize` number
      - `account` object, required
        - `address` string, required — Account address
        - `accountType` 'smartAccount' | 'GENERIC' | 'EOA' | 'ERC7579' — Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation.
        - `setupOps` object[] — Setup operations for the smart account. Only used if the account is not deployed
          - `to` string, required — Account deployment factory address
          - `data` string, required — Account deployment data
        - `accountContext` object, required — Account status per chain
        - `requiredDelegations` object — Map of chain -> EOA and delegated address required for user to sign for 7702 authorizations
      - `recipient` object
        - `address` string, required — Recipient address. Format depends on destination chain — 0x-hex for EVM destinations, base58 for Solana, T-address for Tron.
        - `accountType` 'smartAccount' | 'GENERIC' | 'EOA' | 'ERC7579' — Account type. Blanc clients should use `ERC7579`; the legacy `smartAccount` value is equivalent and accepted for alps wire compatibility, and gets rewritten to `ERC7579` by the `alpsAccountType` versioning change before Zod validation.
        - `setupOps` object[] — Setup operations for the smart account. Only used if the account is not deployed
          - `to` string, required — Account deployment factory address
          - `data` string, required — Account deployment data
        - `accountContext` object, required — Account status per chain
        - `requiredDelegations` object — Map of chain -> EOA and delegated address required for user to sign for 7702 authorizations
      - `fees` object
        - `sponsorFee` object — Transaction fees
          - `relayer` number, required — Fee charged by relayer
          - `protocol` number, required — Fee charged by Rhinestone
        - `protocolFees` object — Protocol fees by token address (in token units)
        - `appFee` object[]
          - `feeBps` integer, required — Integrator app-fee rate in basis points.
          - `baseAmount` string, uint256, required — Principal amount the app fee was computed from, in token base units.
          - `amount` string, uint256, required — App-fee amount in token base units.
          - `chainId` integer, required — Origin chain ID where the app-fee token is spent.
          - `tokenAddress` string, required — Address of the token used to pay the app fee.
      - `sponsorSettings` object — Sponsor settings requested at quote time. Used during submit to distinguish sponsored zero-segment setup-only fills from unsponsored fallback fills.
        - `gas` boolean — Whether to sponsor gas for the intent
        - `bridgeFees` boolean — Whether to sponsor bridge fees for the intent
        - `swapFees` boolean — Whether to sponsor swap fees for the intent
      - `executionTokensReceived` string[] — Tokens that will be received by EOA executions. These will be swept to the recipient account.
      - `preClaimExecutions` object — User-supplied pre-claim executions included in the bundle, keyed by chain ID.
      - `accounting` object — Accounting facts derived from the selected plan and used for IntentOperation persistence. Excluded from the legacy serverSignature HMAC surface for rolling-deploy compatibility; submit integrity comes from the stored quote session.
        - `bridgeFill` object
          - `tokensOut` object[], required
            - `address` string, required
            - `chainId` number, required
            - `amount` string, uint256, required
    - `signedAuthorizations` object[] — List of 7702 authorizations signed by EOA matching sponsor
      - `chainId` number, required — Chain ID for EIP-7702 delegation, 0 means it can be applied to any chain
      - `address` string, required — Address of the delegate for EIP-7702 delegation
      - `nonce` number, required — Nonce for EIP-7702 delegation
      - `yParity` number, required — Y parity for EIP-7702 delegation
      - `r` string, required — R value for EIP-7702 delegation
      - `s` string, required — S value for EIP-7702 delegation
    - `recipientSignedAuthorizations` object[] — List of 7702 authorizations signed by EOA matching recipient account (if present)
      - `chainId` number, required — Chain ID for EIP-7702 delegation, 0 means it can be applied to any chain
      - `address` string, required — Address of the delegate for EIP-7702 delegation
      - `nonce` number, required — Nonce for EIP-7702 delegation
      - `yParity` number, required — Y parity for EIP-7702 delegation
      - `r` string, required — R value for EIP-7702 delegation
      - `s` string, required — S value for EIP-7702 delegation
    - `destinationSignature` string, required — Destination (target chain) signature
    - `targetExecutionSignature` string — Target execution signature
    - `originSignatures` union[], required — Origin (source chain) signatures
      - union
        - string
        - object
          - `preClaimSig` string, required
          - `notarizedClaimSig` string, required

## Response `201`

OK

- object
  - `result` union, required — Intent operation submission results
    - object
      - `id` string, uint256, required — Unique identifier
      - `status` 'PENDING', required — Status of the intent operations
    - object
      - `id` string, uint256, required — Nonce of the intent operations, used as identifier
      - `status` 'FAILED', required — Status of the intent operations

## Other responses

- `400` — Validation error
- `403` — API key scope denied
- `404` — The quoted intent has expired or was already submitted. Request a new route to retry.
- `500` — Server error

---

[API](https://skmtc.net/rhinestonewtf/apis/rhinestone-orchestrator-api.md) · [All operations](https://skmtc.net/rhinestonewtf/apis/rhinestone-orchestrator-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rhinestonewtf/rhinestone-orchestrator-api/versions/3656a04f8c42/schema)
