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.
_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.
_10 curl https://api.openfort.xyz/v1/players/pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60 \
_10 -u YOUR_SECRET_KEY: \
_10 -d "expand[]=accounts"
_35 "createdAt": 1689869074,
_35 "name": "Frank McCallister",
_35 "email": "Frank@dMcCallister.com",
_35 "description": "Tutorial",
_35 "createdAt": 1689869074,
_35 "address": "0x0B49...cc73",
_35 "id": "acc_7ccae011-4f30-41c0-876f-27679d3e81ef",
_35 "createdAt": 1689869074,
_35 "address": "0x0B49...cc73",
_35 "transactionIntents": [
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. Body Parameters The email address of the user.
The password of the user.
The name of the user.
description Optional
string The description of the user.
Login a player.
Verify an auth token.
List authenticated players. Query Parameters Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
Specifies the email address of the user.
Response Example 1 {
"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.
The salt used expand the password of the user.
owner_address REQUIRED
string The address of the owner.
Response Example 1 {
"player" : "pla_..." ,
"ownerAddress" : "0x..." ,
"createdAt" : 1691658234,
"updatedAt" : 1691658234
}
Retrieve the key for the authenticated player. get /iam/v1/players/retrieve_key
Response Example 1 {
"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
List of oauth configurations. The endpoint retrieves the list of oauth configurations for the current project environment.
Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"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.
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 One of:
accelbyte
firebase
google
lootlocker
playfab
OAuth provider
Response Example 1 {
"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 One of:
accelbyte
firebase
google
lootlocker
playfab
OAuth provider
Response Example 1 {
"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 One of:
accelbyte
firebase
google
lootlocker
playfab
OAuth provider
external_user_id REQUIRED
string External user id
Response Example 1 {
"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 ten accounts are shown per page.
Query Parameters Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
An array with:
transactionIntents
Specifies the fields to expand in the response.
Specifies the unique player ID (starts with pla_)
Response Example 1 {
"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. 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 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
If ERC6551, the tokenID to serve as owner
The player ID (starts with pla_)
Response Example 1 {
"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. 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.
Query Parameters An array with:
transactionIntents
Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"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
Response Example 1 {
"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
Response Example 1 {
"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. List of all contracts per project.
By default, a maximum of ten contracts are shown.
Query Parameters Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
Specifies the name of the contract.
Specifies whether to include deleted contracts.
The chain ID of the contract.
Specifies the address of the contract.
Response Example 1 {
"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. Add a new contract to your project in Openfort
Body Parameters Specifies the name of the contract (Only for display purposes).
Specifies the chain ID of the contract.
Specifies the address of the contract.
Specifies the ABI of the contract.
Open accepted values stateMutability Optional
string publicVerification Optional
boolean Specifies whether to verify the contract publicly.
Response Example 1 {
"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. Retrieve a contract by providing their contract id.
Response Example 1 {
"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. Body Parameters Specifies the name of the contract (Only for display purposes).
Specifies the chain ID of the contract.
Specifies whether to delete the contract.
Specifies the address of the contract.
Specifies the ABI of the contract.
Open accepted values stateMutability Optional
string publicVerification Optional
boolean Specifies whether to verify the contract publicly.
Response Example 1 {
"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 a contract from the project by providing its contract id.
Response Example 1 {
"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.
Response Example 1 {
"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
Response Example 1 {
"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
Query Parameters Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
Filter by contract ID (starts with con_).
Filter by chain id.
Response Example 1 {
"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
Query Parameters Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
Filter by contract ID (starts with con_).
Filter by chain id.
Response Example 1 {
"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
Response Example 1 {
"object" : "inventory" ,
"url" : "/v1/players/pla_.../inventory/native" ,
"data" : {
"assetType" : "ETH" ,
"amount" : "1000000000000000000" ,
"lastTransferredAt" : 1689869074
}
}
Get inventory of account. get /v1/accounts/{id}/inventory
Retrieves the NFT assets of an existing account. get /v1/accounts/{id}/inventory/nft
Query Parameters Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
Response Example 1 {
"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
Query Parameters Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
Response Example 1 {
"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
Response Example 1 {
"object" : "inventory" ,
"url" : "/v1/accounts/acc_.../inventory/native" ,
"data" : {
"assetType" : "ETH" ,
"amount" : "1000000000000000000" ,
"lastTransferredAt" : 1689869074
}
}
List players. By default, a maximum of ten players are shown.
Query Parameters Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
An array with:
transactionIntents
accounts
Specifies the fields to expand in the response.
Filter by player name.
Response Example 1 {
"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. Add a new player to your player list in Openfort.
Body Parameters Specifies the player name.
description Optional
string Specifies the player description.
Specifies the player metadata.
Response Example 1 {
"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. Response Example 1 {
"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. Body Parameters Specifies the player name.
description Optional
string Specifies the player description.
Specifies the player metadata.
Response Example 1 {
"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. Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"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
Body Parameters The address of the session key.
The chain ID.
externalOwnerAddress Optional
string If no account exists for a given player, create one with this address.
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.
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.
The list of whitelisted addresses (contracts the session key can interact with).
Response Example 1 {
"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
Body Parameters The address of the session key to revoke.
The policy ID (starts with pol_)
optimistic Optional
boolean Whether the transactionIntent is optimistic (resolve before it arrives on chain) or not.
The chain ID.
Response Example 1 {
"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
Response Example 1 {
"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
Body Parameters 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
If ERC6551, the tokenID to serve as owner
Response Example 1 {
"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. Query Parameters Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
An array with:
transactionIntents
policyRules
Specifies the fields to expand in the response.
Specifies the name of the policy.
Specifies whether to include deleted contracts.
The chain ID of the policy.
Specifies whether to include enabled contracts.
Response Example 1 {
"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. Body Parameters Specifies the name of the policy.
The chain ID of the policy.
The sponsor schema of the policy.
Open accepted values sponsorSchema Optional
string The sponsor schema of the policy.
One of:
pay_for_user
charge_custom_tokens
fixed_rate
tokenContract Optional
string If the user pays in custom tokens, the contract ID (starts with con_) of the token contract.
tokenContractAmount Optional
string If the user pays in ERC20 tokens, this reflects either the exchange rate or the amount in WEI.
If the you want to use your own native tokens to pay for gas, specify the depositor ID (starts with dep_)
Response Example 1 {
"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. Response Example 1 {
"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. Body Parameters Specifies the name of the policy.
The chain ID of the policy.
The sponsor schema of the policy.
Open accepted values sponsorSchema Optional
string The sponsor schema of the policy.
One of:
pay_for_user
charge_custom_tokens
fixed_rate
tokenContract Optional
string If the user pays in custom tokens, the contract ID (starts with con_) of the token contract.
tokenContractAmount Optional
string If the user pays in ERC20 tokens, this reflects either the exchange rate or the amount in WEI.
If the you want to use your own native tokens to pay for gas, specify the depositor ID (starts with dep_)
Specifies whether to delete the policy.
Response Example 1 {
"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. Response Example 1 {
"id" : "pol_..." ,
"deleted" : true ,
"object" : "policy"
}
Disable a policy object. put /v1/policies/{id}/disable
Response Example 1 {
"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
Response Example 1 {
"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
Response Example 1 {
"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
Body Parameters 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 ID to allow.
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.
Response Example 1 {
"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}
Body Parameters 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 ID to allow.
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.
Response Example 1 {
"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
Response Example 1 {
"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
Response Example 1 {
"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 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 ID to allow.
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.
The unique Policy ID to add the rule to.
Response Limit contract sponsorship {
"createdAt" : 1689869074,
"id" : "afu_..." ,
"object" : "policyRule" ,
"type" : "contract_functions" ,
"contract" : {
"id" : "con_..."
},
"functionName" : "mint"
}
Response Limit number of sponsored txns
Response Limit gas sponsored in interval
Response Limit gas spent per txn
Response Allow self account sponsorship
Update a policy rule object. post /v1/policy_rules/{id}
Body Parameters 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 ID to allow.
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.
Response Example 1 {
"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}
Response Example 1 {
"id" : "afu_..." ,
"object" : "policyRule" ,
"deleted" : true
}
Create a session key. Body Parameters The address of the session key.
The chain ID.
externalOwnerAddress Optional
string If no account exists for a given player, create one with this address.
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.
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.
The list of whitelisted addresses (contracts the session key can interact with).
The player ID (starts with pla_).
Response Example 1 {
"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. Query Parameters Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
The player ID (starts with pla_)
An array with:
transactionIntents
Specifies the fields to expand in the response.
Response Example 1 {
"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. Body Parameters The address of the session key to revoke.
The policy ID (starts with pol_)
optimistic Optional
boolean Whether the transactionIntent is optimistic (resolve before it arrives on chain) or not.
The chain ID.
The player ID (starts with pla_).
Response Example 1 {
"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
Response Example 1 {
"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 Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"message" : "I want to register 0x0000000000000000000000000000000000000000 to the project 33333333-3333-3333-3333-333333333333 for mainnets on 20231231" ,
"depositorAddress" : "0x0000000000000000000000000000000000000000"
}
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.
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 Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
An array with:
nextAction
policy
player
account
Specifies the fields to expand in the response.
The chain ID.
Filter by account ID.
Filter by player ID (starts with pla_).
Filter by policy ID (starts with pol_).
Response Example 1 {
"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 The player ID (starts with pla_).
The chain ID.
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 Open accepted values The address of the contract.
The contract interacting with
The value of the transaction.
functionName Optional
string The function name of the contract.
functionArgs Optional
array The function arguments of the contract.
Response Transaction for custodial account {
"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"
]
}
]
}
Response Transaction for self-custodial account
Response Optimistic Transaction for custodial account
Get a transaction intent object. get /v1/transaction_intents/{id}
Response Example 1 {
"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 The player ID (starts with pla_).
The chain ID.
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 Open accepted values The address of the contract.
The contract interacting with
The value of the transaction.
functionName Optional
string The function name of the contract.
functionArgs Optional
array The function arguments of the contract.
Response Gas estimation {
"preVerificationGas" : "55637" ,
"verificationGas" : "375974" ,
"callGasLimit" : "79646" ,
"verificationGasLimit" : "375974" ,
"estimatedTXGas" : "444793" ,
"estimatedTXGasFee" : "1162163748854053" ,
"estimatedTXGasFeeUSD" : "0.01" ,
"gasPrice" : "2612819331"
}
Response Gas estimation with token policy
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.
Response Example 1 {
"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. 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 Specifies the maximum number of records to return.
Specifies the offset for the first records to return.
Specifies the order in which to sort the results.
Specifies the unique player ID (starts with pla_)
disconnected Optional
boolean Specifies connection status
Response Example 1 {
"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. 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)
Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"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.
Response Example 1 {
"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..."
}