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. When using Openfort Auth, the endpoint creates a player based on his email, and returns the jwt token for the player together with the player id.
curl https://api.openfort.xyz/iam/v1/auth/signup \
-u " $YOUR_PUBLIC_KEY :" \
-d 'email=user@email.com' \
-d 'password=password' \
-d 'name=John Doe'
Login a player. When using Openfort Auth, the endpoint authenticates the player based on his email, and returns the jwt token for the player together with the player id.
curl https://api.openfort.xyz/iam/v1/auth/login \
-u " $YOUR_PUBLIC_KEY :" \
-d 'email=user@email.com' \
-d 'password=password'
Verify an auth token. When using Openfort Auth, the endpoint verifies the token generated by Openfort Auth and retrieves a corresponding player.
curl https://api.openfort.xyz/iam/v1/auth/verify \
-u " $YOUR_SECRET_KEY :" \
-d 'token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwcm9qZWN0SWQiOiJwcm9qZWN0XzQ4ZWViYTU3LTJjZDUtNDE1OS1hMmNiLTA1N2EyM2EzNWU2NSIsInVzZXJJZCI6InVzZXJfNDhlZWI1Ny0yY2Q1LTQxNTktYTJjYi0wNTdhMjNhMzVlNjUiLCJpYXQiOjE2MjY0NjY0NzcsImV4cCI6MTYyN'
List authenticated players.
Query Parameters limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
email string
Specifies the email address of the user.
curl https://api.openfort.xyz/iam/v1/players \
-u " $YOUR_SECRET_KEY :"
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.
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.
post /iam/v1/players/register_key
curl https://api.openfort.xyz/iam/v1/players/register_key \
-u " $YOUR_SECRET_KEY :" \
-d 'pk_ciphertext=0xe12fa94af9dac83ab16fa151043c9aa6084929898b27752e56a03173292a6e5d194455ee2e5dfa443c67d02b323a29f6b5aa0a7b538982da4b649bf7759e5c7c1c' \
-d 'salt=0xe12fa94af9dac83ab16fa151043c9aa6084929898b27752e56a03173292a6e5d194455ee2e5dfa443c67d02b323a29f6b5aa0a7b538982da4b649bf7759e5c7c1c' \
-d 'owner_address=0x1234567890abcdef1234567890abcdef12345678'
Response Example 1 {
"player" : "pla_..." ,
"ownerAddress" : "0x..." ,
"createdAt" : 1691658234,
"updatedAt" : 1691658234
}
Retrieve the key for the authenticated player. get /iam/v1/players/retrieve_key
curl https://api.openfort.xyz/iam/v1/players/retrieve_key \
-u " $YOUR_SECRET_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
curl https://api.openfort.xyz/iam/v1/oauth/google/signin_url \
-u " $YOUR_PUBLIC_KEY :"
Get the google oauth token. get /iam/v1/oauth/google/token
curl https://api.openfort.xyz/iam/v1/oauth/google/token \
-u " $YOUR_PUBLIC_KEY :" \
List of oauth configurations. The endpoint retrieves the list of oauth configurations for the current project environment.
curl https://api.openfort.xyz/iam/v1/oauth \
-u " $YOUR_SECRET_KEY :"
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.
curl https://api.openfort.xyz/iam/v1/oauth \
-u " $YOUR_SECRET_KEY :"
Response Example 1 {
"enabled" : true ,
"baseUrl" : "https://mygame.dev.gamingservices.accelbyte.io/" ,
"clientId" : "1234567890abcdef1234567890abcdef" ,
"clientSecret" : "abcdef1234567890abcdef1234567890" ,
"provider" : "accelbyte"
}
Get oauth configuration. The endpoint retrieves oauth configuration for specified provider for the current project environment.
get /iam/v1/oauth/{provider}
curl https://api.openfort.xyz/iam/v1/oauth/{provider} \
-u " $YOUR_SECRET_KEY :"
Response Example 1 {
"enabled" : true ,
"baseUrl" : "https://mygame.dev.gamingservices.accelbyte.io/" ,
"clientId" : "1234567890abcdef1234567890abcdef" ,
"clientSecret" : "abcdef1234567890abcdef1234567890" ,
"provider" : "accelbyte"
}
Delete oauth configuration. The endpoint deletes oauth configuration for specified provider for the current project environment.
delete /iam/v1/oauth/{provider}
curl https://api.openfort.xyz/iam/v1/oauth/{provider} \
-u " $YOUR_SECRET_KEY :"
Authorize player with token. The endpoint verifies the token generated by OAuth provider, creates or retrieves a player based on his email, and returns the jwt token for the player together with the player id.
Path Parameters One of:
accelbyte
firebase
google
lootlocker
playfab
OAuth provider
post /iam/v1/oauth/{provider}/authorize
curl https://api.openfort.xyz/iam/v1/oauth/{provider}/authorize \
-u " $YOUR_PUBLIC_KEY :" \
-d 'token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
Response Example 1 {
"playerId" : "pla_..." ,
"token" : "abcd...."
}
Retrieve player by token. 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
post /iam/v1/oauth/{provider}/verify
curl https://api.openfort.xyz/iam/v1/oauth/{provider}/verify \
-u " $YOUR_PUBLIC_KEY :" \
-d 'token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9'
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. 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
get /iam/v1/oauth/{provider}/user/{external_user_id}
curl https://api.openfort.xyz/iam/v1/oauth/{provider}/user/1234567890 \
-u " $YOUR_SECRET_KEY :"
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 limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
expand array
An array with:
transactionIntents
Specifies the fields to expand in the response.
Specifies the unique player ID (starts with pla_)
curl https://api.openfort.xyz/v1/accounts \
-u " $YOUR_SECRET_KEY :" \
-d 'player=pla_6f6c9067-89fa-4fc8-ac72-c242a268c584'
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" : "Recoverable_v05" ,
"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.
curl https://api.openfort.xyz/v1/accounts \
-u " $YOUR_SECRET_KEY :" \
-d 'chainId=80001' \
-d 'player=pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60'
Response Example 1 {
"id" : "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a" ,
"createdAt" : 1689869074,
"address" : "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa" ,
"chainId" : 5,
"deployed" : true ,
"custodial" : false ,
"object" : "account" ,
"accountType" : "Recoverable_v05" ,
"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 expand array
An array with:
transactionIntents
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
-u " $YOUR_SECRET_KEY :"
Response Example 1 {
"id" : "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a" ,
"createdAt" : 1689869074,
"address" : "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa" ,
"chainId" : 5,
"deployed" : true ,
"custodial" : false ,
"object" : "account" ,
"accountType" : "Recoverable_v05" ,
"ownerAddress" : "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa" ,
"transactionIntents" : [
{
"id" : "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
}
]
}
Request transfer ownership of account. 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.
post /v1/accounts/{id}/request_transfer_ownership
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/request_transfer_ownership \
-u " $YOUR_SECRET_KEY :" \
-d 'newOwnerAddress=0x1234567890abcdef1234567890abcdef12345678' \
-d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
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. This endpoint allows you to cancel a pending transfer of ownership.
post /v1/accounts/{id}/cancel_transfer_ownership
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/cancel_transfer_ownership \
-u " $YOUR_SECRET_KEY :" \
-d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
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 Signs the typed data value with types data structure for domain using the EIP-712 specification.
post /v1/accounts/{id}/sign_payload
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/sign_payload \
-u " $YOUR_SECRET_KEY :" \
-d 'domain[0][chainId]=80001' \
-d 'primaryType=OrderComponents' \
-d 'hash=0xa8ef67af8361fc7f8cf9ba962074418e8cd9233a78237e1c83b1305405d92858'
Response Example 1 {
"account" : "acc_..." ,
"hash" : "0x25d3...005c" ,
"object" : "signature" ,
"signature" : "0x25d3...005c" ,
"address" : "0x8C5cedA46A2...36Ad2F6255BdBEa"
}
Sync account state with the blockchain This endpoint updates the account state with the blockchain. Specifically, it updates the account owner and whether its deployed or not.
post /v1/accounts/{id}/sync
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/sync \
-u " $YOUR_SECRET_KEY :"
Response Example 1 {
"id" : "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a" ,
"createdAt" : 1689869074,
"address" : "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa" ,
"chainId" : 5,
"deployed" : true ,
"custodial" : false ,
"object" : "account" ,
"accountType" : "Recoverable_v05" ,
"ownerAddress" : "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa" ,
"transactionIntents" : [
{
"id" : "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
}
]
}
Deploy an account. This endpoint can be used to deploy an account that was counterfactually generated.
post /v1/accounts/{id}/deploy
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/deploy \
-u " $YOUR_SECRET_KEY :" \
-d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
Response Example 1 {
"id" : "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a" ,
"createdAt" : 1689869074,
"address" : "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa" ,
"chainId" : 5,
"deployed" : true ,
"custodial" : false ,
"object" : "account" ,
"accountType" : "Recoverable_v05" ,
"ownerAddress" : "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa" ,
"transactionIntents" : [
{
"id" : "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
}
]
}
Start a recovery process of a recoverable account. post /v1/accounts/{id}/start_recovery
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/start_recovery \
-u " $YOUR_SECRET_KEY :" \
-d 'newOwnerAddress=0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d' \
-d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
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
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/complete_recovery \
-u " $YOUR_SECRET_KEY :" \
-d 'newOwnerAddress=0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d' \
-d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
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 limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
name string
Specifies the name of the contract.
deleted boolean
Specifies whether to include deleted contracts.
chainId integer
The chain ID of the contract.
address string
Specifies the address of the contract.
curl https://api.openfort.xyz/v1/contracts \
-u " $YOUR_SECRET_KEY :"
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.
curl https://api.openfort.xyz/v1/contracts \
-u " $YOUR_SECRET_KEY :" \
-d 'name=NFT Contract' \
-d 'chainId=80001' \
-d 'address=0x742e6e61d760164d56f44801054bcf40fa821d97'
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.
curl https://api.openfort.xyz/v1/contracts/con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
-u " $YOUR_SECRET_KEY :"
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. curl https://api.openfort.xyz/v1/contracts/con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
-u " $YOUR_SECRET_KEY :"
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.
curl https://api.openfort.xyz/v1/contracts/con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
-u " $YOUR_SECRET_KEY :"
Response Example 1 {
"id" : "con_c502d628-5bb3-42f2-b8d5-62ba46717f3a" ,
"deleted" : true ,
"object" : "contract"
}
Read on chain contract data. Using this endpoint, you can get the data returned by any readable
function listed in a contracts ABI. This could be things like querying
the totalSupply of a currency contract, the number of owners of an items
contract, and more.
Query Parameters functionName REQUIRED
string The function name of the contract.
functionArgs array
The function arguments of the contract, in string format. (accepts pla_, con_ and acc_ IDs)
get /v1/contracts/{id}/read
curl https://api.openfort.xyz/v1/contracts/con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35/ read \
-u " $YOUR_SECRET_KEY :" \
-d 'functionName=mint'
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. Deprecated get /v1/players/{id}/inventory
curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/inventory \
-u " $YOUR_SECRET_KEY :" \
-d 'chainId=80001'
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.
Query Parameters limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
contractId array
Filter by contract ID (starts with con_).
Filter by chain id.
get /v1/players/{id}/inventory/nft
curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/inventory/nft \
-u " $YOUR_SECRET_KEY :" \
-d 'chainId=80001'
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.
Query Parameters limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
contractId array
Filter by contract ID (starts with con_).
Filter by chain id.
get /v1/players/{id}/inventory/cryptocurrency
curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/inventory/cryptocurrency \
-u " $YOUR_SECRET_KEY :" \
-d 'chainId=80001'
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
curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/inventory/native \
-u " $YOUR_SECRET_KEY :" \
-d 'chainId=80001'
Response Example 1 {
"object" : "inventory" ,
"url" : "/v1/players/pla_.../inventory/native" ,
"data" : {
"assetType" : "ETH" ,
"amount" : "1000000000000000000" ,
"lastTransferredAt" : 1689869074
}
}
Get inventory of account. Deprecated get /v1/accounts/{id}/inventory
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/inventory \
-u " $YOUR_SECRET_KEY :"
Retrieves the NFT assets of an existing account.
Query Parameters limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
contractId array
get /v1/accounts/{id}/inventory/nft
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/inventory/nft \
-u " $YOUR_SECRET_KEY :"
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.
Query Parameters limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
contractId array
get /v1/accounts/{id}/inventory/cryptocurrency
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/inventory/cryptocurrency \
-u " $YOUR_SECRET_KEY :"
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
curl https://api.openfort.xyz/v1/accounts/acc_4194ad24-c818-4e5c-b003-9cc2aa7df53b/inventory/native \
-u " $YOUR_SECRET_KEY :"
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 limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
expand array
An array with:
transactionIntents
accounts
Specifies the fields to expand in the response.
name string
Filter by player name.
curl https://api.openfort.xyz/v1/players \
-u " $YOUR_SECRET_KEY :"
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.
curl https://api.openfort.xyz/v1/players \
-u " $YOUR_SECRET_KEY :" \
-d 'name=John'
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. curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
-u " $YOUR_SECRET_KEY :"
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. curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
-u " $YOUR_SECRET_KEY :"
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. curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
-u " $YOUR_SECRET_KEY :"
Response Example 1 {
"id" : "pla_00000000-0000-0000-0000-000000000000" ,
"object" : "player" ,
"deleted" : true
}
Request transfer ownership of a player. This endpoint allows you to perform a request to change the owner of an account.
To perform an update on the owner of an account, first you must provide a new owner address.
Once requested, the owner must accept to take ownership by calling acceptOwnership()
in the smart contract account.
Body Parameters The policy ID (starts with pol_)
The chain id where the account is.
newOwnerAddress REQUIRED
string The address of the new owner
post /v1/players/{id}/request_transfer_ownership
curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/request_transfer_ownership \
-u " $YOUR_SECRET_KEY :" \
-d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd' \
-d 'chainId=80001' \
-d 'newOwnerAddress=0x1234567890abcdef1234567890abcdef12345678'
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 a player. This endpoint allows you to cancel a pending transfer of ownership.
post /v1/players/{id}/cancel_transfer_ownership
curl https://api.openfort.xyz/v1/players/{id}/cancel_transfer_ownership \
-u " $YOUR_SECRET_KEY :" \
-d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd' \
-d 'chainId=80001'
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. Deprecated
Body Parameters The address of the session key.
The chain ID.
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.
post /v1/players/{id}/sessions
curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/sessions \
-u " $YOUR_SECRET_KEY :" \
-d 'address=0x1234567890abcdef1234567890abcdef12345678' \
-d 'chainId=80001' \
-d 'validAfter=10' \
-d 'validUntil=12351235123'
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. Deprecated post /v1/players/{id}/sessions/revoke
curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/sessions/revoke \
-u " $YOUR_SECRET_KEY :" \
-d 'address=0x1234567890abcdef1234567890abcdef12345678' \
-d 'chainId=80001'
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. Deprecated get /v1/players/{id}/accounts
curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/accounts \
-u " $YOUR_SECRET_KEY :"
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" : "Recoverable_v05" ,
"ownerAddress" : "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa" ,
"transactionIntents" : [
{
"id" : "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
}
]
}
]
}
Create account object for a player. Deprecated post /v1/players/{id}/accounts
curl https://api.openfort.xyz/v1/players/pla_48eeba57-2cd5-4159-a2cb-057a23a35e65/accounts \
-u " $YOUR_SECRET_KEY :" \
-d 'chainId=80001'
Response Example 1 {
"id" : "acc_c502d628-5bb3-42f2-b8d5-62ba46717f3a" ,
"createdAt" : 1689869074,
"address" : "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa" ,
"chainId" : 5,
"deployed" : true ,
"custodial" : false ,
"object" : "account" ,
"accountType" : "Recoverable_v05" ,
"ownerAddress" : "0x8C5cedA46A26214A52A9D7BF036Ad2F6255BdBEa" ,
"transactionIntents" : [
{
"id" : "tin_c502d628-5bb3-42f2-b8f5-62ba4d71df3a"
}
]
}
List policies.
Query Parameters limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
expand array
An array with:
transactionIntents
policyRules
Specifies the fields to expand in the response.
name string
Specifies the name of the policy.
deleted boolean
Specifies whether to include deleted contracts.
chainId integer
The chain ID of the policy.
enabled boolean
Specifies whether to include enabled contracts.
curl https://api.openfort.xyz/v1/policies \
-u " $YOUR_SECRET_KEY :"
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 string
The sponsor schema of the policy.
One of:
pay_for_user
charge_custom_tokens
fixed_rate
tokenContract string
If the user pays in custom tokens, the contract ID (starts with con_) of the token contract.
tokenContractAmount string
If the user pays in ERC20 tokens, this reflects either the exchange rate or the amount in WEI.
depositor string
If the you want to use your own native tokens to pay for gas, specify the depositor ID (starts with dep_)
curl https://api.openfort.xyz/v1/policies \
-u " $YOUR_SECRET_KEY :" \
-d 'name=My Policy' \
-d 'chainId=80001' \
-d 'strategy[0][sponsorSchema]=fixed_rate' \
-d 'strategy[0][tokenContract]=con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35' \
-d 'strategy[0][tokenContractAmount]=1000000000000000000' \
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. curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
-u " $YOUR_SECRET_KEY :"
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. curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
-u " $YOUR_SECRET_KEY :"
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. curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
-u " $YOUR_SECRET_KEY :"
Response Example 1 {
"id" : "pol_..." ,
"deleted" : true ,
"object" : "policy"
}
Disable a policy object. put /v1/policies/{id}/disable
curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/ disable \
-u " $YOUR_SECRET_KEY :"
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
curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/ enable \
-u " $YOUR_SECRET_KEY :"
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. Deprecated get /v1/policies/{id}/policy_rules
curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/policy_rules \
-u " $YOUR_SECRET_KEY :"
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. Deprecated
Body Parameters One of:
contract_functions
account_functions
rate_limit
The type of rule to add.
post /v1/policies/{id}/policy_rules
curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/policy_rules \
-u " $YOUR_SECRET_KEY :" \
-d 'type=account_functions'
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. Deprecated
Body Parameters One of:
contract_functions
account_functions
rate_limit
The type of rule to add.
post /v1/policies/{policy}/policy_rules/{policy_rule}
curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/policy_rules/afu_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
-u " $YOUR_SECRET_KEY :" \
-d 'type=account_functions'
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
curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/reports \
-u " $YOUR_SECRET_KEY :"
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. Deprecated get /v1/policies/{id}/policy_rules
curl https://api.openfort.xyz/v1/policies/pol_48eeba57-2cd5-4159-a2cb-057a23a35e65/policy_rules \
-u " $YOUR_SECRET_KEY :"
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. curl https://api.openfort.xyz/v1/policy_rules \
-u " $YOUR_SECRET_KEY :" \
-d 'type=account_functions' \
-d 'policy=pol_7e07ae30-2a4d-48fa-803f-361da94905dd'
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.
Body Parameters One of:
contract_functions
account_functions
rate_limit
The type of rule to add.
post /v1/policy_rules/{id}
curl https://api.openfort.xyz/v1/policy_rules/afu_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
-u " $YOUR_SECRET_KEY :" \
-d 'type=account_functions'
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}
curl https://api.openfort.xyz/v1/policy_rules/afu_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
-u " $YOUR_SECRET_KEY :"
Response Example 1 {
"id" : "afu_..." ,
"object" : "policyRule" ,
"deleted" : true
}
Create a session key.
Body Parameters The address of the session key.
The chain ID.
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 player ID (starts with pla_).
curl https://api.openfort.xyz/v1/sessions \
-u " $YOUR_SECRET_KEY :" \
-d 'address=0x1234567890abcdef1234567890abcdef12345678' \
-d 'chainId=80001' \
-d 'validAfter=10' \
-d 'validUntil=12351235123' \
-d 'player=pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60'
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 limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
The player ID (starts with pla_)
expand array
An array with:
transactionIntents
Specifies the fields to expand in the response.
curl https://api.openfort.xyz/v1/sessions \
-u " $YOUR_SECRET_KEY :" \
-d 'player=pla_48eeba57-2cd5-4159-a2cb-057a23a35e65'
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. curl https://api.openfort.xyz/v1/sessions/revoke \
-u " $YOUR_SECRET_KEY :" \
-d 'address=0x1234567890abcdef1234567890abcdef12345678' \
-d 'chainId=80001' \
-d 'player=pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60'
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
curl https://api.openfort.xyz/v1/sessions/ses_4194ad24-c818-4e5c-b003-9cc2aa7df53b/signature \
-u " $YOUR_PUBLIC_KEY :" \
-d 'signature=0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
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 curl https://api.openfort.xyz/v1/sessions/ses_4194ad24-c818-4e5c-b003-9cc2aa7df53b \
-u " $YOUR_SECRET_KEY :"
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. Verify signature and add a depositor address to the current project environment.
post /v1/settings/depositor_addresses
curl https://api.openfort.xyz/v1/settings/depositor_addresses \
-u " $YOUR_SECRET_KEY :" \
-d 'depositorAddress=0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d' \
-d 'signature=0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
Response Example 1 {
"id" : "dep_00000000-0000-0000-0000-000000000000" ,
"depositorAddress" : "0x0000000000000000000000000000000000000000"
}
List of depositor addresses. Retrieve the list of the depositor addresses for the current project environment.
get /v1/settings/depositor_addresses
curl https://api.openfort.xyz/v1/settings/depositor_addresses \
-u " $YOUR_SECRET_KEY :"
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. Remove a depositor address from the current project environment.
delete /v1/settings/depositor_addresses/{id}
curl https://api.openfort.xyz/v1/settings/depositor_addresses/dep_0cddb398-1dc6-4e6f-8726-9ec7cea85f35 \
-u " $YOUR_SECRET_KEY :"
Response Example 1 {
"id" : "dep_00000000-0000-0000-0000-000000000000" ,
"object" : "paymasterDepositor" ,
"deleted" : true
}
Generate message to sign Generate message, which should be signed for verification of the address ownership.
get /v1/settings/depositor_addresses/message_to_sign
curl https://api.openfort.xyz/v1/settings/depositor_addresses/message_to_sign \
-u " $YOUR_SECRET_KEY :" \
-d 'address=0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d'
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.
curl https://api.openfort.xyz/v1/settings/webhook \
-u " $YOUR_SECRET_KEY :" \
-d 'url=https://example.com'
Removes webhook. Updated the current project environment settings by removing the webhook address.
After that system will stop sending events of the transaction intent state changes
delete /v1/settings/webhook
curl https://api.openfort.xyz/v1/settings/webhook \
-u " $YOUR_SECRET_KEY :"
List transaction intents.
Query Parameters limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
expand array
An array with:
nextAction
policy
player
account
Specifies the fields to expand in the response.
chainId integer
The chain ID.
accountId array
Filter by account ID.
playerId array
Filter by player ID (starts with pla_).
policyId array
Filter by policy ID (starts with pol_).
get /v1/transaction_intents
curl https://api.openfort.xyz/v1/transaction_intents \
-u " $YOUR_SECRET_KEY :"
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. Retrieve a transaction intent by providing their id on Openfort.
Transaction intents that have not been processed yet, have the response
attribute as undefined.
post /v1/transaction_intents
curl https://api.openfort.xyz/v1/transaction_intents \
-u " $YOUR_SECRET_KEY :" \
-d 'player=pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60' \
-d 'chainId=80001' \
-d 'optimistic=true' \
-d 'interactions[0][contract]=con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35' \
-d 'interactions[0][functionName]=mint' \
-d 'interactions[0][functionArgs]=0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d'
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}
curl https://api.openfort.xyz/v1/transaction_intents/tin_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
-u " $YOUR_SECRET_KEY :"
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 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.
post /v1/transaction_intents/estimate_gas_cost
curl https://api.openfort.xyz/v1/transaction_intents/estimate_gas_cost \
-u " $YOUR_SECRET_KEY :" \
-d 'player=pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60' \
-d 'chainId=80001' \
-d 'optimistic=true' \
-d 'interactions[0][contract]=con_0cddb398-1dc6-4e6f-8726-9ec7cea85f35' \
-d 'interactions[0][functionName]=mint' \
-d 'interactions[0][functionArgs]=0x662D24Bf7Ea2dD6a7D0935F680a6056b94fE934d'
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. 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.
post /v1/transaction_intents/{id}/signature
curl https://api.openfort.xyz/v1/transaction_intents/tin_48eeba57-2cd5-4159-a2cb-057a23a35e65/signature \
-u " $YOUR_PUBLIC_KEY :" \
-d 'signature=0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
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 limit integer
Specifies the maximum number of records to return.
skip integer
Specifies the offset for the first records to return.
order string
Specifies the order in which to sort the results.
player string
Specifies the unique player ID (starts with pla_)
disconnected boolean
Specifies connection status
curl https://api.openfort.xyz/v1/web3_connections \
-u " $YOUR_SECRET_KEY :"
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 .
curl https://api.openfort.xyz/v1/web3_connections \
-u " $YOUR_SECRET_KEY :" \
-d 'player=pla_e0b84653-1741-4a3d-9e91-2b0fd2942f60' \
-d 'chainId=80001' \
-d 'uri=wc:f6b98f7d78c5233413aacc7cbe9ff6035eec3611d36eb311051429a83af419a1@2?relay-protocol=irn&symKey=e8b33b4b969dc952ba6d28bd58f0ddb7ec1106a3c9610961218061a7813f11a6'
Response Example 1 {
"id" : "web3_c502d628-5bb3-42f2-b8f5-62ba4d71df3a" ,
"object" : "web3Connection" ,
"createdAt" : 1689869074,
"player" : "pla_..." ,
"disconnected" : false
}
Get a web3Connection object. 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.
get /v1/web3_connections/{id}
curl https://api.openfort.xyz/v1/web3_connections/web3_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
-u " $YOUR_SECRET_KEY :"
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. 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.
get /v1/web3_connections/{id}/actions
curl https://api.openfort.xyz/v1/web3_connections/web3_48eeba57-2cd5-4159-a2cb-057a23a35e65/actions \
-u " $YOUR_SECRET_KEY :"
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 Approve or Reject a web3 action for the given web3 connection.
post /v1/web3_connections/{id}/actions/{web3_action}
curl https://api.openfort.xyz/v1/web3_connections/web3_48eeba57-2cd5-4159-a2cb-057a23a35e65/actions/act_48eeba57-2cd5-4159-a2cb-057a23a35e65 \
-u " $YOUR_SECRET_KEY :" \
-d 'approve=true'
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..."
}