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.

post/iam/v1/auth/signup

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.

  • description
    Optional
    string

    The description of the user.

Login a player.

post/iam/v1/auth/login

Body Parameters
  • email
    REQUIRED
    string

    The email address of the user.

  • password
    REQUIRED
    string

    The password of the user.

Verify an auth token.

get/iam/v1/auth/verify

Query Parameters
  • token
    REQUIRED
    string

    Specifies the auth token.

List authenticated players.

get/iam/v1/players

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • email
    Optional
    string

    Specifies the email address of the user.

{
  "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.

post/iam/v1/players/register_key

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.

{
  "player": "pla_...",
  "ownerAddress": "0x...",
  "createdAt": 1691658234,
  "updatedAt": 1691658234
}

Retrieve the key for the authenticated player.

get/iam/v1/players/retrieve_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

Get the google oauth token.

get/iam/v1/oauth/google/token

Query Parameters
  • key
    REQUIRED
    string

    Specifies the oauth key.

List of oauth configurations.

get/iam/v1/oauth

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

{
  "data": [
    {
      "enabled": true,
      "baseUrl": "https://mygame.dev.gamingservices.accelbyte.io/",
      "clientId": "1234567890abcdef1234567890abcdef",
      "clientSecret": "abcdef1234567890abcdef1234567890",
      "provider": "accelbyte"
    }
  ]
}

Create oauth configuration.

post/iam/v1/oauth

The endpoint creates oauth configuration for the current project environment.

{
  "enabled": true,
  "baseUrl": "https://mygame.dev.gamingservices.accelbyte.io/",
  "clientId": "1234567890abcdef1234567890abcdef",
  "clientSecret": "abcdef1234567890abcdef1234567890",
  "provider": "accelbyte"
}

Get oauth configuration.

get/iam/v1/oauth/{provider}

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.

{
  "enabled": true,
  "baseUrl": "https://mygame.dev.gamingservices.accelbyte.io/",
  "clientId": "1234567890abcdef1234567890abcdef",
  "clientSecret": "abcdef1234567890abcdef1234567890",
  "provider": "accelbyte"
}

Delete oauth configuration.

delete/iam/v1/oauth/{provider}

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.

Authorize player with token.

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

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

{
  "playerId": "pla_...",
  "token": "abcd...."
}

Retrieve player by token.

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

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

{
  "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.

get/iam/v1/oauth/{provider}/user/{external_user_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

{
  "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.

get/v1/accounts

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 ten accounts are shown per page.

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expand
    Optional
    array

    An array with:

    transactionIntents

    Specifies the fields to expand in the response.

  • player
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_)

{
  "object": "list",
  "url": "/v1/accounts",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
      "createdAt": 1689869074,
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "chainId": 5,
      "deployed": true,
      "custodial": false,
      "object": "account",
      "accountType": "DEFAULT",
      "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "transactionIntents": [
        {
          "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
        }
      ]
    }
  ]
}

Create an account object.

post/v1/accounts

This endpoint allows you to add a new account to your Openfort player. Only one account can be active per chain per player.

Body Parameters
  • chainId
    REQUIRED
    integer

    The chain id

  • externalOwnerAddress
    Optional
    string

    The address of the external owner

  • accountType
    Optional
    string

    One of:

    Upgradeable

    Managed

    ERC6551

    Recoverable

    ManagedRecoverableV5

    The type of smart account.

  • tokenContract
    Optional
    string

    If ERC6551, the NFT contract to use

  • tokenId
    Optional
    integer

    If ERC6551, the tokenID to serve as owner

  • player
    REQUIRED
    string

    The player ID (starts with pla_)

{
  "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 5,
  "deployed": true,
  "custodial": false,
  "object": "account",
  "accountType": "DEFAULT",
  "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

Get existing account.

get/v1/accounts/{id}

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.

Query Parameters
  • expand
    Optional
    array

    An array with:

    transactionIntents

{
  "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 5,
  "deployed": true,
  "custodial": false,
  "object": "account",
  "accountType": "DEFAULT",
  "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

Request transfer ownership of account.

post/v1/accounts/{id}/request_transfer_ownership

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 account ID.

Body Parameters
  • newOwnerAddress
    REQUIRED
    string

    The address of the new owner

  • policy
    REQUIRED
    string

    The policy ID (starts with pol_)

{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x63B7...484f",
    "nonce": 0,
    "initCode": "0x",
    "callData": "0x940d...0000",
    "callGasLimit": {
      "type": "BigNumber",
      "hex": "0x0352db"
    },
    "verificationGasLimit": {
      "type": "BigNumber",
      "hex": "0x0186a0"
    },
    "maxFeePerGas": {
      "type": "BigNumber",
      "hex": "0x9cca659e7c"
    },
    "maxPriorityFeePerGas": {
      "type": "BigNumber",
      "hex": "0x59682f00"
    },
    "paymasterAndData": "0x8076...931c",
    "signature": "0xbdf8...e81b",
    "preVerificationGas": {}
  },
  "chainId": 5,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [],
    "blockNumber": 8789286,
    "userOpHash": "0x25d3...005c",
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": 336730,
    "status": 1,
    "error": null
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Cancel request to transfer ownership of an account.

post/v1/accounts/{id}/cancel_transfer_ownership

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

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

Body Parameters
  • policy
    REQUIRED
    string

    The policy ID (starts with pol_)

{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x63B7...484f",
    "nonce": 0,
    "initCode": "0x",
    "callData": "0x940d...0000",
    "callGasLimit": {
      "type": "BigNumber",
      "hex": "0x0352db"
    },
    "verificationGasLimit": {
      "type": "BigNumber",
      "hex": "0x0186a0"
    },
    "maxFeePerGas": {
      "type": "BigNumber",
      "hex": "0x9cca659e7c"
    },
    "maxPriorityFeePerGas": {
      "type": "BigNumber",
      "hex": "0x59682f00"
    },
    "paymasterAndData": "0x8076...931c",
    "signature": "0xbdf8...e81b",
    "preVerificationGas": {}
  },
  "chainId": 5,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [],
    "blockNumber": 8789286,
    "userOpHash": "0x25d3...005c",
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": 336730,
    "status": 1,
    "error": null
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Sign a given payload

post/v1/accounts/{id}/sign_payload

Signs the typed data value with types data structure for domain using the EIP-712 (https://eips.ethereum.org/EIPS/eip-712) specification.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

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

{
  "account": "acc_...",
  "hash": "0x25d3...005c",
  "object": "signature",
  "signature": "0x25d3...005c",
  "address": "0x8C5cedA46A2...36Ad2F6255BdBEa"
}

Sync account state with the blockchain

post/v1/accounts/{id}/sync

This endpoint updates 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.

{
  "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 5,
  "deployed": true,
  "custodial": false,
  "object": "account",
  "accountType": "DEFAULT",
  "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

Deploy an account.

post/v1/accounts/{id}/deploy

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

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

Body Parameters
  • policy
    REQUIRED
    string

    The policy ID (starts with pol_)

{
  "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 5,
  "deployed": true,
  "custodial": false,
  "object": "account",
  "accountType": "DEFAULT",
  "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

Start a recovery process of a recoverable account.

post/v1/accounts/{id}/start_recovery

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

Body Parameters
  • newOwnerAddress
    REQUIRED
    string

    Address of the new owner

  • policy
    REQUIRED
    string

    The policy ID (starts with pol_)

{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x63B7...484f",
    "nonce": 0,
    "initCode": "0x",
    "callData": "0x940d...0000",
    "callGasLimit": {
      "type": "BigNumber",
      "hex": "0x0352db"
    },
    "verificationGasLimit": {
      "type": "BigNumber",
      "hex": "0x0186a0"
    },
    "maxFeePerGas": {
      "type": "BigNumber",
      "hex": "0x9cca659e7c"
    },
    "maxPriorityFeePerGas": {
      "type": "BigNumber",
      "hex": "0x59682f00"
    },
    "paymasterAndData": "0x8076...931c",
    "signature": "0xbdf8...e81b",
    "preVerificationGas": {}
  },
  "chainId": 5,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [],
    "blockNumber": 8789286,
    "userOpHash": "0x25d3...005c",
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": 336730,
    "status": 1,
    "error": null
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Complete a recovery process of a recoverable account.

post/v1/accounts/{id}/complete_recovery

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

Body Parameters
  • newOwnerAddress
    REQUIRED
    string

    Address of the new owner

  • signatures
    Optional
    array

    Signatures

  • policy
    REQUIRED
    string

    The policy ID (starts with pol_)

{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x63B7...484f",
    "nonce": 0,
    "initCode": "0x",
    "callData": "0x940d...0000",
    "callGasLimit": {
      "type": "BigNumber",
      "hex": "0x0352db"
    },
    "verificationGasLimit": {
      "type": "BigNumber",
      "hex": "0x0186a0"
    },
    "maxFeePerGas": {
      "type": "BigNumber",
      "hex": "0x9cca659e7c"
    },
    "maxPriorityFeePerGas": {
      "type": "BigNumber",
      "hex": "0x59682f00"
    },
    "paymasterAndData": "0x8076...931c",
    "signature": "0xbdf8...e81b",
    "preVerificationGas": {}
  },
  "chainId": 5,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [],
    "blockNumber": 8789286,
    "userOpHash": "0x25d3...005c",
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": 336730,
    "status": 1,
    "error": null
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

List contracts.

get/v1/contracts

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

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • name
    Optional
    string

    Specifies the name of the contract.

  • deleted
    Optional
    boolean

    Specifies whether to include deleted contracts.

  • chainId
    Optional
    integer

    The chain ID of the contract.

  • address
    Optional
    string

    Specifies the address of the contract.

{
  "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": 5,
      "deleted": false,
      "name": "MyContract",
      "publicVerification": true,
      "abi": [
        {
          "constant": false,
          "inputs": [
            {
              "name": "addr",
              "type": "address"
            }
          ]
        }
      ]
    }
  ]
}

Create contract object.

post/v1/contracts

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.

  • address
    REQUIRED
    string

    Specifies the address of the contract.

  • abi
    Optional
    array

    Specifies the ABI of the contract.

  • publicVerification
    Optional
    boolean

    Specifies whether to verify the contract publicly.

{
  "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "object": "contract",
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 5,
  "deleted": false,
  "name": "MyContract",
  "publicVerification": true,
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ]
    }
  ]
}

Get a contract.

get/v1/contracts/{id}

Retrieve a contract by providing their contract id.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique contract ID (starts with con_).

{
  "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "object": "contract",
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 5,
  "deleted": false,
  "name": "MyContract",
  "publicVerification": true,
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ]
    }
  ]
}

Updates a contract object.

post/v1/contracts/{id}

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique contract ID (starts with con_).

Body Parameters
  • name
    Optional
    string

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

  • chainId
    Optional
    integer

    Specifies the chain ID of the contract.

  • deleted
    Optional
    boolean

    Specifies whether to delete the contract.

  • address
    Optional
    string

    Specifies the address of the contract.

  • abi
    Optional
    array

    Specifies the ABI of the contract.

  • publicVerification
    Optional
    boolean

    Specifies whether to verify the contract publicly.

{
  "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "object": "contract",
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 5,
  "deleted": false,
  "name": "MyContract",
  "publicVerification": true,
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ]
    }
  ]
}

Deletes a contract object.

delete/v1/contracts/{id}

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

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique contract ID (starts with con_).

{
  "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "deleted": true,
  "object": "contract"
}

Read on chain contract data.

get/v1/contracts/{id}/read

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.

  • functionArgs
    Optional
    array

    The function arguments of the contract.

{
  "id": "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "object": "readContract",
  "functionName": "balanceOf",
  "result": {
    "type": "BigNumber",
    "hex": "0x00"
  }
}

Get inventory of player.

get/v1/players/{id}/inventory

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Query Parameters
  • chainId
    REQUIRED
    integer

    Filter by chain id.

{
  "object": "inventory",
  "nativeAsset": {
    "assetType": 1,
    "amount": "1000000000000000000",
    "lastTransferredAt": 1689869074
  },
  "nftAssets": [
    {
      "assetType": 2,
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "tokenId": 1,
      "lastTransferredAt": 1689869074
    }
  ],
  "tokenAssets": [
    {
      "assetType": 3,
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "tokenId": 1,
      "amount": "1000000000000000000",
      "lastTransferredAt": 1689869074
    }
  ]
}

Get NFTs list of player.

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

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • contractId
    Optional
    array

    Filter by contract ID (starts with con_).

  • chainId
    REQUIRED
    integer

    Filter by chain id.

{
  "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.

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

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • contractId
    Optional
    array

    Filter by contract ID (starts with con_).

  • chainId
    REQUIRED
    integer

    Filter by chain id.

{
  "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.

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

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Query Parameters
  • chainId
    REQUIRED
    integer

    Filter by chain id.

{
  "object": "inventory",
  "url": "/v1/players/pla_.../inventory/native",
  "data": {
    "assetType": "ETH",
    "amount": "1000000000000000000",
    "lastTransferredAt": 1689869074
  }
}

Get inventory of account.

get/v1/accounts/{id}/inventory

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

Retrieves the NFT assets of an existing account.

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

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • contractId
    Optional
    array
{
  "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.

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

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • contractId
    Optional
    array
{
  "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.

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

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

{
  "object": "inventory",
  "url": "/v1/accounts/acc_.../inventory/native",
  "data": {
    "assetType": "ETH",
    "amount": "1000000000000000000",
    "lastTransferredAt": 1689869074
  }
}

List players.

get/v1/players

By default, a maximum of ten players are shown.

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expand
    Optional
    array

    An array with:

    transactionIntents

    accounts

    Specifies the fields to expand in the response.

  • name
    Optional
    string

    Filter by player name.

{
  "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.

post/v1/players

Add a new player to your player list in Openfort.

Body Parameters
  • name
    REQUIRED
    string

    Specifies the player name.

  • description
    Optional
    string

    Specifies the player description.

  • metadata
    Optional
    object

    Specifies the player metadata.

{
  "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.

get/v1/players/{id}

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Query Parameters
  • expand
    Optional
    array

    An array with:

    transactionIntents

    accounts

    Specifies the expandable fields.

{
  "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.

post/v1/players/{id}

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Body Parameters
  • name
    Optional
    string

    Specifies the player name.

  • description
    Optional
    string

    Specifies the player description.

  • metadata
    Optional
    object

    Specifies the player metadata.

{
  "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.

delete/v1/players/{id}

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

{
  "id": "pla_00000000-0000-0000-0000-000000000000",
  "object": "player",
  "deleted": true
}

Request transfer ownership of account.

post/v1/accounts/{id}/request_transfer_ownership

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 account ID.

Body Parameters
  • newOwnerAddress
    REQUIRED
    string

    The address of the new owner

  • policy
    REQUIRED
    string

    The policy ID (starts with pol_)

{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x63B7...484f",
    "nonce": 0,
    "initCode": "0x",
    "callData": "0x940d...0000",
    "callGasLimit": {
      "type": "BigNumber",
      "hex": "0x0352db"
    },
    "verificationGasLimit": {
      "type": "BigNumber",
      "hex": "0x0186a0"
    },
    "maxFeePerGas": {
      "type": "BigNumber",
      "hex": "0x9cca659e7c"
    },
    "maxPriorityFeePerGas": {
      "type": "BigNumber",
      "hex": "0x59682f00"
    },
    "paymasterAndData": "0x8076...931c",
    "signature": "0xbdf8...e81b",
    "preVerificationGas": {}
  },
  "chainId": 5,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [],
    "blockNumber": 8789286,
    "userOpHash": "0x25d3...005c",
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": 336730,
    "status": 1,
    "error": null
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Cancel request to transfer ownership of an account.

post/v1/accounts/{id}/cancel_transfer_ownership

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

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique account ID.

Body Parameters
  • policy
    REQUIRED
    string

    The policy ID (starts with pol_)

{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x63B7...484f",
    "nonce": 0,
    "initCode": "0x",
    "callData": "0x940d...0000",
    "callGasLimit": {
      "type": "BigNumber",
      "hex": "0x0352db"
    },
    "verificationGasLimit": {
      "type": "BigNumber",
      "hex": "0x0186a0"
    },
    "maxFeePerGas": {
      "type": "BigNumber",
      "hex": "0x9cca659e7c"
    },
    "maxPriorityFeePerGas": {
      "type": "BigNumber",
      "hex": "0x59682f00"
    },
    "paymasterAndData": "0x8076...931c",
    "signature": "0xbdf8...e81b",
    "preVerificationGas": {}
  },
  "chainId": 5,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [],
    "blockNumber": 8789286,
    "userOpHash": "0x25d3...005c",
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": 336730,
    "status": 1,
    "error": null
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Create session object for a player.

post/v1/players/{id}/sessions

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Body Parameters
  • address
    REQUIRED
    string

    The address of the session key.

  • chainId
    REQUIRED
    integer

    The chain ID.

  • externalOwnerAddress
    Optional
    string

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

  • limit
    Optional
    integer

    Maximum number of times the session key can be used.

  • optimistic
    Optional
    boolean

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

  • policy
    Optional
    string

    The policy ID (starts with pol_).

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

  • whitelist
    Optional
    array

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

{
  "id": "ses_...",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "updatedAt": 1689869074,
  "isActive": true,
  "validAfter": "1650000000",
  "validUntil": "1700000000",
  "whitelist": [],
  "limit": 100,
  "nextAction": {
    "type": "sign_with_wallet",
    "payload": {
      "userOpHash": "0x..."
    }
  },
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "object": "session"
}

Revoke session object for a player.

post/v1/players/{id}/sessions/revoke

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Body Parameters
  • address
    REQUIRED
    string

    The address of the session key to revoke.

  • policy
    Optional
    string

    The policy ID (starts with pol_)

  • optimistic
    Optional
    boolean

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

  • chainId
    REQUIRED
    integer

    The chain ID.

{
  "id": "ses_...",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "updatedAt": 1689869074,
  "isActive": true,
  "validAfter": "1650000000",
  "validUntil": "1700000000",
  "whitelist": [],
  "limit": 100,
  "nextAction": {
    "type": "sign_with_wallet",
    "payload": {
      "userOpHash": "0x..."
    }
  },
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "object": "session"
}

List of accounts of a player.

get/v1/players/{id}/accounts

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Query Parameters
  • expand
    Optional
    array

    An array with:

    transactionIntents

    Specifies the expandable fields.

{
  "object": "list",
  "url": "/v1/accounts",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
      "createdAt": 1689869074,
      "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "chainId": 5,
      "deployed": true,
      "custodial": false,
      "object": "account",
      "accountType": "DEFAULT",
      "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
      "transactionIntents": [
        {
          "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
        }
      ]
    }
  ]
}

Create account object for a player.

post/v1/players/{id}/accounts

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique player ID (starts with pla_).

Body Parameters
  • chainId
    REQUIRED
    integer

    The chain id

  • externalOwnerAddress
    Optional
    string

    The address of the external owner

  • accountType
    Optional
    string

    One of:

    Upgradeable

    Managed

    ERC6551

    Recoverable

    ManagedRecoverableV5

    The type of smart account.

  • tokenContract
    Optional
    string

    If ERC6551, the NFT contract to use

  • tokenId
    Optional
    integer

    If ERC6551, the tokenID to serve as owner

{
  "id": "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "chainId": 5,
  "deployed": true,
  "custodial": false,
  "object": "account",
  "accountType": "DEFAULT",
  "ownerAddress": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "transactionIntents": [
    {
      "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
    }
  ]
}

List policies.

get/v1/policies

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expand
    Optional
    array

    An array with:

    transactionIntents

    policyRules

    Specifies the fields to expand in the response.

  • name
    Optional
    string

    Specifies the name of the policy.

  • deleted
    Optional
    boolean

    Specifies whether to include deleted contracts.

  • chainId
    Optional
    integer

    The chain ID of the policy.

  • enabled
    Optional
    boolean

    Specifies whether to include enabled contracts.

{
  "object": "list",
  "url": "/v1/policies",
  "start": 0,
  "end": 1,
  "total": 1,
  "data": [
    {
      "id": "pol_...",
      "createdAt": 1689869074,
      "name": "TEST",
      "chainId": 5,
      "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.

post/v1/policies

Body Parameters
  • name
    REQUIRED
    string

    Specifies the name of the policy.

  • chainId
    REQUIRED
    integer

    The chain ID of the policy.

  • strategy
    REQUIRED
    object

    The sponsor schema of the policy.

{
  "id": "pol_...",
  "createdAt": 1689869074,
  "name": "TEST",
  "chainId": 5,
  "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.

get/v1/policies/{id}

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

Query Parameters
  • expand
    Optional
    array

    An array with:

    transactionIntents

    policyRules

    Specifies the fields to expand.

{
  "id": "pol_...",
  "createdAt": 1689869074,
  "name": "TEST",
  "chainId": 5,
  "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.

post/v1/policies/{id}

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

Body Parameters
  • name
    Optional
    string

    Specifies the name of the policy.

  • chainId
    Optional
    integer

    The chain ID of the policy.

  • strategy
    Optional
    object

    The sponsor schema of the policy.

  • deleted
    Optional
    boolean

    Specifies whether to delete the policy.

{
  "id": "pol_...",
  "createdAt": 1689869074,
  "name": "TEST",
  "chainId": 5,
  "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.

delete/v1/policies/{id}

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

{
  "id": "pol_...",
  "deleted": true,
  "object": "policy"
}

Disable a policy object.

put/v1/policies/{id}/disable

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

{
  "id": "pol_...",
  "createdAt": 1689869074,
  "name": "TEST",
  "chainId": 5,
  "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.

put/v1/policies/{id}/enable

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

{
  "id": "pol_...",
  "createdAt": 1689869074,
  "name": "TEST",
  "chainId": 5,
  "strategy": {
    "sponsorSchema": "pay_for_user"
  },
  "deleted": false,
  "enabled": true,
  "object": "policy",
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "policyRules": [
    {
      "createdAt": 1689869074,
      "id": "afu_...",
      "functionName": "mint"
    }
  ]
}

List policy rules of a policy.

get/v1/policies/{id}/policy_rules

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

Query Parameters
  • expand
    Optional
    array

    An array with:

    contract

    Specifies the fields to expand.

{
  "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 for a policy.

post/v1/policies/{id}/policy_rules

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

Body Parameters
  • type
    REQUIRED
    string

    One of:

    contract_functions

    account_functions

    rate_limit

  • functionName
    Optional
    string

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

  • contract
    Optional
    string

    Contract ID to allow.

  • gasLimit
    Optional
    string

    Gas limit in WEI.

  • countLimit
    Optional
    integer

    Number of times the function will be sponsored.

  • timeIntervalType
    Optional
    string

    One of:

    minute

    hour

    day

    week

    month

    Time interval between sponsorships.

  • timeIntervalValue
    Optional
    integer

    Time interval value.

{
  "createdAt": 1689869074,
  "id": "afu_...",
  "object": "policyRule",
  "type": "contract_functions",
  "contract": {
    "id": "con_..."
  },
  "functionName": "mint"
}

Update a policy rule object of a policy.

post/v1/policies/{policy}/policy_rules/{policy_rule}

Path Parameters
  • policy
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

  • policy_rule
    REQUIRED
    string

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

Body Parameters
  • type
    REQUIRED
    string

    One of:

    contract_functions

    account_functions

    rate_limit

  • functionName
    Optional
    string

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

  • contract
    Optional
    string

    Contract ID to allow.

  • gasLimit
    Optional
    string

    Gas limit in WEI.

  • countLimit
    Optional
    integer

    Number of times the function will be sponsored.

  • timeIntervalType
    Optional
    string

    One of:

    minute

    hour

    day

    week

    month

    Time interval between sponsorships.

  • timeIntervalValue
    Optional
    integer

    Time interval value.

{
  "createdAt": 1689869074,
  "id": "afu_...",
  "object": "policyRule",
  "type": "rate_limit",
  "functionName": "count_per_interval",
  "countLimit": 100,
  "timeIntervalType": "day",
  "timeIntervalValue": 1
}

List all gas reports of a policy.

get/v1/policies/{id}/reports

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

{
  "data": [
    {
      "periodNumber": 0,
      "period": {
        "start": 1690848000,
        "end": 1693526399
      },
      "averageTransactionFee": "0.002721745",
      "totalTransactionFee": "0.00544349",
      "totalTransactionFeeInUSD": "0.00191",
      "transactionIntents": [
        {
          "transactionIntentId": "tin_47eed6b7-273c-480e-b5eb-ce4a602c5f17",
          "gasFee": "0.00421644",
          "gasPrice": "0.34918179665034244",
          "gasUsed": "0.000000000000421644",
          "gasFeeInUSD": "0.00148"
        },
        {
          "transactionIntentId": "tin_6d3b4a95-fb49-47b0-92f9-f63927018815",
          "gasFee": "0.00122705",
          "gasPrice": "0.34918179665034244",
          "gasUsed": "0.000000000000122705",
          "gasFeeInUSD": "0.00043"
        }
      ]
    }
  ],
  "object": "list"
}

List policy rules of a policy.

get/v1/policies/{id}/policy_rules

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique policy ID (starts with pol_).

Query Parameters
  • expand
    Optional
    array

    An array with:

    contract

    Specifies the fields to expand.

{
  "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.

post/v1/policy_rules

Body Parameters
  • type
    REQUIRED
    string

    One of:

    contract_functions

    account_functions

    rate_limit

  • functionName
    Optional
    string

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

  • contract
    Optional
    string

    Contract ID to allow.

  • gasLimit
    Optional
    string

    Gas limit in WEI.

  • countLimit
    Optional
    integer

    Number of times the function will be sponsored.

  • timeIntervalType
    Optional
    string

    One of:

    minute

    hour

    day

    week

    month

    Time interval between sponsorships.

  • timeIntervalValue
    Optional
    integer

    Time interval value.

  • policy
    REQUIRED
    string

    The unique Policy ID to add the rule to.

{
  "createdAt": 1689869074,
  "id": "afu_...",
  "object": "policyRule",
  "type": "contract_functions",
  "contract": {
    "id": "con_..."
  },
  "functionName": "mint"
}

Update a policy rule object.

post/v1/policy_rules/{id}

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

  • functionName
    Optional
    string

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

  • contract
    Optional
    string

    Contract ID to allow.

  • gasLimit
    Optional
    string

    Gas limit in WEI.

  • countLimit
    Optional
    integer

    Number of times the function will be sponsored.

  • timeIntervalType
    Optional
    string

    One of:

    minute

    hour

    day

    week

    month

    Time interval between sponsorships.

  • timeIntervalValue
    Optional
    integer

    Time interval value.

{
  "createdAt": 1689869074,
  "id": "afu_...",
  "object": "policyRule",
  "type": "rate_limit",
  "functionName": "count_per_interval",
  "countLimit": 100,
  "timeIntervalType": "day",
  "timeIntervalValue": 1
}

Deletes a policy rule object.

delete/v1/policy_rules/{id}

Path Parameters
  • id
    REQUIRED
    string

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

{
  "id": "afu_...",
  "object": "policyRule",
  "deleted": true
}

Create a session key.

post/v1/sessions

Body Parameters
  • address
    REQUIRED
    string

    The address of the session key.

  • chainId
    REQUIRED
    integer

    The chain ID.

  • externalOwnerAddress
    Optional
    string

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

  • limit
    Optional
    integer

    Maximum number of times the session key can be used.

  • optimistic
    Optional
    boolean

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

  • policy
    Optional
    string

    The policy ID (starts with pol_).

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

  • whitelist
    Optional
    array

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

  • player
    REQUIRED
    string

    The player ID (starts with pla_).

{
  "id": "ses_...",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "updatedAt": 1689869074,
  "isActive": true,
  "validAfter": "1650000000",
  "validUntil": "1700000000",
  "whitelist": [],
  "limit": 100,
  "nextAction": {
    "type": "sign_with_wallet",
    "payload": {
      "userOpHash": "0x..."
    }
  },
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "object": "session"
}

List session keys of a player.

get/v1/sessions

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • player
    REQUIRED
    string

    The player ID (starts with pla_)

  • expand
    Optional
    array

    An array with:

    transactionIntents

    Specifies the fields to expand in the response.

{
  "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": {
          "userOpHash": "0x..."
        }
      },
      "transactionIntents": [
        {
          "id": "tin_..."
        }
      ],
      "object": "session"
    }
  ]
}

Revoke the session session key.

post/v1/sessions/revoke

Body Parameters
  • address
    REQUIRED
    string

    The address of the session key to revoke.

  • policy
    Optional
    string

    The policy ID (starts with pol_)

  • optimistic
    Optional
    boolean

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

  • chainId
    REQUIRED
    integer

    The chain ID.

  • player
    REQUIRED
    string

    The player ID (starts with pla_).

{
  "id": "ses_...",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "updatedAt": 1689869074,
  "isActive": true,
  "validAfter": "1650000000",
  "validUntil": "1700000000",
  "whitelist": [],
  "limit": 100,
  "nextAction": {
    "type": "sign_with_wallet",
    "payload": {
      "userOpHash": "0x..."
    }
  },
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "object": "session"
}

Send signed userOpHash to create session.

post/v1/sessions/{id}/signature

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

  • optimistic
    Optional
    boolean

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

{
  "id": "ses_...",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "updatedAt": 1689869074,
  "isActive": true,
  "validAfter": "1650000000",
  "validUntil": "1700000000",
  "whitelist": [],
  "limit": 100,
  "nextAction": {
    "type": "sign_with_wallet",
    "payload": {
      "userOpHash": "0x..."
    }
  },
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "object": "session"
}

Returns a player session by session id

get/v1/sessions/{id}

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique session ID (starts with ses_).

Query Parameters
  • expand
    Optional
    array

    An array with:

    transactionIntents

    Specifies the fields to expand.

{
  "id": "ses_...",
  "createdAt": 1689869074,
  "address": "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa",
  "updatedAt": 1689869074,
  "isActive": true,
  "validAfter": "1650000000",
  "validUntil": "1700000000",
  "whitelist": [],
  "limit": 100,
  "nextAction": {
    "type": "sign_with_wallet",
    "payload": {
      "userOpHash": "0x..."
    }
  },
  "transactionIntents": [
    {
      "id": "tin_..."
    }
  ],
  "object": "session"
}

Add depositor address.

post/v1/settings/depositor_addresses

Verify signature and add a depositor address to the current project environment.

Body Parameters
  • depositorAddress
    REQUIRED
    string

    Paymaster depositor address.

  • signature
    REQUIRED
    string

    Signature to verify the account ownership.

{
  "id": "dep_00000000-0000-0000-0000-000000000000",
  "depositorAddress": "0x0000000000000000000000000000000000000000"
}

List of depositor addresses.

get/v1/settings/depositor_addresses

Retrieve the list of the depositor addresses for the current project environment.

{
  "url": "/v1/settings/depositor_addresses",
  "object": "list",
  "data": [
    {
      "id": "dep_00000000-0000-0000-0000-000000000000",
      "depositorAddress": "0x0000000000000000000000000000000000000000"
    },
    {
      "id": "dep_88888888-8888-8888-8888-888888888888",
      "depositorAddress": "0x8888888888888888888888888888888888888888"
    }
  ],
  "start": 0,
  "end": 2,
  "total": 2
}

Removes depositor address.

delete/v1/settings/depositor_addresses/{id}

Remove a depositor address from the current project environment.

Path Parameters
  • id
    REQUIRED
    string

    Specifies unique identifier of depositor address.

{
  "id": "dep_00000000-0000-0000-0000-000000000000",
  "object": "paymasterDepositor",
  "deleted": true
}

Generate message to sign

get/v1/settings/depositor_addresses/message_to_sign

Generate message, which should be signed for verification of the address ownership.

Query Parameters
  • address
    REQUIRED
    string

    Specifies the paymaster depositor address

{
  "message": "I want to register 0x0000000000000000000000000000000000000000 to the project 33333333-3333-3333-3333-333333333333 for mainnets on 20231231",
  "depositorAddress": "0x0000000000000000000000000000000000000000"
}

Update webhook.

post/v1/settings/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.

Removes webhook.

delete/v1/settings/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

List transaction intents.

get/v1/transaction_intents

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • expand
    Optional
    array

    An array with:

    nextAction

    policy

    player

    account

    Specifies the fields to expand in the response.

  • chainId
    Optional
    integer

    The chain ID.

  • accountId
    Optional
    array

    Filter by account ID.

  • playerId
    Optional
    array

    Filter by player ID (starts with pla_).

  • policyId
    Optional
    array

    Filter by policy ID (starts with pol_).

{
  "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": "0x63B7...484f",
        "nonce": 0,
        "initCode": "0x",
        "callData": "0x940d...0000",
        "callGasLimit": {
          "type": "BigNumber",
          "hex": "0x0352db"
        },
        "verificationGasLimit": {
          "type": "BigNumber",
          "hex": "0x0186a0"
        },
        "maxFeePerGas": {
          "type": "BigNumber",
          "hex": "0x9cca659e7c"
        },
        "maxPriorityFeePerGas": {
          "type": "BigNumber",
          "hex": "0x59682f00"
        },
        "paymasterAndData": "0x8076...931c",
        "signature": "0xbdf8...e81b",
        "preVerificationGas": {}
      },
      "chainId": 5,
      "updatedAt": 1689869074,
      "policy": {
        "id": "pol_..."
      },
      "player": {
        "id": "pla_..."
      },
      "account": {
        "id": "acc_..."
      },
      "response": {
        "createdAt": 1689869074,
        "logs": [],
        "blockNumber": 8789286,
        "userOpHash": "0x25d3...005c",
        "transactionHash": "0x25d3...005c",
        "to": "0x0576...1B57",
        "gasUsed": 336730,
        "status": 1,
        "error": null
      },
      "interactions": [
        {
          "functionName": "mint",
          "value": "100000000000000",
          "contract": "0x0576...1B57",
          "functionArgs": [
            "0x63B7...484f"
          ]
        }
      ]
    }
  ]
}

Create a transaction intent object.

post/v1/transaction_intents

Retrieve a transaction intent by providing their id on Openfort. Transaction intents that have not been processed yet, have the `response` attribute as undefined.

Body Parameters
  • player
    REQUIRED
    string

    The player ID (starts with pla_).

  • chainId
    REQUIRED
    integer

    The chain ID.

  • policy
    Optional
    string

    The policy ID (starts with pol_).

  • externalOwnerAddress
    Optional
    string

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

  • optimistic
    REQUIRED
    boolean

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

  • confirmationBlocks
    Optional
    integer

    Specify the number of blocks after the block with transaction to be assured that transaction is in block

  • interactions
    REQUIRED
    array
{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x63B7...484f",
    "nonce": 0,
    "initCode": "0x",
    "callData": "0x940d...0000",
    "callGasLimit": {
      "type": "BigNumber",
      "hex": "0x0352db"
    },
    "verificationGasLimit": {
      "type": "BigNumber",
      "hex": "0x0186a0"
    },
    "maxFeePerGas": {
      "type": "BigNumber",
      "hex": "0x9cca659e7c"
    },
    "maxPriorityFeePerGas": {
      "type": "BigNumber",
      "hex": "0x59682f00"
    },
    "paymasterAndData": "0x8076...931c",
    "signature": "0xbdf8...e81b",
    "preVerificationGas": {}
  },
  "chainId": 5,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [],
    "blockNumber": 8789286,
    "userOpHash": "0x25d3...005c",
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": 336730,
    "status": 1,
    "error": null
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Get a transaction intent object.

get/v1/transaction_intents/{id}

Path Parameters
  • id
    REQUIRED
    string

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

Query Parameters
  • expand
    Optional
    array

    An array with:

    nextAction

    policy

    player

    account

    Specifies the expandable fields.

{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x63B7...484f",
    "nonce": 0,
    "initCode": "0x",
    "callData": "0x940d...0000",
    "callGasLimit": {
      "type": "BigNumber",
      "hex": "0x0352db"
    },
    "verificationGasLimit": {
      "type": "BigNumber",
      "hex": "0x0186a0"
    },
    "maxFeePerGas": {
      "type": "BigNumber",
      "hex": "0x9cca659e7c"
    },
    "maxPriorityFeePerGas": {
      "type": "BigNumber",
      "hex": "0x59682f00"
    },
    "paymasterAndData": "0x8076...931c",
    "signature": "0xbdf8...e81b",
    "preVerificationGas": {}
  },
  "chainId": 5,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [],
    "blockNumber": 8789286,
    "userOpHash": "0x25d3...005c",
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": 336730,
    "status": 1,
    "error": null
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

Estimate gas cost of creating a transaction

post/v1/transaction_intents/estimate_gas_cost

Estimate the gas cost of creating a transaction intent and putting it on chain. If a policy that includes payment of gas in ERC-20 tokens is provided, an extra field `estimatedTXGasFeeToken` is returned with the estimated amount of tokens.

Body Parameters
  • player
    REQUIRED
    string

    The player ID (starts with pla_).

  • chainId
    REQUIRED
    integer

    The chain ID.

  • policy
    Optional
    string

    The policy ID (starts with pol_).

  • externalOwnerAddress
    Optional
    string

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

  • optimistic
    REQUIRED
    boolean

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

  • confirmationBlocks
    Optional
    integer

    Specify the number of blocks after the block with transaction to be assured that transaction is in block

  • interactions
    REQUIRED
    array
{
  "preVerificationGas": "55637",
  "verificationGas": "375974",
  "callGasLimit": "79646",
  "verificationGasLimit": "375974",
  "estimatedTXGas": "444793",
  "estimatedTXGasFee": "1162163748854053",
  "estimatedTXGasFeeUSD": "0.01",
  "gasPrice": "2612819331"
}

Send a signed transaction userOperationHash.

post/v1/transaction_intents/{id}/signature

For non-custodial smart accounts, each on chain action using their wallet, they must sign the userOperationHash received from the `POST` API endpoint that creates a transactionIntent.

Path Parameters
  • id
    REQUIRED
    string

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

Body Parameters
  • signature
    REQUIRED
    string

    signed userOperationHash by the owner or valid session key

  • optimistic
    Optional
    boolean

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

{
  "id": "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "createdAt": 1689869074,
  "object": "transactionIntent",
  "userOperationHash": "0x25d3...005c",
  "userOperation": {
    "sender": "0x63B7...484f",
    "nonce": 0,
    "initCode": "0x",
    "callData": "0x940d...0000",
    "callGasLimit": {
      "type": "BigNumber",
      "hex": "0x0352db"
    },
    "verificationGasLimit": {
      "type": "BigNumber",
      "hex": "0x0186a0"
    },
    "maxFeePerGas": {
      "type": "BigNumber",
      "hex": "0x9cca659e7c"
    },
    "maxPriorityFeePerGas": {
      "type": "BigNumber",
      "hex": "0x59682f00"
    },
    "paymasterAndData": "0x8076...931c",
    "signature": "0xbdf8...e81b",
    "preVerificationGas": {}
  },
  "chainId": 5,
  "updatedAt": 1689869074,
  "policy": {
    "id": "pol_..."
  },
  "player": {
    "id": "pla_..."
  },
  "account": {
    "id": "acc_..."
  },
  "response": {
    "createdAt": 1689869074,
    "logs": [],
    "blockNumber": 8789286,
    "userOpHash": "0x25d3...005c",
    "transactionHash": "0x25d3...005c",
    "to": "0x0576...1B57",
    "gasUsed": 336730,
    "status": 1,
    "error": null
  },
  "interactions": [
    {
      "functionName": "mint",
      "value": "100000000000000",
      "contract": "0x0576...1B57",
      "functionArgs": [
        "0x63B7...484f"
      ]
    }
  ]
}

List Web3 connections.

get/v1/web3_connections

Returns a list of web3 connections for the given player. The connections are returned sorted by creation date, with the most recently created connections appearing first. By default, a maximum of ten connections are shown per page.

Query Parameters
  • limit
    Optional
    integer

    Specifies the maximum number of records to return.

  • skip
    Optional
    integer

    Specifies the offset for the first records to return.

  • order
    Optional
    string

    One of:

    asc

    desc

    Specifies the order in which to sort the results.

  • player
    Optional
    string

    Specifies the unique player ID (starts with pla_)

  • disconnected
    Optional
    boolean

    Specifies connection status

{
  "object": "list",
  "url": "/v1/web3_connections",
  "data": [
    {
      "id": "web3_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
      "object": "web3Connection",
      "createdAt": 1689869074,
      "player": "pla_...",
      "disconnected": false
    }
  ],
  "start": 0,
  "end": 1,
  "total": 1
}

Create a Web3 Connection object.

post/v1/web3_connections

This endpoint allows you to create a new web3 connection to your Openfort player. Together with the player ID (pla_), you need to provide a chain ID. The chain to use is required because Openfort needs to make sure the account is deployed, as counterfactual addresses cannot use web3 connections. The `uri` body parameter must contain a WalletConnect pairing URI (see: https://specs.walletconnect.com/2.0/specs/clients/core/pairing/pairing-uri)

Body Parameters
  • player
    REQUIRED
    string

    The player ID (starts with pla_).

  • chainId
    REQUIRED
    integer

    The chain ID.

  • uri
    REQUIRED
    string

    Specifies the URI of the web3Connection.

{
  "id": "web3_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "object": "web3Connection",
  "createdAt": 1689869074,
  "player": "pla_...",
  "disconnected": false
}

Get a web3Connection object.

get/v1/web3_connections/{id}

Retrieves the details of an existing web3 connection. Supply the unique web3 connection ID from either a web3 connection creation request or the web3 connection list. Openfort will return the corresponding web3 connection information.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the unique web3Connection ID (starts with web3_).

Query Parameters
  • expand
    Optional
    array

    An array with:

    player

    Specifies the fields to expand.

{
  "id": "web3_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "object": "web3Connection",
  "createdAt": 1689869074,
  "player": "pla_...",
  "disconnected": false
}

List Web3 actions from a web3 connection.

get/v1/web3_connections/{id}/actions

Returns a list of web3 actions for the given web3 connection. The actions are returned sorted by creation date, with the most recently received action appearing first. By default, a maximum of ten actions are shown per page.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the web3Connection ID (starts with web3_).

{
  "object": "list",
  "url": "/v1/web3_actions",
  "data": [
    {
      "id": "act_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
      "object": "web3Action",
      "createdAt": 1689869074,
      "web3Connection": "web3_...",
      "status": "Pending",
      "method": "personal_sign",
      "chaindId": "11155111",
      "from": "0x...",
      "data": "0x...",
      "hashedData": "0x...",
      "decodedData": "This is a decoded data..."
    }
  ],
  "start": 0,
  "end": 1,
  "total": 1
}

Approve or Reject a web3 action

post/v1/web3_connections/{id}/actions/{web3_action}

Approve or Reject a web3 action for the given web3 connection.

Path Parameters
  • id
    REQUIRED
    string

    Specifies the web3Connection ID (starts with web3_).

  • web3_action
    REQUIRED
    string

    Specifies web3_action (starts with act_).

Body Parameters
  • approve
    REQUIRED
    boolean

    True to approve the action, false to reject it.

  • policy
    Optional
    string

    The policy ID (starts with pol_)

  • signature
    Optional
    string

    signed data by the owner

{
  "id": "act_c502d628-5bb3-42f2-b8f5-62ba4d71df3a",
  "object": "web3Action",
  "createdAt": 1689869074,
  "web3Connection": "web3_...",
  "status": "Approved",
  "method": "personal_sign",
  "chaindId": "11155111",
  "from": "0x...",
  "data": "0x...",
  "hashedData": "0x...",
  "decodedData": "This is a decoded data..."
}