TransactionIntents

Create a transaction intent object.

Changed on

Creates a TransactionIntent.

A pending TransactionIntent has the response attribute as undefined.

After the TransactionIntent is created and broadcasted to the blockchain, response will be populated with the transaction hash and a status (1 success, 0 fail).

When using a non-custodial account, a nextAction attribute is returned with the userOperationHash that must be signed by the owner of the account.

post/v1/transaction_intents

Request

  • Base URL: https://api.openfort.io
  • URL: https://api.openfort.io/v1/transaction_intents
  • Auth: one of:
    • HTTP bearer
    • HTTP bearer
    • HTTP bearer
    • HTTP bearer

Headers

X-Behalf-Of-Projectstring

Project ID to act on behalf of (for ecosystem operations).

Request body

chainIdinteger required

The chain ID. Must be a supported chain.

playerstring

ID of the Player this TransactionIntent belongs to, if one exists (starts with pla_).

If you omit this parameter a new Player will be created.

accountstring

ID of the Account this TransactionIntent is executed with, if one exists (starts with acc_ or dac_).

When providing a Player and ChainID, you can omit this parameter.

policystring

ID of the Policy that defines the gas sponsorship strategy (starts with pol_). If no Policy is provided, the own Account native token funds will be used to pay for gas.

feeSponsorshipTokenstring

For a fee-sponsorship Policy that accepts several user-pay ERC-20 tokens, the on-chain address of the token the user pays the sponsored fee in. Must be one of the Policy's configured tokens on this chain; omit to use the Policy's first configured token.

externalOwnerAddressstring

Use this parameter to create a new Account for Player with the provided owner address.

If you omit this parameter and no Account exists for the Player, a custodial Account will be created.

optimisticboolean

Set to true to indicate that the transactionIntent request should be resolved as soon as possible, after the transactionIntent is created and simulated and before it arrives on chain.

signedAuthorizationstring

Signed authorization for delegated accounts. This signature is used to authorize the user operation for AccountAbstractionV8. The signature should be in the format "0x..." and will be parsed to extract r, s, and yParity values.

Example request

{
  "chainId": 80002,
  "player": "pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60",
  "account": "acc_e1b24353-1741-4a3d-9e91-2b0fd2942f60",
  "policy": "pol_7e07ae30-2a4d-48fa-803f-361da94905dd",
  "feeSponsorshipToken": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb",
  "externalOwnerAddress": "0x1234567890abcdef1234567890abcdef12345678",
  "optimistic": true,
  "signedAuthorization": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1c",
  "interactions": [
    {
      "value": "1000000000000000000",
      "contract": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35",
      "functionName": "mint",
      "functionArgs": [
        "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
      ]
    }
  ]
}

Response

Successful response.

idstring required
object'transactionIntent' required
createdAtinteger required
updatedAtinteger required

The unix timestamp in seconds when the transactionIntent was created.

chainIdinteger required

The chain ID.

abstractionType'accountAbstractionV6' | 'accountAbstractionV8' | 'accountAbstractionV9' | 'standard' required
userOperationHashstring
userOperationunknown
finalCoststring

The actual transaction cost in USD, available after on-chain confirmation.

Example response

{
  "chainId": 5,
  "details": {
    "from": "0x8ab66318aCC6b29A27e74e534bfe3ecf81C50387",
    "data": "0x8c5a...",
    "nonce": "0",
    "gas": "21000",
    "maxFeePerGas": "1000000000",
    "maxPriorityFeePerGas": "1000000000",
    "value": "0x8ab66318aCC6b29A27e74e534bfe3ecf81C50387"
  },
  "response": {
    "error": {
      "reason": "AA31: paymaster deposit too low",
      "name": "ExecutionResult",
      "explanation": {
        "cause": "The paymaster does not have enough native tokens deposited in the EntryPoint to cover the gas cost.",
        "solution": "Top up your account balance in the dashboard or deposit more to the Paymaster contract on the relevant chain."
      }
    }
  },
  "finalCost": "0.42",
  "interactions": [
    {
      "value": "1000000000000000000",
      "contract": "con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35",
      "functionName": "mint",
      "functionArgs": [
        "0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d"
      ]
    }
  ]
}

Changes

    • info

      added the new optional request property

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      removed from the response property anyOf list for the response status

    • info

      removed the zkSync enum value from the response property for the response status

    • breaking

      the / response's property type changed from no type to object for status

    • info

      the endpoint scheme security auth_token was added to the API

    • info

      the endpoint scheme security better_auth was removed from the API

    • info

      the security scope transactions:write was added to the endpoint's security scheme sk

    • info

      added the optional property to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the required property // to the response with the status