Home

API Reference

The Openfort API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

You can use the Openfort API in test mode, which doesn't affect your live data or interact with the banking networks. The API key you use to authenticate the request determines whether the request is live mode or test mode.

The Openfort API doesn't support bulk updates. You can work on only one object per request.

Authentication

The Openfort API uses API keys to authenticate requests. You can view and manage your API keys in the Openfort Dashboard.

Test mode secret keys have the prefix sk_test_ and live mode secret keys have the prefix sk_live_.

Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth.

Use your API key by setting it in the initial configuration of Openfort. The Node.js library will then automatically send this key in each request.

All API requests must be made over HTTPS and must be authenticated. Calls made over plain HTTP will fail. Below, you can see how to send a GET request to the players endpoint to get a list of all your players.

All API requests must be authenticated and made over HTTPS.

Authenticated

_10
curl https://api.openfort.xyz/v1/players \
_10
-H "Authorization: Bearer sk_test_bdd0•••••4f23"

Expanding Responses

Many objects allow you to request additional information as an expanded response by using the expand request parameter. This parameter is available on multiple API requests, and applies to the response of that request only.

In many cases, an object contains the ID of a related object in its response properties. For example, a Player can have multiple accounts. Those objects can be expanded inline with the expand request parameter. ID fields that can be expanded into objects are noted in this documentation with the expandable label.

You can use the expand param on any endpoint which returns expandable fields, including list, create, and update endpoints.

You can expand several objects at once by identifying multiple items in the expand array.

Authenticated

_10
curl https://api.openfort.xyz/v1/players/pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60 \
_10
-u YOUR_SECRET_KEY: \
_10
-d "expand[]=accounts"

Response

_35
{
_35
"id": "pla_...",
_35
"object": "player",
_35
"createdAt": 1689869074,
_35
"name": "Frank McCallister",
_35
"email": "Frank@dMcCallister.com",
_35
"description": "Tutorial",
_35
"livemode": false,
_35
"metadata": null,
_35
"accounts": [
_35
{
_35
"id": "acc_...",
_35
"object": "account",
_35
"createdAt": 1689869074,
_35
"address": "0x0B49...cc73",
_35
"chainId": 80001,
_35
"custodial": true,
_35
"deployed": false
_35
},
_35
{
_35
"id": "acc_7ccae011-4f30-41c0-876f-27679d3e81ef",
_35
"object": "account",
_35
"createdAt": 1689869074,
_35
"address": "0x0B49...cc73",
_35
"chainId": 5,
_35
"custodial": true,
_35
"deployed": false
_35
}
_35
],
_35
"transactionIntents": [
_35
{
_35
"id":"tin_..."
_35
}
_35
]
_35
}

Errors

In this guide, we will talk about what happens when something goes wrong while you work with the API. Let's look at some status codes and error types you might encounter.

You can tell if your request was successful by checking the status code when receiving an API response. If a response comes back unsuccessful, you can use the error type and error message to figure out what has gone wrong and do some rudimentary debugging.

Sign up a player.

When using Openfort Auth, the endpoint creates a player based on his email, and returns the jwt token for the player together with the player id.

Body Parameters
  • email
    REQUIRED
    string

    The email address of the user.

  • password
    REQUIRED
    string

    The password of the user.

  • name
    REQUIRED
    string

    The name of the user.

  • descriptionstring

    The description of the user.

post/iam/v1/auth/signup

1curl https://api.openfort.xyz/iam/v1/auth/signup \
2  -u "$YOUR_PUBLIC_KEY:" \
3  -d 'email=user@email.com' \
4  -d 'password=password' \
5  -d 'name=John Doe'

Login a player.

When using Openfort Auth, the endpoint authenticates the player based on his email, and returns the jwt token for the player together with the player id.

Body Parameters
  • email
    REQUIRED
    string

    The email address of the user.

  • password
    REQUIRED
    string

    The password of the user.

post/iam/v1/auth/login

1curl https://api.openfort.xyz/iam/v1/auth/login \
2  -u "$YOUR_PUBLIC_KEY:" \
3  -d 'email=user@email.com' \
4  -d 'password=password'

Verify an auth token.

When using Openfort Auth, the endpoint verifies the token generated by Openfort Auth and retrieves a corresponding player.

Query Parameters
  • token
    REQUIRED
    string

    Specifies the auth token.

get/iam/v1/auth/verify

1curl https://api.openfort.xyz/iam/v1/auth/verify \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwcm9qZWN0SWQiOiJwcm9qZWN0XzQ4ZWViYTU3LTJjZDUtNDE1OS1hMmNiLTA1N2EyM2EzNWU2NSIsInVzZXJJZCI6InVzZXJfNDhlZWI1Ny0yY2Q1LTQxNTktYTJjYi0wNTdhMjNhMzVlNjUiLCJpYXQiOjE2MjY0NjY0NzcsImV4cCI6MTYyN'

List authenticated players.

Query Parameters
  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • emailstring

    Specifies the email address of the user.

get/iam/v1/players

1curl https://api.openfort.xyz/iam/v1/players \
2  -u "$YOUR_SECRET_KEY:"
{
  "object": "list",
  "url": "/iam/v1/players",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "pla_ff54b031-a878-4ca2-9cf5-ae190f921e9b",
      "object": "player",
      "player": {
        "id": "pla_ff54b031-a878-4ca2-9cf5-ae190f921e9b"
      },
      "provider": "email",
      "createdAt": 1691658234,
      "updatedAt": 1691658234,
      "email": "jaume@openfort.xyz"
    }
  ]
}

Register a key for the authenticated player.

Body Parameters
  • pk_ciphertext
    REQUIRED
    string

    The cipher text of the key to register.

  • salt
    REQUIRED
    string

    The salt used expand the password of the user.

  • owner_address
    REQUIRED
    string

    The address of the owner.

post/iam/v1/players/register_key

1curl https://api.openfort.xyz/iam/v1/players/register_key \
2  -u "$YOUR_PUBLIC_KEY:" \
3  -d 'pk_ciphertext=0xe12fa94af9dac83ab16fa151043c9aa6084929898b27752e56a03173292a6e5d194455ee2e5dfa443c67d02b323a29f6b5aa0a7b538982da4b649bf7759e5c7c1c' \
4  -d 'salt=0xe12fa94af9dac83ab16fa151043c9aa6084929898b27752e56a03173292a6e5d194455ee2e5dfa443c67d02b323a29f6b5aa0a7b538982da4b649bf7759e5c7c1c' \
5  -d 'owner_address=0x1234567890abcdef1234567890abcdef12345678'
{
  "player": "pla_...",
  "ownerAddress": "0x...",
  "createdAt": 1691658234,
  "updatedAt": 1691658234
}

Retrieve the key for the authenticated player.

get/iam/v1/players/retrieve_key

1curl https://api.openfort.xyz/iam/v1/players/retrieve_key \
2  -u "$YOUR_PUBLIC_KEY:"
{
  "player": "pla_...",
  "ownerAddress": "0x...",
  "salt": "0x...",
  "pkCiphertext": "0x...",
  "createdAt": 1691658234,
  "updatedAt": 1691658234
}

Get the google oauth signin url.

get/iam/v1/oauth/google/signin_url

1curl https://api.openfort.xyz/iam/v1/oauth/google/signin_url \
2  -u "$YOUR_PUBLIC_KEY:"

Get the google oauth token.

Query Parameters
  • key
    REQUIRED
    string

    Specifies the oauth key.

get/iam/v1/oauth/google/token

1curl https://api.openfort.xyz/iam/v1/oauth/google/token \
2  -u "$YOUR_PUBLIC_KEY:" \

List of oauth configurations.

The endpoint retrieves the list of oauth configurations for the current project environment.

get/iam/v1/oauth

1curl https://api.openfort.xyz/iam/v1/oauth \
2  -u "$YOUR_SECRET_KEY:"
{
  "data": [
    {
      "enabled": true,
      "baseUrl": "https://mygame.dev.gamingservices.accelbyte.io/",
      "clientId": "1234567890abcdef1234567890abcdef",
      "clientSecret": "abcdef1234567890abcdef1234567890",
      "provider": "accelbyte"
    }
  ]
}

Create oauth configuration.

The endpoint creates oauth configuration for the current project environment.

post/iam/v1/oauth

1curl https://api.openfort.xyz/iam/v1/oauth \
2  -u "$YOUR_SECRET_KEY:"
{
  "enabled": true,
  "baseUrl": "https://mygame.dev.gamingservices.accelbyte.io/",
  "clientId": "1234567890abcdef1234567890abcdef",
  "clientSecret": "abcdef1234567890abcdef1234567890",
  "provider": "accelbyte"
}

Get oauth configuration.

The endpoint retrieves oauth configuration for specified provider for the current project environment.

Path Parameters
  • provider
    REQUIRED
    string

    One of:

    accelbyte

    firebase

    google

    lootlocker

    playfab

    Specifies the oauth provider type.

get/iam/v1/oauth/{provider}

1curl https://api.openfort.xyz/iam/v1/oauth/{provider} \
2  -u "$YOUR_SECRET_KEY:"
{
  "enabled": true,
  "baseUrl": "https://mygame.dev.gamingservices.accelbyte.io/",
  "clientId": "1234567890abcdef1234567890abcdef",
  "clientSecret": "abcdef1234567890abcdef1234567890",
  "provider": "accelbyte"
}

Delete oauth configuration.

The endpoint deletes oauth configuration for specified provider for the current project environment.

Path Parameters
  • provider
    REQUIRED
    string

    One of:

    accelbyte

    firebase

    google

    lootlocker

    playfab

    Specifies the oauth provider type.

delete/iam/v1/oauth/{provider}

1curl https://api.openfort.xyz/iam/v1/oauth/{provider} \
2  -u "$YOUR_SECRET_KEY:"

Authorize player with token.

The endpoint verifies the token generated by OAuth provider, creates or retrieves a player based on his email, and returns the jwt token for the player together with the player id.

Path Parameters
  • provider
    REQUIRED
    string

    One of:

    accelbyte

    firebase

    google

    lootlocker

    playfab

    OAuth provider

Body Parameters
  • token
    REQUIRED
    string

    Access token to be verified

post/iam/v1/oauth/{provider}/authorize

1curl https://api.openfort.xyz/iam/v1/oauth/{provider}/authorize \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
{
  "playerId": "pla_...",
  "token": "abcd...."
}

Retrieve player by token.

The endpoint verifies the token generated by OAuth provider and retrieves a corresponding player.

Path Parameters
  • provider
    REQUIRED
    string

    One of:

    accelbyte

    firebase

    google

    lootlocker

    playfab

    OAuth provider

Body Parameters
  • token
    REQUIRED
    string

    Access token to be verified

post/iam/v1/oauth/{provider}/verify

1curl https://api.openfort.xyz/iam/v1/oauth/{provider}/verify \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
{
  "id": "pla_00000000-0000-0000-0000-000000000000",
  "createdAt": 1689869074,
  "object": "player",
  "description": "John Smith",
  "metadata": {
    "firstName": "John",
    "lastName": "Smith"
  },
  "name": "My Player",
  "accounts": [
    {
      "id": "acc_8888888888-8888-8888-8888-888888888888"
    }
  ],
  "transactionIntents": [
    {
      "id": "tin_AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    }
  ]
}

Retrieve player by external id.

Retrieves the player based on his id in the external provider system.

Path Parameters
  • provider
    REQUIRED
    string

    One of:

    accelbyte

    firebase

    google

    lootlocker

    playfab

    OAuth provider

  • external_user_id
    REQUIRED
    string

    External user id

get/iam/v1/oauth/{provider}/user/{external_user_id}

1curl https://api.openfort.xyz/iam/v1/oauth/{provider}/user/1234567890 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "pla_00000000-0000-0000-0000-000000000000",
  "createdAt": 1689869074,
  "object": "player",
  "description": "John Smith",
  "metadata": {
    "firstName": "John",
    "lastName": "Smith"
  },
  "name": "My Player",
  "accounts": [
    {
      "id": "acc_8888888888-8888-8888-8888-888888888888"
    }
  ],
  "transactionIntents": [
    {
      "id": "tin_AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    }
  ]
}

List accounts of a player.

Returns a list of accounts for the given player.

The accounts are returned sorted by creation date, with the most recently created accounts appearing first.

By default, a maximum of 10 accounts are shown per page.

Query Parameters
  • player
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_)

  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expandarray

    An array with:

    transactionIntents

    player

    Specifies the fields to expand in the response.

get/v1/accounts

1curl https://api.openfort.xyz/v1/accounts \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'player=pla_6f6c9067-89fa-4fc8-ac72-c242a268c584'
{
  "object": "list",
  "url": "/v1/accounts",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
      "createdAt": 1689869074,
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "chainId": 80001,
      "deployed": true,
      "custodial": false,
      "object": "account",
      "accountType": "Upgradeable_v05",
      "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "player": {
        "id": "pla_c502d628-5bb3-42f2-b8d5-62ba46717f3a"
      },
      "transactionIntents": [
        {
          "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
        }
      ]
    }
  ]
}

Create an account object.

Creates a new blockchain account for the provided player. If not player is provided, a new one will be created.

Account creation does not consume any gas. All accounts of a player will use the same address across blockchains.

Each player can only have one account per chain.

Body Parameters
  • chainId
    REQUIRED
    integer

    The chain ID. Must be a supported chain.

  • externalOwnerAddressstring

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

  • accountTypestring

    The type of smart account that will be created (e.g. ERC6551V1, ManagedV5, UpgradeableV5). Defaults to UpgradeableV5.

  • defaultGuardianboolean

    For account types that support social recovery, wether to enable Openfort as guardian or not. Defaults to false.

  • tokenContractstring

    If ERC6551, the address of the NFT contract to use

  • tokenIdinteger

    If ERC6551, the tokenId from the NFT contract that will serve as owner

  • playerstring

    ID of the Player this Account belongs to (starts with pla_).

post/v1/accounts

1curl https://api.openfort.xyz/v1/accounts \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'chainId=80001'
{
  "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 80001,
  "deployed": true,
  "custodial": false,
  "object": "account",
  "accountType": "Upgradeable_v05",
  "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "player": {
    "id": "pla_c502d628-5bb3-42f2-b8d5-62ba46717f3a"
  },
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

Get existing account.

Retrieves the details of an existing account.

Supply the unique account ID from either a account creation request or the account list, and Openfort will return the corresponding account information.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID (starts with acc_).

Query Parameters
  • expandarray

    An array with:

    transactionIntents

    player

get/v1/accounts/{id}

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 80001,
  "deployed": true,
  "custodial": false,
  "object": "account",
  "accountType": "Upgradeable_v05",
  "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "player": {
    "id": "pla_c502d628-5bb3-42f2-b8d5-62ba46717f3a"
  },
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

Request transfer ownership of account.

Perform a request to change the owner of an account.

To perform an update on the owner of an account, first you must provide a new owner address. Once requested, the owner must accept to take ownership by calling acceptOwnership() in the smart contract account.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID (starts with acc_).

Body Parameters
  • newOwnerAddress
    REQUIRED
    string

    The address of the new owner

  • policy
    REQUIRED
    string

    ID of the Policy that defines the gas sponsorship strategy (starts with pol_). A policy must be provided.

post/v1/accounts/{id}/request_transfer_ownership

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/request_transfer_ownership \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'newOwnerAddress=0x1234567890abcdef1234567890abcdef12345678' \
4  -d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
    "nonce": "0x2",
    "initCode": "0x",
    "callData": "0xb61d...0000",
    "callGasLimit": "0x27863",
    "verificationGasLimit": "0x16001",
    "preVerificationGas": "0xb818",
    "maxFeePerGas": "0x62590091",
    "maxPriorityFeePerGas": "0x62590091",
    "paymasterAndData": "0x3210...b51c",
    "signature": "0x6202...3d1b"
  },
  "chainId": 80001,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [
      {
        "removed": false,
        "transactionIndex": 0,
        "blockNumber": 44904492,
        "transactionHash": "0x25d3...005c",
        "address": "0x5FF1...2789",
        "topics": [
          "0xbb47...f972"
        ],
        "data": "0x",
        "logIndex": 0,
        "blockHash": "0x8a69...6d59"
      }
    ],
    "blockNumber": 8789286,
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": "336730",
    "status": 1
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Cancel request to transfer ownership of an account.

Cancel a pending transfer of ownership.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID (starts with acc_).

Body Parameters
  • policy
    REQUIRED
    string

    ID of the Policy that defines the gas sponsorship strategy (starts with pol_). A policy must be provided.

post/v1/accounts/{id}/cancel_transfer_ownership

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/cancel_transfer_ownership \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
    "nonce": "0x2",
    "initCode": "0x",
    "callData": "0xb61d...0000",
    "callGasLimit": "0x27863",
    "verificationGasLimit": "0x16001",
    "preVerificationGas": "0xb818",
    "maxFeePerGas": "0x62590091",
    "maxPriorityFeePerGas": "0x62590091",
    "paymasterAndData": "0x3210...b51c",
    "signature": "0x6202...3d1b"
  },
  "chainId": 80001,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [
      {
        "removed": false,
        "transactionIndex": 0,
        "blockNumber": 44904492,
        "transactionHash": "0x25d3...005c",
        "address": "0x5FF1...2789",
        "topics": [
          "0xbb47...f972"
        ],
        "data": "0x",
        "logIndex": 0,
        "blockHash": "0x8a69...6d59"
      }
    ],
    "blockNumber": 8789286,
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": "336730",
    "status": 1
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Sign a given payload

Signs the typed data value with types data structure for domain using the EIP-712 specification.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID (starts with acc_).

Body Parameters
  • domain
    REQUIRED
    object

    Domain. Specific to the dApp.

  • types
    REQUIRED
    object
  • primaryType
    REQUIRED
    string
  • value
    REQUIRED
    object
  • hash
    REQUIRED
    string

    Hash to verify and that will be signed

post/v1/accounts/{id}/sign_payload

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/sign_payload \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'domain[0][chainId]=80001' \
4  -d 'primaryType=Mail' \
5  -d 'hash=0x3d8c6cab96bc24c87162c529bed5ba88b4617a7ea8bef66489a541d043ac6e8b'
{
  "account": "acc_...",
  "hash": "0x25d3...005c",
  "object": "signature",
  "signature": "0x25d3...005c",
  "address": "0x8C5cedA46A2...36Ad2F6255BdBEa"
}

Sync account state with the blockchain

Synchronize the account state with the blockchain. Specifically, it updates the account owner and whether its deployed or not.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID (starts with acc_).

post/v1/accounts/{id}/sync

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/sync \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 80001,
  "deployed": true,
  "custodial": false,
  "object": "account",
  "accountType": "Upgradeable_v05",
  "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "player": {
    "id": "pla_c502d628-5bb3-42f2-b8d5-62ba46717f3a"
  },
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

Deploy an account.

This endpoint can be used to deploy an account that was counterfactually generated.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID (starts with acc_).

Body Parameters
  • policy
    REQUIRED
    string

    The policy ID (starts with pol_)

post/v1/accounts/{id}/deploy

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/deploy \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
{
  "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 80001,
  "deployed": true,
  "custodial": false,
  "object": "account",
  "accountType": "Upgradeable_v05",
  "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "player": {
    "id": "pla_c502d628-5bb3-42f2-b8d5-62ba46717f3a"
  },
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

Start a recovery process of a recoverable account.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID (starts with acc_).

Body Parameters
  • newOwnerAddress
    REQUIRED
    string

    Address of the new owner

  • policy
    REQUIRED
    string

    The policy ID (starts with pol_)

post/v1/accounts/{id}/start_recovery

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/start_recovery \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'newOwnerAddress=0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d' \
4  -d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
    "nonce": "0x2",
    "initCode": "0x",
    "callData": "0xb61d...0000",
    "callGasLimit": "0x27863",
    "verificationGasLimit": "0x16001",
    "preVerificationGas": "0xb818",
    "maxFeePerGas": "0x62590091",
    "maxPriorityFeePerGas": "0x62590091",
    "paymasterAndData": "0x3210...b51c",
    "signature": "0x6202...3d1b"
  },
  "chainId": 80001,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [
      {
        "removed": false,
        "transactionIndex": 0,
        "blockNumber": 44904492,
        "transactionHash": "0x25d3...005c",
        "address": "0x5FF1...2789",
        "topics": [
          "0xbb47...f972"
        ],
        "data": "0x",
        "logIndex": 0,
        "blockHash": "0x8a69...6d59"
      }
    ],
    "blockNumber": 8789286,
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": "336730",
    "status": 1
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Complete a recovery process of a recoverable account.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID (starts with acc_).

Body Parameters
  • newOwnerAddress
    REQUIRED
    string

    Address of the new owner

  • policy
    REQUIRED
    string

    The policy ID (starts with pol_)

  • signaturesarray

    Signatures by the guardians

post/v1/accounts/{id}/complete_recovery

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/complete_recovery \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'newOwnerAddress=0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d' \
4  -d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
    "nonce": "0x2",
    "initCode": "0x",
    "callData": "0xb61d...0000",
    "callGasLimit": "0x27863",
    "verificationGasLimit": "0x16001",
    "preVerificationGas": "0xb818",
    "maxFeePerGas": "0x62590091",
    "maxPriorityFeePerGas": "0x62590091",
    "paymasterAndData": "0x3210...b51c",
    "signature": "0x6202...3d1b"
  },
  "chainId": 80001,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [
      {
        "removed": false,
        "transactionIndex": 0,
        "blockNumber": 44904492,
        "transactionHash": "0x25d3...005c",
        "address": "0x5FF1...2789",
        "topics": [
          "0xbb47...f972"
        ],
        "data": "0x",
        "logIndex": 0,
        "blockHash": "0x8a69...6d59"
      }
    ],
    "blockNumber": 8789286,
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": "336730",
    "status": 1
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

List contracts.

List of all contracts per project. By default, a maximum of ten contracts are shown.

Query Parameters
  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • namestring

    Specifies the name of the contract.

  • deletedboolean

    Specifies whether to include deleted contracts.

  • chainIdinteger

    The chain ID of the contract.

  • addressstring

    Specifies the address of the contract.

get/v1/contracts

1curl https://api.openfort.xyz/v1/contracts \
2  -u "$YOUR_SECRET_KEY:"
{
  "object": "list",
  "url": "/v1/contracts",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
      "createdAt": 1689869074,
      "object": "contract",
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "chainId": 80001,
      "deleted": false,
      "name": "MyContract",
      "publicVerification": true,
      "abi": [
        {
          "constant": false,
          "inputs": [
            {
              "name": "addr",
              "type": "address"
            }
          ]
        }
      ]
    }
  ]
}

Create contract object.

Add a new contract to your project in Openfort

Body Parameters
  • name
    REQUIRED
    string

    Specifies the name of the contract (Only for display purposes).

  • chainId
    REQUIRED
    integer

    Specifies the chain ID of the contract. Must be a supported chain.

  • address
    REQUIRED
    string

    Specifies the address of the contract.

  • abiarray

    Specifies the ABI of the contract.

  • publicVerificationboolean

    Specifies whether to verify the contract publicly.

post/v1/contracts

1curl https://api.openfort.xyz/v1/contracts \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'name=NFT Contract' \
4  -d 'chainId=80001' \
5  -d 'address=0x742e6e61d760164d56f44801054bcf40fa821d97'
{
  "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "object": "contract",
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 80001,
  "deleted": false,
  "name": "MyContract",
  "publicVerification": true,
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ]
    }
  ]
}

Get a contract.

Retrieve a contract by providing their contract id.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique contract ID (starts with con_).

get/v1/contracts/{id}

1curl https://api.openfort.xyz/v1/contracts/con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "object": "contract",
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 80001,
  "deleted": false,
  "name": "MyContract",
  "publicVerification": true,
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ]
    }
  ]
}

Updates a contract object.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique contract ID (starts with con_).

Body Parameters
  • namestring

    Specifies the name of the contract (Only for display purposes).

  • chainIdinteger

    Specifies the chain ID of the contract. Must be a supported chain.

  • deletedboolean

    Specifies whether to delete the contract.

  • addressstring

    Specifies the address of the contract.

  • abiarray

    Specifies the ABI of the contract.

  • publicVerificationboolean

    Specifies whether to verify the contract publicly.

post/v1/contracts/{id}

1curl https://api.openfort.xyz/v1/contracts/con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "object": "contract",
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 80001,
  "deleted": false,
  "name": "MyContract",
  "publicVerification": true,
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ]
    }
  ]
}

Deletes a contract object.

Delete a contract from the project by providing its contract id.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique contract ID (starts with con_).

delete/v1/contracts/{id}

1curl https://api.openfort.xyz/v1/contracts/con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "deleted": true,
  "object": "contract"
}

Read on chain contract data.

Using this endpoint, you can get the data returned by any readable function listed in a contracts ABI. This could be things like querying the totalSupply of a currency contract, the number of owners of an items contract, and more.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique contract ID (starts with con_).

Query Parameters
  • functionName
    REQUIRED
    string

    The function name of the contract.

  • functionArgsarray

    The function arguments of the contract, in string format. Accepts pla_, con_ and acc_ IDs.

get/v1/contracts/{id}/read

1curl https://api.openfort.xyz/v1/contracts/con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35/read \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'functionName=mint'
{
  "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "object": "readContract",
  "functionName": "balanceOf",
  "result": {
    "type": "BigNumber",
    "hex": "0x00"
  }
}

Get NFTs list of player.

For development purposes only.

Under higher load scenarios, this endpoint may be rate limited.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Query Parameters
  • chainId
    REQUIRED
    integer

    Filter by chain id.

  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • contractarray

    Filter by contract ID (starts with con_).

get/v1/players/{id}/inventory/nft

1curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/inventory/nft \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'chainId=80001'
{
  "object": "list",
  "url": "/v1/players/pla_.../inventory/nft",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "assetType": "ERC1155",
      "amount": "1",
      "tokenId": 1,
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "lastTransferredAt": 1689869074
    }
  ]
}

Get cryptocurrency list of player.

For development purposes only.

Under higher load scenarios, this endpoint may be rate limited.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Query Parameters
  • chainId
    REQUIRED
    integer

    Filter by chain id.

  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • contractarray

    Filter by contract ID (starts with con_).

get/v1/players/{id}/inventory/cryptocurrency

1curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/inventory/cryptocurrency \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'chainId=80001'
{
  "object": "list",
  "url": "/v1/players/pla_.../inventory/cryptocurrency",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "assetType": "ERC20",
      "amount": "1000000000000000000",
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "lastTransferredAt": 1689869074
    }
  ]
}

Get native token list of player.

For development purposes only.

Under higher load scenarios, this endpoint may be rate limited.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Query Parameters
  • chainId
    REQUIRED
    integer

    Filter by chain id.

get/v1/players/{id}/inventory/native

1curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/inventory/native \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'chainId=80001'
{
  "object": "inventory",
  "url": "/v1/players/pla_.../inventory/native",
  "data": {
    "assetType": "ETH",
    "amount": "1000000000000000000",
    "lastTransferredAt": 1689869074
  }
}

Retrieves the NFT assets of an existing account.

For development purposes only.

Under higher load scenarios, this endpoint may be rate limited.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

Query Parameters
  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • contractIdarray
get/v1/accounts/{id}/inventory/nft

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/inventory/nft \
2  -u "$YOUR_SECRET_KEY:"
{
  "object": "list",
  "url": "/v1/accounts/acc_.../inventory/nft",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "assetType": "ERC1155",
      "amount": "1",
      "tokenId": 1,
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "lastTransferredAt": 1689869074
    }
  ]
}

Retrieves the cryptocurrency assets of an existing account.

For development purposes only.

Under higher load scenarios, this endpoint may be rate limited.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

Query Parameters
  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • contractIdarray
get/v1/accounts/{id}/inventory/cryptocurrency

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/inventory/cryptocurrency \
2  -u "$YOUR_SECRET_KEY:"
{
  "object": "list",
  "url": "/v1/accounts/acc_.../inventory/cryptocurrency",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "assetType": "ERC20",
      "amount": "1000000000000000000",
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "lastTransferredAt": 1689869074
    }
  ]
}

Retrieves the native asset of an existing account.

For development purposes only.

Under higher load scenarios, this endpoint may be rate limited.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

get/v1/accounts/{id}/inventory/native

1curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/inventory/native \
2  -u "$YOUR_SECRET_KEY:"
{
  "object": "inventory",
  "url": "/v1/accounts/acc_.../inventory/native",
  "data": {
    "assetType": "ETH",
    "amount": "1000000000000000000",
    "lastTransferredAt": 1689869074
  }
}

List notifications.

Returns a list of notifications.

Notifications are useful to get notified about events that happen on-chain or in your Openfort account.

Notifications are returned sorted by creation date, with the most recently created notifications appearing first.

By default, a maximum of 10 notifications are shown per page.

Query Parameters
  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expandarray

    An array with:

    subscriptions

    triggers

    Specifies the fields to expand in the response.

  • deletedboolean

    Specifies whether to include deleted notifications.

  • namestring

    Specifies the name of the notifications.

get/v1/notifications

1curl https://api.openfort.xyz/v1/notifications \
2  -u "$YOUR_SECRET_KEY:"
{
  "object": "list",
  "url": "/v1/notifications",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "not_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
      "createdAt": 1689869074,
      "updatedAt": 1689869074,
      "name": "Low balance",
      "deleted": false,
      "object": "notification",
      "triggers": [],
      "subscriptions": []
    }
  ]
}

Create a notification object.

Create a notification object.

Body Parameters
  • name
    REQUIRED
    string

    The name of the notification.

post/v1/notifications

1curl https://api.openfort.xyz/v1/notifications \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'name=Low balance'
{
  "id": "not_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "updatedAt": 1689869074,
  "name": "Low balance",
  "deleted": false,
  "object": "notification",
  "triggers": [],
  "subscriptions": []
}

Get existing notification.

Retrieves the details of an existing notification.

Supply the unique notification ID.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique notification ID (starts with not_).

Query Parameters
  • expandarray

    An array with:

    subscriptions

    triggers

get/v1/notifications/{id}

1curl https://api.openfort.xyz/v1/notifications/not_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "not_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "updatedAt": 1689869074,
  "name": "Low balance",
  "deleted": false,
  "object": "notification",
  "triggers": [],
  "subscriptions": []
}

Deletes a notification object.

Delete a notification by providing its notification id.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique notification ID (starts with not_).

delete/v1/notifications/{id}

1curl https://api.openfort.xyz/v1/notifications/not_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "not_00000000-0000-0000-0000-000000000000",
  "object": "notification",
  "deleted": true
}

List notification subscriptions of a notification.

Returns a list of subscriptions of a notification.

Subscriptions define the the way you will get notified and the target of the notification.

Subscriptions are returned sorted by creation date, with the most recently created accounts appearing first.

By default, a maximum of 10 notification subscriptions are shown per page.

Query Parameters
  • notification
    REQUIRED
    string

    Specifies the unique notification ID (starts with not_).

  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

get/v1/notification_subscriptions

1curl https://api.openfort.xyz/v1/notification_subscriptions \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'notification=not_48eeba57-2cd5-4159-a2cb-057a23a35e65'
{
  "object": "list",
  "url": "/v1/notification_subscriptions",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "nsu_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
      "createdAt": 1689869074,
      "target": "jaume@openfort.xyz",
      "method": "Email",
      "object": "notificationSubscription"
    }
  ]
}

Create a notification subscription object.

Create a subscription for the provided notification.

Body Parameters
  • notification
    REQUIRED
    string

    The notification ID (starts with not_).

  • method
    REQUIRED
    string

    One of:

    Email

    Webhook

    The type of notification.

  • target
    REQUIRED
    string

    The receiver of notifications.

post/v1/notification_subscriptions

1curl https://api.openfort.xyz/v1/notification_subscriptions \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'notification=not_e0b84653-1741-4a3d-9e91-2b0fd2942f60' \
4  -d 'method=Email' \
5  -d 'target=jaume@openfort.xyz'
{
  "id": "nsu_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "target": "jaume@openfort.xyz",
  "method": "Email",
  "object": "notificationSubscription"
}

Get existing notification subscription.

Retrieves the details of an existing notification subscription.

Supply the unique notification subscription ID.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique notification subscription ID (starts with not_).

get/v1/notification_subscriptions/{id}

1curl https://api.openfort.xyz/v1/notification_subscriptions/nsu_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "nsu_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "target": "jaume@openfort.xyz",
  "method": "Email",
  "object": "notificationSubscription"
}

Deletes a notification subscription object.

Delete a notification subscription by providing its notification subscription id.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique notification subscription ID (starts with ntr_).

delete/v1/notification_subscriptions/{id}

1curl https://api.openfort.xyz/v1/notification_subscriptions/nsu_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "nsu_00000000-0000-0000-0000-000000000000",
  "object": "notificationSubscription",
  "deleted": true
}

List notification triggers of a notification.

Returns a list of triggers of a notification.

Triggers define the conditions that will trigger a notification.

Triggers are returned sorted by creation date, with the most recently created accounts appearing first.

By default, a maximum of 10 notification triggers are shown per page.

Query Parameters
  • notification
    REQUIRED
    string

    Specifies the unique notification ID (starts with not_).

  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

get/v1/notification_triggers

1curl https://api.openfort.xyz/v1/notification_triggers \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'notification=not_48eeba57-2cd5-4159-a2cb-057a23a35e65'
{
  "object": "list",
  "url": "/v1/notification_triggers",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "not_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
      "threshold": "1000000000000000000",
      "createdAt": 1689869074,
      "account": {
        "id": "dac_00000000-0000-0000-0000-000000000000"
      },
      "chainId": 80001,
      "object": "notificationTrigger",
      "type": "developer_account_trigger"
    }
  ]
}

Create a notification trigger object.

Create a trigger for the provided notification.

Body Parameters
  • notification
    REQUIRED
    string

    The notification ID (starts with not_).

  • type
    REQUIRED
    string

    One of:

    contract_trigger

    developer_account_trigger

    project_balance_trigger

    The type of trigger notification to add.

  • threshold
    REQUIRED
    string

    The threshold value at which (greater or equal) the notification will be triggered.

  • functionNamestring

    The function name of the contract. Accepts a a function signature as well (e.g. mint(address)).

  • functionArgsarray

    The function arguments of the contract, in string format. If you provide one of a pla_..., con_... or acc_... it will be converted to the corresponding address.

  • contractstring

    The contract ID you want to interact with. Must have been added to Openfort first, starts with con_.

  • chainIdinteger

    The chain ID. Must be a supported chain.

  • accountstring

    ID of the Developer Account this trigger will check the balance of (starts with dac_).

post/v1/notification_triggers

1curl https://api.openfort.xyz/v1/notification_triggers \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'notification=not_e0b84653-1741-4a3d-9e91-2b0fd2942f60' \
4  -d 'type=project_balance_trigger' \
5  -d 'threshold=1000000000'
{
  "id": "not_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "threshold": "1000000000000000000",
  "createdAt": 1689869074,
  "account": {
    "id": "dac_00000000-0000-0000-0000-000000000000"
  },
  "chainId": 80001,
  "object": "notificationTrigger",
  "type": "developer_account_trigger"
}

Get existing notification trigger.

Retrieves the details of an existing notification trigger.

Supply the unique notification trigger ID.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique notification trigger ID (starts with ntr_).

get/v1/notification_triggers/{id}

1curl https://api.openfort.xyz/v1/notification_triggers/ntr_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "not_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "threshold": "1000000000000000000",
  "createdAt": 1689869074,
  "account": {
    "id": "dac_00000000-0000-0000-0000-000000000000"
  },
  "chainId": 80001,
  "object": "notificationTrigger",
  "type": "developer_account_trigger"
}

Deletes a notification trigger object.

Delete a notification trigger by providing its notification trigger id.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique notification trigger ID (starts with ntr_).

delete/v1/notification_triggers/{id}

1curl https://api.openfort.xyz/v1/notification_triggers/ntr_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "ntr_00000000-0000-0000-0000-000000000000",
  "object": "notificationTrigger",
  "deleted": true
}

List players.

By default, a maximum of ten players are shown.

Query Parameters
  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expandarray

    An array with:

    transactionIntents

    accounts

    Specifies the fields to expand in the response.

  • namestring

    Filter by player name.

get/v1/players

1curl https://api.openfort.xyz/v1/players \
2  -u "$YOUR_SECRET_KEY:"
{
  "object": "list",
  "url": "/v1/players",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "pla_00000000-0000-0000-0000-000000000000",
      "createdAt": 1689869074,
      "object": "player",
      "description": "John Smith",
      "metadata": {
        "firstName": "John",
        "lastName": "Smith"
      },
      "name": "My Player",
      "accounts": [
        {
          "id": "acc_8888888888-8888-8888-8888-888888888888"
        }
      ],
      "transactionIntents": [
        {
          "id": "tin_AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
        }
      ]
    }
  ]
}

Create a player object.

Creates a Player.

Body Parameters
  • namestring

    Specifies the player name.

  • descriptionstring

    Specifies the player description.

  • metadataobject

    Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata.

post/v1/players

1curl https://api.openfort.xyz/v1/players \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "pla_00000000-0000-0000-0000-000000000000",
  "createdAt": 1689869074,
  "object": "player",
  "description": "John Smith",
  "metadata": {
    "firstName": "John",
    "lastName": "Smith"
  },
  "name": "My Player",
  "accounts": [
    {
      "id": "acc_8888888888-8888-8888-8888-888888888888"
    }
  ],
  "transactionIntents": [
    {
      "id": "tin_AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    }
  ]
}

Retrieves the details of an existing player.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Query Parameters
  • expandarray

    An array with:

    transactionIntents

    accounts

    Specifies the expandable fields.

get/v1/players/{id}

1curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "pla_00000000-0000-0000-0000-000000000000",
  "createdAt": 1689869074,
  "object": "player",
  "description": "John Smith",
  "metadata": {
    "firstName": "John",
    "lastName": "Smith"
  },
  "name": "My Player",
  "accounts": [
    {
      "id": "acc_8888888888-8888-8888-8888-888888888888"
    }
  ],
  "transactionIntents": [
    {
      "id": "tin_AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    }
  ]
}

Updates a player object.

Updates the specified Player by setting the values of the parameters passed.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Body Parameters
  • namestring

    Specifies the player name.

  • descriptionstring

    Specifies the player description.

  • metadataobject

    Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata.

post/v1/players/{id}

1curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "pla_00000000-0000-0000-0000-000000000000",
  "createdAt": 1689869074,
  "object": "player",
  "description": "John Smith",
  "metadata": {
    "firstName": "John",
    "lastName": "Smith"
  },
  "name": "My Player",
  "accounts": [
    {
      "id": "acc_8888888888-8888-8888-8888-888888888888"
    }
  ],
  "transactionIntents": [
    {
      "id": "tin_AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    }
  ]
}

Deletes a player object.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

delete/v1/players/{id}

1curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "pla_00000000-0000-0000-0000-000000000000",
  "object": "player",
  "deleted": true
}

Request transfer ownership of a player.

This endpoint allows you to perform a request to change the owner of an account. To perform an update on the owner of an account, first you must provide a new owner address. Once requested, the owner must accept to take ownership by calling acceptOwnership() in the smart contract account.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Body Parameters
  • policy
    REQUIRED
    string

    ID of the Policy that defines the gas sponsorship strategy (starts with pol_). A policy must be provided.

  • chainId
    REQUIRED
    integer

    The chain ID. Must be a supported chain.

  • newOwnerAddress
    REQUIRED
    string

    The address of the new owner

  • playerstring

    ID of the Player that has the Account you want to transfer ownership from (starts with pla_).

post/v1/players/{id}/request_transfer_ownership

1curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/request_transfer_ownership \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd' \
4  -d 'chainId=80001' \
5  -d 'newOwnerAddress=0x1234567890abcdef1234567890abcdef12345678'
{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
    "nonce": "0x2",
    "initCode": "0x",
    "callData": "0xb61d...0000",
    "callGasLimit": "0x27863",
    "verificationGasLimit": "0x16001",
    "preVerificationGas": "0xb818",
    "maxFeePerGas": "0x62590091",
    "maxPriorityFeePerGas": "0x62590091",
    "paymasterAndData": "0x3210...b51c",
    "signature": "0x6202...3d1b"
  },
  "chainId": 80001,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [
      {
        "removed": false,
        "transactionIndex": 0,
        "blockNumber": 44904492,
        "transactionHash": "0x25d3...005c",
        "address": "0x5FF1...2789",
        "topics": [
          "0xbb47...f972"
        ],
        "data": "0x",
        "logIndex": 0,
        "blockHash": "0x8a69...6d59"
      }
    ],
    "blockNumber": 8789286,
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": "336730",
    "status": 1
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Cancel request to transfer ownership of a player.

This endpoint allows you to cancel a pending transfer of ownership.

Path Parameters
  • id
    REQUIRED
    string
Body Parameters
  • policy
    REQUIRED
    string

    ID of the Policy that defines the gas sponsorship strategy (starts with pol_). A policy must be provided.

  • chainId
    REQUIRED
    integer

    The chain ID. Must be a supported chain.

post/v1/players/{id}/cancel_transfer_ownership

1curl https://api.openfort.xyz/v1/players/{id}/cancel_transfer_ownership \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd' \
4  -d 'chainId=80001'
{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
    "nonce": "0x2",
    "initCode": "0x",
    "callData": "0xb61d...0000",
    "callGasLimit": "0x27863",
    "verificationGasLimit": "0x16001",
    "preVerificationGas": "0xb818",
    "maxFeePerGas": "0x62590091",
    "maxPriorityFeePerGas": "0x62590091",
    "paymasterAndData": "0x3210...b51c",
    "signature": "0x6202...3d1b"
  },
  "chainId": 80001,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [
      {
        "removed": false,
        "transactionIndex": 0,
        "blockNumber": 44904492,
        "transactionHash": "0x25d3...005c",
        "address": "0x5FF1...2789",
        "topics": [
          "0xbb47...f972"
        ],
        "data": "0x",
        "logIndex": 0,
        "blockHash": "0x8a69...6d59"
      }
    ],
    "blockNumber": 8789286,
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": "336730",
    "status": 1
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

List policies.

Returns a list of Policies.

Query Parameters
  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expandarray

    An array with:

    transactionIntents

    policyRules

    Specifies the fields to expand in the response.

  • namestring

    Specifies the name of the policy.

  • deletedboolean

    Specifies whether to include deleted policies.

  • chainIdinteger

    The chain ID of the policy.

  • enabledboolean

    Specifies whether to include enabled policies.

get/v1/policies

1curl https://api.openfort.xyz/v1/policies \
2  -u "$YOUR_SECRET_KEY:"
{
  "object": "list",
  "url": "/v1/policies",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "pol_...",
      "createdAt": 1689869074,
      "name": "TEST",
      "chainId": 80001,
      "strategy": {
        "sponsorSchema": "pay_for_user"
      },
      "deleted": false,
      "enabled": true,
      "object": "policy",
      "transactionIntents": [
        {
          "id": "tin_..."
        }
      ],
      "policyRules": [
        {
          "createdAt": 1689869074,
          "id": "afu_...",
          "functionName": "mint"
        }
      ]
    }
  ]
}

Create a policy object.

Body Parameters
  • name
    REQUIRED
    string

    Specifies the name of the policy.

  • chainId
    REQUIRED
    integer

    The chain ID. Must be a supported chain.

  • strategy
    REQUIRED
    object

    The sponsor schema of the policy.

post/v1/policies

1curl https://api.openfort.xyz/v1/policies \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'name=My Policy' \
4  -d 'chainId=80001' \
5  -d 'strategy[0][sponsorSchema]=fixed_rate' \
6  -d 'strategy[0][tokenContract]=con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35' \
7  -d 'strategy[0][tokenContractAmount]=1000000000000000000' \
{
  "id": "pol_...",
  "createdAt": 1689869074,
  "name": "TEST",
  "chainId": 80001,
  "strategy": {
    "sponsorSchema": "pay_for_user"
  },
  "deleted": false,
  "enabled": true,
  "object": "policy",
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "policyRules": [
    {
      "createdAt": 1689869074,
      "id": "afu_...",
      "functionName": "mint"
    }
  ]
}

Get a policy object.

Retrieves the details of a Policy that has previously been created.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

Query Parameters
  • expandarray

    An array with:

    transactionIntents

    policyRules

    Specifies the fields to expand.

get/v1/policies/{id}

1curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "pol_...",
  "createdAt": 1689869074,
  "name": "TEST",
  "chainId": 80001,
  "strategy": {
    "sponsorSchema": "pay_for_user"
  },
  "deleted": false,
  "enabled": true,
  "object": "policy",
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "policyRules": [
    {
      "createdAt": 1689869074,
      "id": "afu_...",
      "functionName": "mint"
    }
  ]
}

Update a policy object.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

Body Parameters
  • namestring

    Specifies the name of the policy.

  • chainIdinteger

    The chain ID. Must be a supported chain.

  • strategyobject

    The sponsor schema of the policy.

  • deletedboolean

    Specifies whether to delete the policy.

post/v1/policies/{id}

1curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "pol_...",
  "createdAt": 1689869074,
  "name": "TEST",
  "chainId": 80001,
  "strategy": {
    "sponsorSchema": "pay_for_user"
  },
  "deleted": false,
  "enabled": true,
  "object": "policy",
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "policyRules": [
    {
      "createdAt": 1689869074,
      "id": "afu_...",
      "functionName": "mint"
    }
  ]
}

Delete a policy object.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

delete/v1/policies/{id}

1curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "pol_...",
  "deleted": true,
  "object": "policy"
}

Disable a policy object.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

put/v1/policies/{id}/disable

1curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/disable \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "pol_...",
  "createdAt": 1689869074,
  "name": "TEST",
  "chainId": 80001,
  "strategy": {
    "sponsorSchema": "pay_for_user"
  },
  "deleted": false,
  "enabled": true,
  "object": "policy",
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "policyRules": [
    {
      "createdAt": 1689869074,
      "id": "afu_...",
      "functionName": "mint"
    }
  ]
}

Enable a policy object.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

put/v1/policies/{id}/enable

1curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/enable \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "pol_...",
  "createdAt": 1689869074,
  "name": "TEST",
  "chainId": 80001,
  "strategy": {
    "sponsorSchema": "pay_for_user"
  },
  "deleted": false,
  "enabled": true,
  "object": "policy",
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "policyRules": [
    {
      "createdAt": 1689869074,
      "id": "afu_...",
      "functionName": "mint"
    }
  ]
}

List all gas reports of a policy.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

get/v1/policies/{id}/reports

1curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/reports \
2  -u "$YOUR_SECRET_KEY:"
{
  "data": [
    {
      "period": {
        "start": 1690848000,
        "end": 1693526399
      },
      "averageTransactionFee": "0.002721745",
      "totalTransactionFee": "0.00544349",
      "totalTransactionFeeInUSD": "0.00191",
      "totalTransactionFeeInCustomTokens": "0.00122705",
      "transactionIntents": [
        {
          "id": "tin_47eed6b7-...-ce4a602c5f17",
          "gasFee": "0.00421644",
          "gasPrice": "0.34918179665034244",
          "gasUsed": "0.000000000000421644",
          "gasFeeInUSD": "0.00148"
        },
        {
          "id": "tin_6d3b4a95-...-f63927018815",
          "gasFee": "0.00122705",
          "gasPrice": "0.34918179665034244",
          "gasUsed": "0.000000000000122705",
          "gasFeeInUSD": "0.00043"
        }
      ]
    }
  ],
  "start": 0,
  "end": 1,
  "total": 1,
  "url": "/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/reports",
  "object": "list"
}

Get amount of tokens paid for gas policy.

Get the amount of ERC-20 tokens collected by policy.

When using a policy that includes payment of gas in ERC-20 tokens, this endpoint returns the amount of tokens paid for gas. This is specific to a policy that doesn't use your own deposited tokens in the paymaster.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

get/v1/policies/{id}/withdraw

1curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/withdraw \
2  -u "$YOUR_SECRET_KEY:"
{
  "data": [
    {
      "period": {
        "start": 1690848000,
        "end": 1693526399
      },
      "averageTransactionFee": "0.002721745",
      "totalTransactionFee": "0.00544349",
      "totalTransactionFeeInUSD": "0.00191",
      "totalTransactionFeeInCustomTokens": "0.00122705",
      "transactionIntents": [
        {
          "id": "tin_47eed6b7-...-ce4a602c5f17",
          "gasFee": "0.00421644",
          "gasPrice": "0.34918179665034244",
          "gasUsed": "0.000000000000421644",
          "gasFeeInUSD": "0.00148"
        },
        {
          "id": "tin_6d3b4a95-...-f63927018815",
          "gasFee": "0.00122705",
          "gasPrice": "0.34918179665034244",
          "gasUsed": "0.000000000000122705",
          "gasFeeInUSD": "0.00043"
        }
      ]
    }
  ],
  "start": 0,
  "end": 1,
  "total": 1,
  "url": "/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/reports",
  "object": "list"
}

Withdraw tokens collected by policy.

Transfer ERC-20 tokens collected by policy.

When using a policy that includes payment of gas in ERC-20 tokens, this endpoint returns the amount of tokens paid for gas. This is specific to a policy that doesn't use your own deposited tokens in the paymaster.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

Body Parameters
  • account
    REQUIRED
    string

    ID of the Dev Account this TransactionIntent will send the specified amount of tokens to (starts with dac_).

  • amount
    REQUIRED
    string

    Amount in WEI to withdraw (i.e. factor 10^18)..

post/v1/policies/{id}/withdraw

1curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/withdraw \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'account=dac_e1b24353-1741-4a3d-9e91-2b0fd2942f60' \
4  -d 'amount=300000'
{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
    "nonce": "0x2",
    "initCode": "0x",
    "callData": "0xb61d...0000",
    "callGasLimit": "0x27863",
    "verificationGasLimit": "0x16001",
    "preVerificationGas": "0xb818",
    "maxFeePerGas": "0x62590091",
    "maxPriorityFeePerGas": "0x62590091",
    "paymasterAndData": "0x3210...b51c",
    "signature": "0x6202...3d1b"
  },
  "chainId": 80001,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [
      {
        "removed": false,
        "transactionIndex": 0,
        "blockNumber": 44904492,
        "transactionHash": "0x25d3...005c",
        "address": "0x5FF1...2789",
        "topics": [
          "0xbb47...f972"
        ],
        "data": "0x",
        "logIndex": 0,
        "blockHash": "0x8a69...6d59"
      }
    ],
    "blockNumber": 8789286,
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": "336730",
    "status": 1
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

List policy rules of a policy.

Returns a list of policy rules of a policy.

The policy rules are returned sorted by creation date, with the most recently created policy rules appearing first.

By default, a maximum of 10 policy rules are shown per page.

Query Parameters
  • policy
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expandarray

    An array with:

    contract

    Specifies the fields to expand in the response.

get/v1/policy_rules

1curl https://api.openfort.xyz/v1/policy_rules \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'policy=pol_48eeba57-2cd5-4159-a2cb-057a23a35e65'
{
  "object": "list",
  "url": "/v1/policy_rules",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "createdAt": 1689869074,
      "id": "afu_...",
      "object": "policyRule",
      "type": "contract_functions",
      "contract": {
        "id": "con_..."
      },
      "functionName": "mint"
    }
  ]
}

Create a policy rule object.

Body Parameters
  • type
    REQUIRED
    string

    One of:

    contract_functions

    account_functions

    rate_limit

    The type of rule to add.

  • policy
    REQUIRED
    string

    The unique Policy ID to add the rule to (starts with pol_).

  • functionNamestring

    Name of the function in the contract to allow. If you want to allow all functions, use the wildcard 'All functions'.

  • contractstring

    The contract ID you want to interact with. Must have been added to Openfort first, starts with con_.

  • gasLimitstring

    Gas limit in WEI (i.e. factor 10^18).

  • countLimitinteger

    Number of times the function will be sponsored.

  • timeIntervalTypestring

    One of:

    minute

    hour

    day

    week

    month

    Time interval between sponsorships.

  • timeIntervalValueinteger

    Time interval value.

post/v1/policy_rules

1curl https://api.openfort.xyz/v1/policy_rules \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'type=account_functions' \
4  -d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
{
  "createdAt": 1689869074,
  "id": "afu_...",
  "object": "policyRule",
  "type": "contract_functions",
  "contract": {
    "id": "con_..."
  },
  "functionName": "mint"
}

Update a policy rule object.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy rule ID (starts with afu_).

Body Parameters
  • type
    REQUIRED
    string

    One of:

    contract_functions

    account_functions

    rate_limit

    The type of rule to add.

  • functionNamestring

    Name of the function in the contract to allow. If you want to allow all functions, use the wildcard 'All functions'.

  • contractstring

    The contract ID you want to interact with. Must have been added to Openfort first, starts with con_.

  • gasLimitstring

    Gas limit in WEI (i.e. factor 10^18).

  • countLimitinteger

    Number of times the function will be sponsored.

  • timeIntervalTypestring

    One of:

    minute

    hour

    day

    week

    month

    Time interval between sponsorships.

  • timeIntervalValueinteger

    Time interval value.

post/v1/policy_rules/{id}

1curl https://api.openfort.xyz/v1/policy_rules/afu_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'type=account_functions'
{
  "createdAt": 1689869074,
  "id": "afu_...",
  "object": "policyRule",
  "type": "rate_limit",
  "functionName": "count_per_interval",
  "countLimit": 100,
  "timeIntervalType": "day",
  "timeIntervalValue": 1
}

Deletes a policy rule object.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy rule ID (starts with afu_).

delete/v1/policy_rules/{id}

1curl https://api.openfort.xyz/v1/policy_rules/afu_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "afu_...",
  "object": "policyRule",
  "deleted": true
}

Create a session key.

Creates a Session.

Body Parameters
  • address
    REQUIRED
    string

    The address of the session key.

  • chainId
    REQUIRED
    integer

    The chain ID. Must be a supported chain.

  • validAfter
    REQUIRED
    integer

    The unix timestamp in seconds when the session key becomes valid.

  • validUntil
    REQUIRED
    integer

    The unix timestamp in seconds when the session key expires.

  • player
    REQUIRED
    string

    The player ID (starts with pla_).

  • externalOwnerAddressstring

    If no account exists for a given player, create one with this address.

  • limitinteger

    Maximum number of times the session key can be used.

  • 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.

  • 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.

  • whitelistarray

    The list of whitelisted addresses (contracts the session key can interact with).

post/v1/sessions

1curl https://api.openfort.xyz/v1/sessions \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'address=0x1234567890abcdef1234567890abcdef12345678' \
4  -d 'chainId=80001' \
5  -d 'validAfter=10' \
6  -d 'validUntil=123512123' \
7  -d 'player=pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60'
{
  "id": "ses_...",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "updatedAt": 1689869074,
  "isActive": true,
  "validAfter": "1650000000",
  "validUntil": "1700000000",
  "whitelist": [],
  "limit": 100,
  "nextAction": {
    "type": "sign_with_wallet",
    "payload": {
      "userOperationHash": "0x25d3...005c",
      "userOperation": {
        "sender": "0x814A...FB72",
        "nonce": "0x0",
        "initCode": "0x",
        "callData": "0xb61d27f6000000000000000",
        "callGasLimit": "0x2e84d",
        "verificationGasLimit": "0x1bcef",
        "maxFeePerGas": "0x62590091",
        "maxPriorityFeePerGas": "0x62590091",
        "paymasterAndData": "0x3210...391b",
        "signature": "",
        "preVerificationGas": "0xb80c"
      }
    }
  },
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "object": "session"
}

List session keys of a player.

Returns a list of Sessions.

Query Parameters
  • player
    REQUIRED
    string

    The player ID (starts with pla_)

  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expandarray

    An array with:

    transactionIntents

    Specifies the fields to expand in the response.

get/v1/sessions

1curl https://api.openfort.xyz/v1/sessions \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'player=pla_48eeba57-2cd5-4159-a2cb-057a23a35e65'
{
  "object": "list",
  "url": "/v1/sessions",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "ses_...",
      "createdAt": 1689869074,
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "updatedAt": 1689869074,
      "isActive": true,
      "validAfter": "1650000000",
      "validUntil": "1700000000",
      "whitelist": [],
      "limit": 100,
      "nextAction": {
        "type": "sign_with_wallet",
        "payload": {
          "userOperationHash": "0x25d3...005c",
          "userOperation": {
            "sender": "0x814A...FB72",
            "nonce": "0x0",
            "initCode": "0x",
            "callData": "0xb61d27f6000000000000000",
            "callGasLimit": "0x2e84d",
            "verificationGasLimit": "0x1bcef",
            "maxFeePerGas": "0x62590091",
            "maxPriorityFeePerGas": "0x62590091",
            "paymasterAndData": "0x3210...391b",
            "signature": "",
            "preVerificationGas": "0xb80c"
          }
        }
      },
      "transactionIntents": [
        {
          "id": "tin_..."
        }
      ],
      "object": "session"
    }
  ]
}

Revoke the session session key.

Body Parameters
  • address
    REQUIRED
    string

    The address of the session key to revoke.

  • chainId
    REQUIRED
    integer

    The chain ID. Must be a supported chain.

  • player
    REQUIRED
    string

    The player ID (starts with pla_).

  • 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.

  • optimisticboolean

    Whether the transactionIntent is optimistic (resolve before it arrives on chain) or not.

post/v1/sessions/revoke

1curl https://api.openfort.xyz/v1/sessions/revoke \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'address=0x1234567890abcdef1234567890abcdef12345678' \
4  -d 'chainId=80001' \
5  -d 'player=pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60'
{
  "id": "ses_...",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "updatedAt": 1689869074,
  "isActive": true,
  "validAfter": "1650000000",
  "validUntil": "1700000000",
  "whitelist": [],
  "limit": 100,
  "nextAction": {
    "type": "sign_with_wallet",
    "payload": {
      "userOperationHash": "0x25d3...005c",
      "userOperation": {
        "sender": "0x814A...FB72",
        "nonce": "0x0",
        "initCode": "0x",
        "callData": "0xb61d27f6000000000000000",
        "callGasLimit": "0x2e84d",
        "verificationGasLimit": "0x1bcef",
        "maxFeePerGas": "0x62590091",
        "maxPriorityFeePerGas": "0x62590091",
        "paymasterAndData": "0x3210...391b",
        "signature": "",
        "preVerificationGas": "0xb80c"
      }
    }
  },
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "object": "session"
}

Send signed userOperationHash to create session.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique session ID (starts with ses_).

Body Parameters
  • signature
    REQUIRED
    string

    signed userOperationHash by the owner or valid session key

  • 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.

post/v1/sessions/{id}/signature

1curl https://api.openfort.xyz/v1/sessions/ses_4194ad24-c818-4e5c-b003-9cc2aa7df53b/signature \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'signature=0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
{
  "id": "ses_...",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "updatedAt": 1689869074,
  "isActive": true,
  "validAfter": "1650000000",
  "validUntil": "1700000000",
  "whitelist": [],
  "limit": 100,
  "nextAction": {
    "type": "sign_with_wallet",
    "payload": {
      "userOperationHash": "0x25d3...005c",
      "userOperation": {
        "sender": "0x814A...FB72",
        "nonce": "0x0",
        "initCode": "0x",
        "callData": "0xb61d27f6000000000000000",
        "callGasLimit": "0x2e84d",
        "verificationGasLimit": "0x1bcef",
        "maxFeePerGas": "0x62590091",
        "maxPriorityFeePerGas": "0x62590091",
        "paymasterAndData": "0x3210...391b",
        "signature": "",
        "preVerificationGas": "0xb80c"
      }
    }
  },
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "object": "session"
}

Returns a player session by session id

Retrieves the details of a Session that has previously been created.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique session ID (starts with ses_).

Query Parameters
  • expandarray

    An array with:

    transactionIntents

    Specifies the fields to expand.

get/v1/sessions/{id}

1curl https://api.openfort.xyz/v1/sessions/ses_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "ses_...",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "updatedAt": 1689869074,
  "isActive": true,
  "validAfter": "1650000000",
  "validUntil": "1700000000",
  "whitelist": [],
  "limit": 100,
  "nextAction": {
    "type": "sign_with_wallet",
    "payload": {
      "userOperationHash": "0x25d3...005c",
      "userOperation": {
        "sender": "0x814A...FB72",
        "nonce": "0x0",
        "initCode": "0x",
        "callData": "0xb61d27f6000000000000000",
        "callGasLimit": "0x2e84d",
        "verificationGasLimit": "0x1bcef",
        "maxFeePerGas": "0x62590091",
        "maxPriorityFeePerGas": "0x62590091",
        "paymasterAndData": "0x3210...391b",
        "signature": "",
        "preVerificationGas": "0xb80c"
      }
    }
  },
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "object": "session"
}

Create a developer account.

Create or add a developer account. Developer accounts can be used as for escrow, minting and transferring assets. To add your own external account, add a signature and the address of the account. This verified account can then be used as a verified depositor

Body Parameters
  • addressstring

    The address of the wallet that has deposited funds in the paymaster.

  • signaturestring

    Signature to verify the account ownership.

  • namestring

    The name of the account.

post/v1/settings/developer_accounts

1curl https://api.openfort.xyz/v1/settings/developer_accounts \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "dac_00000000-0000-0000-0000-000000000000",
  "address": "0x0000000000000000000000000000000000000000",
  "name": "Escrow Account",
  "custodial": true,
  "createdAt": 1609459200,
  "object": "developerAccount",
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

List of developer accounts.

Retrieve the list of the developer accounts for the current project.

By default, a maximum of 10 accounts are shown per page.

Query Parameters
  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expandarray

    An array with:

    transactionIntents

    Specifies the fields to expand in the response.

  • deletedboolean

    Specifies whether to include deleted dev accounts.

get/v1/settings/developer_accounts

1curl https://api.openfort.xyz/v1/settings/developer_accounts \
2  -u "$YOUR_SECRET_KEY:"
{
  "url": "/v1/settings/developer_accounts",
  "object": "list",
  "data": [
    {
      "id": "dac_00000000-0000-0000-0000-000000000000",
      "address": "0x0000000000000000000000000000000000000000",
      "name": "Escrow Account",
      "custodial": true,
      "createdAt": 1609459200,
      "object": "developerAccount",
      "transactionIntents": [
        {
          "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
        }
      ]
    },
    {
      "id": "dac_88888888-8888-8888-8888-888888888888",
      "address": "0x8888888888888888888888888888888888888888",
      "name": "Escrow Account 2",
      "custodial": true,
      "createdAt": 1609459200,
      "object": "developerAccount"
    }
  ],
  "start": 0,
  "end": 2,
  "total": 2
}

Generate message to sign

Generate message, which should be signed by the account your want to add as a developer account.

Query Parameters
  • address
    REQUIRED
    string

    Specifies the address

get/v1/settings/developer_accounts/message_to_sign

1curl https://api.openfort.xyz/v1/settings/developer_accounts/message_to_sign \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'address=0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d'
{
  "message": "I want to register 0x0000000000000000000000000000000000000000 to the project 33333333-3333-3333-3333-333333333333 for mainnets on 20231231",
  "address": "0x0000000000000000000000000000000000000000"
}

Get existing developer account.

Retrieve a developer account.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique developer account ID (starts with dac_).

Query Parameters
  • expandarray

    An array with:

    transactionIntents

get/v1/settings/developer_accounts/{id}

1curl https://api.openfort.xyz/v1/settings/developer_accounts/dac_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "dac_00000000-0000-0000-0000-000000000000",
  "address": "0x0000000000000000000000000000000000000000",
  "name": "Escrow Account",
  "custodial": true,
  "createdAt": 1609459200,
  "object": "developerAccount",
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

Delete a developer account.

Delete a developer account from the current project.

Path Parameters
  • id
    REQUIRED
    string

    Specifies a unique developer account (starts with dac_).

delete/v1/settings/developer_accounts/{id}

1curl https://api.openfort.xyz/v1/settings/developer_accounts/dac_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "dac_00000000-0000-0000-0000-000000000000",
  "object": "developerAccount",
  "deleted": true
}

Update webhook.

Updated the current project environment settings by assigning the webhook address. This address is used to send events about the changes of the transaction intent state.

Body Parameters
  • url
    REQUIRED
    string

    The webhook url.

post/v1/settings/webhook

1curl https://api.openfort.xyz/v1/settings/webhook \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'url=https://example.com'

Removes webhook.

Updated the current project environment settings by removing the webhook address. After that system will stop sending events of the transaction intent state changes

delete/v1/settings/webhook

1curl https://api.openfort.xyz/v1/settings/webhook \
2  -u "$YOUR_SECRET_KEY:"

List transaction intents.

Returns a list of TransactionIntents.

Query Parameters
  • limitinteger

    Specifies the maximum number of records to return.

  • skipinteger

    Specifies the offset for the first records to return.

  • orderstring

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expandarray

    An array with:

    player

    policy

    account

    Specifies the fields to expand in the response.

  • chainIdinteger

    The chain ID. Must be a supported chain.

  • accountarray

    Filter by account ID or developer account (starts with acc_ or dac_ respectively).

  • playerarray

    Filter by player ID (starts with pla_).

  • statusnumber

    Filter by successful (1) or failed (0) transaction intents.

  • policyarray

    Filter by policy ID (starts with pol_).

get/v1/transaction_intents

1curl https://api.openfort.xyz/v1/transaction_intents \
2  -u "$YOUR_SECRET_KEY:"
{
  "object": "list",
  "url": "/v1/transaction_intents",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
      "createdAt": 1689869074,
      "object": "transactionIntent",
      "userOperationHash": "0x25d3...005c",
      "userOperation": {
        "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
        "nonce": "0x2",
        "initCode": "0x",
        "callData": "0xb61d...0000",
        "callGasLimit": "0x27863",
        "verificationGasLimit": "0x16001",
        "preVerificationGas": "0xb818",
        "maxFeePerGas": "0x62590091",
        "maxPriorityFeePerGas": "0x62590091",
        "paymasterAndData": "0x3210...b51c",
        "signature": "0x6202...3d1b"
      },
      "chainId": 80001,
      "updatedAt": 1689869074,
      "policy": {
        "id": "pol_..."
      },
      "player": {
        "id": "pla_..."
      },
      "account": {
        "id": "acc_..."
      },
      "response": {
        "createdAt": 1689869074,
        "logs": [
          {
            "removed": false,
            "transactionIndex": 0,
            "blockNumber": 44904492,
            "transactionHash": "0x25d3...005c",
            "address": "0x5FF1...2789",
            "topics": [
              "0xbb47...f972"
            ],
            "data": "0x",
            "logIndex": 0,
            "blockHash": "0x8a69...6d59"
          }
        ],
        "blockNumber": 8789286,
        "transactionHash": "0x25d3...005c",
        "to": "0x0576...1B57",
        "gasUsed": "336730",
        "status": 1
      },
      "interactions": [
        {
          "functionName": "mint",
          "value": "100000000000000",
          "contract": "0x0576...1B57",
          "functionArgs": [
            "0x63B7...484f"
          ]
        }
      ]
    }
  ]
}

Create a transaction intent object.

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.

Body Parameters
  • chainId
    REQUIRED
    integer

    The chain ID. Must be a supported chain.

  • interactions
    REQUIRED
    array
  • 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.

  • 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.

  • confirmationBlocksinteger

    Specify the number of confirmation blocks after which the confirmation webhook will be sent when the transaction arrives on-chain. Default is 5.

post/v1/transaction_intents

1curl https://api.openfort.xyz/v1/transaction_intents \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'chainId=80001' \
4  -d 'interactions[0][contract]=con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35' \
5  -d 'interactions[0][functionName]=mint' \
6  -d 'interactions[0][functionArgs][0]=0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d'
{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
    "nonce": "0x2",
    "initCode": "0x",
    "callData": "0xb61d...0000",
    "callGasLimit": "0x27863",
    "verificationGasLimit": "0x16001",
    "preVerificationGas": "0xb818",
    "maxFeePerGas": "0x62590091",
    "maxPriorityFeePerGas": "0x62590091",
    "paymasterAndData": "0x3210...b51c",
    "signature": "0x6202...3d1b"
  },
  "chainId": 80001,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [
      {
        "removed": false,
        "transactionIndex": 0,
        "blockNumber": 44904492,
        "transactionHash": "0x25d3...005c",
        "address": "0x5FF1...2789",
        "topics": [
          "0xbb47...f972"
        ],
        "data": "0x",
        "logIndex": 0,
        "blockHash": "0x8a69...6d59"
      }
    ],
    "blockNumber": 8789286,
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": "336730",
    "status": 1
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Get a transaction intent object.

Retrieves the details of a TransactionIntent that has previously been created.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique transaction intent ID (starts with tin_).

Query Parameters
  • expandarray

    An array with:

    player

    policy

    account

    Specifies the expandable fields.

get/v1/transaction_intents/{id}

1curl https://api.openfort.xyz/v1/transaction_intents/tin_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
2  -u "$YOUR_SECRET_KEY:"
{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x48930Cd730652bf0B18Ef8c80cD0Fa1Cc72A233E",
    "nonce": "0x2",
    "initCode": "0x",
    "callData": "0xb61d...0000",
    "callGasLimit": "0x27863",
    "verificationGasLimit": "0x16001",
    "preVerificationGas": "0xb818",
    "maxFeePerGas": "0x62590091",
    "maxPriorityFeePerGas": "0x62590091",
    "paymasterAndData": "0x3210...b51c",
    "signature": "0x6202...3d1b"
  },
  "chainId": 80001,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [
      {
        "removed": false,
        "transactionIndex": 0,
        "blockNumber": 44904492,
        "transactionHash": "0x25d3...005c",
        "address": "0x5FF1...2789",
        "topics": [
          "0xbb47...f972"
        ],
        "data": "0x",
        "logIndex": 0,
        "blockHash": "0x8a69...6d59"
      }
    ],
    "blockNumber": 8789286,
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": "336730",
    "status": 1
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Estimate gas cost of creating a transaction

Estimate the gas cost of broadcasting a TransactionIntent.

This is a simulation, it does not send the transaction on-chain.

If a Policy ID is used that includes payment of gas in ERC-20 tokens, an extra field estimatedTXGasFeeToken is returned with the estimated amount of tokens that will be used.

Body Parameters
  • chainId
    REQUIRED
    integer

    The chain ID. Must be a supported chain.

  • interactions
    REQUIRED
    array
  • 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.

  • 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.

  • confirmationBlocksinteger

    Specify the number of confirmation blocks after which the confirmation webhook will be sent when the transaction arrives on-chain. Default is 5.

post/v1/transaction_intents/estimate_gas_cost

1curl https://api.openfort.xyz/v1/transaction_intents/estimate_gas_cost \
2  -u "$YOUR_SECRET_KEY:" \
3  -d 'chainId=80001' \
4  -d 'interactions[0][contract]=con_0cddb398-1dc6-4e6f-8726-9e