GVAULT_ID to the id selected from GET /v2/gvaults/yield-sources:
Provision a wrapper
Select agVaultId from the gtoken catalogue and generate a UUID v4:
performanceFeeBps is the share of gains above the high-water mark paid to the
fee recipient. 2000 is 20%. The initial rate is also the wrapper’s permanent
maximum; creating it with zero prevents enabling a performance fee later.
Use the same requestId when retrying the same logical request. Reusing it with
different parameters returns 409 request_id_conflict.
To charge an annual management fee, include "managementFeeBps": 10 in the
create request for 0.10% annually. The optional rate defaults to zero and accepts
integers from 0 through 100. Ground sets the cap to 100 bps (1.00%); do not pass
maxManagementFeeBps. Both fee types use feeRecipientAddress.
GET and list responses include managementFeeBps and read-only
maxManagementFeeBps. Older wrappers retain their original deployed caps.
Provisioning statuses
Wait for readiness
The create call returns202 while provisioning is in progress. Poll the
resource:
Set FEE_WRAPPER_ID to the id returned by the create response:
status is ready. At that point,
persist both id for API calls and contractAddress for onchain calls.
Ground has also authorized the wrapper against its underlying vault.
If your original response was lost, recover by provisioning request:
Update the fee configuration
Update the annual management rate with a separate request containing onlymanagementFeeBps, for example {"managementFeeBps": 20}. The rate must be an
integer from 0 through maxManagementFeeBps (at most 100). Zero disables management
fees; they can be re-enabled within the original cap. Legacy wrappers with a
zero cap cannot enable management fees. The cap is immutable and is not accepted
as input.
Performance-rate updates remain available while management fees are enabled,
but recipient changes return 409 operation_not_supported. Send management
updates separately from performance or recipient updates; combined requests
return 400 validation_error. Each changed request submits one transaction.
The confirmed rate appears in GET/list and fee_wrapper.fees.status_changed.
Failed updates do not change stored fees; their webhook includes the requested rate.
maxPerformanceFeeBps.
API reference:
provision,
list,
get, and
update fees.