Fordefi API (0.2.0)
https://api.fordefi.com/
Users
These endpoints allow you to get information about users in your Fordefi organization.
There are several types of users in the Fordefi platform:
- Person: A human user of the platform.
- API User, also commonly known as a service account. See Create an API user.
- API Signer: Used to auto-sign transactions. See Automate Signing with API Signer.
Users can have one of three possible roles, which define the permissions that the user is given:
- Admin: A user with high privileges in the organization. Only admins have permission to manage the policy, set up the backup, manage the address book, and add or remove users in the organization. Only a person can have an admin role.
- Trader: A user who can create vaults and transactions.
- Viewer: A user who has full view of the organization's users, addresses, and policies, as well as of the vaults and transactions, but does not have permissions to create or modify them.
The Users API is currently read-only. To add/remove users, visit the Fordefi web console.
Webhooks
These endpoints allow you to manually trigger your pre-configured webhooks.
Use Webhooks describes how to configure webhooks, validate them, and resend them.
Address Book
These endpoints allow you to list the contacts in your address book.
To add/remove contacts, visit the Fordefi web console. See the user guide for more info.
Transactions
These endpoints allow you to manage transactions on the Fordefi platform.
A transaction represents an operation that can be one of the following:
- An on-chain action that modifies blockchain state
- An off-chain cryptographically signed message or data
Batch Transactions
These endpoints allow you to manage batch transactions on the Fordefi platform.
Batch transactions are currently supported only on Solana, for the purpose of supporting the signAllTransactions
flow used by certain Solana DApps. Batch transactions undergo policy evaluation as a whole: the policy is applied to a “virtual transaction” whose list of instructions is the union of the instructions of the individual transactions in the batch, and whose balance changes are the aggregation of balance changes of the individual transactions.
Signature of the body. Base64 encoded string. If the request is made programatically by an API user, signing of the request is required and is intended to protect you from malicious backends.
Timestamp of the signature. Integer. Specify an Epoch date. If the request is made programatically by an API user, the timestamp of the request is required and is intended to protect you from replay attacks.
The signer of the transaction. Can be:
initiator
: The creator of the transaction (default).api_signer
: A service that you run on your own network or cloud environment.end_user
: A mobile device using Fordefi's SDK.
The sign mode of the transaction determines when the transaction will transition to the signing phase. It can be one of the following:
auto
: The transaction will move to signing automatically after approval.triggered
: The transaction will be in thewaiting_for_signing_trigger
state until "Trigger Transaction Signing" is called. Currently supported only for API Signer signer type.
- Production
https://api.fordefi.com/api/v1/batch-transactions
- curl
- Python
- JavaScript
- Go
- C#
- Payload
curl -i -X POST \
https://api.fordefi.com/api/v1/batch-transactions \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"vault_id": "432b199b-1f71-42bf-ba0b-33d512afa9de",
"note": "string",
"signer_type": "initiator",
"sign_mode": "auto",
"dapp_info": {
"url": "string",
"name": "string"
},
"type": "solana_transaction",
"details": {
"fee": {
"type": "custom",
"priority_fee": "1000000000000000000",
"unit_price": "1000000000000000000"
},
"type": "solana_raw_transaction",
"fail_on_prediction_failure": true,
"push_mode": "auto",
"skip_prediction": false,
"chain": "solana_mainnet",
"transactions": [
{
"version": "legacy",
"instructions": [
{
"program_index": 0,
"data": "SGVsbG8=",
"account_indexes": [
0
]
}
],
"accounts": [
{
"address": "4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YypT7avPYvA",
"writable": true,
"signer": true,
"ephemeral_key": "lnNyP8kFPEaVpvUo/SIlhdZlzhPU8r7yT/h0gG5ajzQ="
}
],
"address_table_lookups": [
{
"account_key": "4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YypT7avPYvA",
"writable_indexes": [
0
],
"readonly_indexes": [
0
]
}
],
"signatures": [
{
"data": "SGVsbG8="
}
],
"recent_blockhash": "4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZAMdL4VZHirAn"
}
]
}
}'
{ "batch_id": "4da22c97-b7d5-4e31-8c3a-03870ebc7b20", "transactions": [ { … } ] }
- Production
https://api.fordefi.com/api/v1/batch-transactions/predict
- curl
- Python
- JavaScript
- Go
- C#
- Payload
curl -i -X POST \
https://api.fordefi.com/api/v1/batch-transactions/predict \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"should_run_policy_check": true,
"vault_id": "432b199b-1f71-42bf-ba0b-33d512afa9de",
"note": "string",
"type": "solana_transaction",
"details": {
"fee": {
"type": "custom",
"priority_fee": "1000000000000000000",
"unit_price": "1000000000000000000"
},
"type": "solana_raw_transaction",
"fail_on_prediction_failure": true,
"skip_simulation": false,
"chain": "solana_mainnet",
"transactions": [
{
"version": "legacy",
"instructions": [
{
"program_index": 0,
"data": "SGVsbG8=",
"account_indexes": [
0
]
}
],
"accounts": [
{
"address": "4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YypT7avPYvA",
"writable": true,
"signer": true,
"ephemeral_key": "lnNyP8kFPEaVpvUo/SIlhdZlzhPU8r7yT/h0gG5ajzQ="
}
],
"address_table_lookups": [
{
"account_key": "4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YypT7avPYvA",
"writable_indexes": [
0
],
"readonly_indexes": [
0
]
}
],
"signatures": [
{
"data": "SGVsbG8="
}
],
"recent_blockhash": "4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZAMdL4VZHirAn"
}
]
}
}'
{ "policy_match": { "is_default": true, "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60", "rule_name": "string", "action_type": "allow" }, "matched_policies": [ { … } ], "approval_request": { "state": "created", "required_groups": 0, "approval_groups": [ … ], "error_message": "string" }, "risks": [ { … } ], "note": "string", "aml_policy_match": { "is_default": true, "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60", "rule_name": "string", "action_type": "allow" }, "aml_results": { "scan_status": "error", "error_message": "string", "scan_results": { … } }, "type": "solana_transaction", "expected_result": { "reversion": { … }, "transaction_error": "string", "enriched_fee": { … }, "effects": { … }, "instruction_error": { … } }, "chain": { "chain_type": "solana", "unique_id": "solana_mainnet", "name": "string", "native_currency_symbol": "ETH", "native_currency_name": "Ether", "blockchain_explorer": { … }, "logo_url": "http://example.com", "is_testnet": true, "is_enabled": true }, "simulation_status_result": { "simulation_status": "success", "details": "string" }, "solana_transaction_type_details": { "type": "native_transfer", "sender": { … }, "recipient": { … }, "is_internal": true }, "sender": { "vault": { … }, "explorer_url": "http://example.com", "contact": { … }, "type": "solana", "address": "4fYNw3dojWmQ4dXtSGE9epjRGy9pFSx62YypT7avPYvA", "contract": { … } }, "suggested_fees": { "type": "solana", "chain_unique_id": "solana_mainnet", "base_fee": "1000000000000000000", "low": "1000000000000000000", "medium": "1000000000000000000", "high": "1000000000000000000", "fee_type": "priority_fee", "unit_prices": { … } }, "instructions": [ { … } ], "raw_transaction": "SGVsbG8=", "was_fee_set_in_request": true }
- Production
https://api.fordefi.com/api/v1/batch-transactions/{batch_id}/abort
- curl
- Python
- JavaScript
- Go
- C#
- Payload
curl -i -X POST \
'https://api.fordefi.com/api/v1/batch-transactions/{batch_id}/abort' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'
- Production
https://api.fordefi.com/api/v1/batch-transactions/{batch_id}/approve
- curl
- Python
- JavaScript
- Go
- C#
- Payload
curl -i -X POST \
'https://api.fordefi.com/api/v1/batch-transactions/{batch_id}/approve' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'
Vaults
These endpoints allow you to manage vaults.
A vault is the basic unit to manage funds. Each vault supports a single "chain family", such as EVM, Bitcoin, Solana, Cosmos, etc., determined by the vault's type. A vault supports all the chains within the chain family (e.g., an EVM vault supports all EVM chains).
Vault Groups
These endpoints allow you to view your vault groups.
Vault Groups are used to collectively manage policies and view permissions for a group of vaults.
The API is read-only. To manage vault groups, visit the Fordefi web console. See more info in the user guide.
Assets
These endpoints allow you to get information about the assets in your organization, including metadata, balances, and prices.
Fordefi supports native assets and fungible tokens on each of the supported blockchains, and on many chains also non-fungible tokens.
Assets are chain-specific, meaning that USDC on Ethereum is different from USDC on Polygon.
User Groups
These endpoints allow you to view your user groups.
User Groups are used to collectively manage policies and view permissions for a group of users.
The API is read-only. To manage user groups, visit the Fordefi web console. See more info in the user guide.