Get Effective Fee
Resolves what one entity charges at a given scope, live: the server walks setup → node + network → node → network → default and each level fills only the rates the more specific levels left unset (see Fees Overview). Leaving out an axis skips the levels that need it, which is how you ask what a broader scope resolves to. Because it reads the stored fee rows rather than a deployment, it also answers for scopes with no deployment yet, so you can preview a change before it is pushed. For what a deployed setup's contract actually holds, use Get Setup Effective Fees.
entity1(owner) and2(platform owner) can be resolved only with the platform owner node's API key.setup_idrequiresnode_id, and the setup must belong to that node.- For
entity3with anode_id, the node must be inside your API key's node subtree.
Required permission: fee:view
Request
GET /v2/admin/fees/effective?entity={entity}
Parameters
| Name | Type | In | Description |
|---|---|---|---|
entity | integer | query | Required. 1 owner, 2 platform owner, 3 node |
node_id | string | query | Node to resolve for. Enables the node + network and node levels |
network_id | string | query | Network to resolve for. Enables the node + network and network levels |
setup_id | string | query | Setup to resolve for. Enables the setup level. Requires node_id |
category_id | integer | query | Asset category numeric ID (int_id). When a row has an override for this category, the override is used instead of the row's value |
Headers
| Name | Description |
|---|---|
Authorization | Required. Bearer <access_token> |
Example
curl --request GET \
--url '{{baseUrl}}/v2/admin/fees/effective?entity=3&node_id=6a4bef2b1e781b11c22e9707&network_id=6a4bf0a21e781b11c22e9712' \
--header 'Authorization: Bearer <access_token>'
Response
{
"entity": 3,
"node_id": "6a4bef2b1e781b11c22e9707",
"network_id": "6a4bf0a21e781b11c22e9712",
"value": {
"tokenization": {
"asset_tokenization": { "id": 0, "value": "2.5" },
"tokenized_asset_sales": { "id": 0, "value": "1" },
"management": { "id": 0, "value": "0.5" }
},
"secondary_market": {
"buy_order": { "id": 0, "value": "1" },
"sell_order": { "id": 0, "value": "1" },
"otc_sale": { "id": 0, "value": "1.5" }
},
"lending": {
"borrower": null,
"lending": null,
"liquidation": null
}
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
entity | integer | The entity that was resolved |
node_id | string | Echo of the node_id you sent. Omitted when you sent none |
network_id | string | Echo of the network_id you sent. Omitted when you sent none |
setup_id | string | Echo of the setup_id you sent. Omitted when you sent none |
value | object | The resolved rates, grouped as tokenization, secondary_market and lending |
value.<group>.<leaf> | object or null | null when no level prices this rate |
value.<group>.<leaf>.value | string | Resolved rate in percent |
value.<group>.<leaf>.id | integer | Always 0 in responses; identify a leaf by its key |
Errors
| Status | Code | Description |
|---|---|---|
| 400 | 10015 | Validation failed — see details. Also returned for setup_id without node_id |
| 400 | 10016 | node_id, network_id or setup_id is not a 24-character hex ID |
| 400 | 10001 (domain 2) | Node not found, or the setup does not belong to the node |
| 403 | 10005 (domain 2) | The node is outside your API key's node subtree |
| 403 | 10003 (domain 9) | entity 1 or 2 was requested by a key that is not the platform owner node's |
| 500 | 10000 | Unexpected server error |
See Errors for the error format and common codes.