Skip to main content
API contract changes are listed newest first. Breaking entries include the fields and client updates required to migrate.

July 21, 2026

JAAA USDT available in production

Production now returns ground-jaaa-usdt-vault from GET /v2/wallets/yield-sources. Put this source under strategy.allocations.usdt; continue using ground-jaaa-usdc-vault under strategy.allocations.usdc for the USDC-funded lane. This availability update does not change the response schema or introduce new identifiers. The JAAA-USDT metadata now correctly describes its AAA-rated collateralized loan obligation exposure.

July 20, 2026

Stablecoin-explicit JAAA yield source IDs

Breaking change The existing USDC-funded JAAA source moved from ground-jaaa-vault to ground-jaaa-usdc-vault. Update stored strategy templates and API clients to use the stablecoin-explicit USDC ID. Sandbox also exposes ground-jaaa-usdt-vault for the USDT-funded JAAA lane. Place it under strategy.allocations.usdt only when it is present in the live environment-specific response from GET /v2/wallets/yield-sources. Production clients must not assume the USDT row is available until the production catalog returns it. Historical completed JAAA-USDC transactions retain their economics and remain readable after the identity migration.

July 17, 2026

Canonical list responses and webhook event casing

Breaking change
Update clients that read the removed response aliases before calling the affected endpoints after this release.
We completed the response-pattern migration introduced on July 9. The following endpoints now return list items only under data and pagination only through nextCursor:
  • GET /v2/wallets/yield-sources
  • GET /v2/activity
  • GET /v2/webhooks
  • GET /v2/webhooks/events
  • GET /v2/webhooks/{id}/events

List envelope migration

All affected list responses now use this shape:
When nextCursor is non-null, pass it as the next request’s cursor query parameter. A null value means there are no more pages.

Webhook event field migration

Webhook event feed items and their nested latestEmission object now use camelCase exclusively. Update clients to read:
  • registrationId, eventType, attemptCount, deliveredAt, lastError, createdAt, and updatedAt on each event;
  • eventId, attemptNumber, requestedAt, completedAt, responseStatus, responseMs, and errorMessage from latestEmission.
The equivalent snake_case fields are no longer returned.

Required client changes

  1. Read every affected list from response.data.
  2. Replace response.hasMore checks with response.nextCursor !== null.
  3. Replace snake_case webhook event and delivery-attempt field access with the camelCase names above.