API Update: Modifications to the CSA endpoint

API Update: Modifications to the CSA endpoint - featured image

As part of ongoing product enhancements, we are announcing an update to the GET /api/v1/user/csa endpoint. The endpoint will be updated to return all active CSA loans held against an account, replacing the previous single-entry response.

Effective Date and Time: 11 June 2026, 06:00 UTC

What is Changing?

The GET /api/v1/user/csa endpoint previously returned a single object or `204 No Content`. It will now always return a `200 OK` status with a wrapper object containing an array.

Please refer to the example API response changes below:

Before

{   "csaID": "4e0ff949-7b31-1a85-a41c-6461d7d8197d",   "currency": "USDT",   "csaStatus": "New",   ... }

After

{   "csas": [     {       "csaID": "4e0ff949-7b31-1a85-a41c-6461d7d8197d",       "currency": "USDT",       "csaStatus": "New",       ...     },     {       "csaID": "d2877e04-7004-d1b7-4e28-41f798ed5961",       "currency": "XBt",       "csaStatus": "New",       ...     }   ] }

Empty Response Behavior

When no active CSAs exist for an account, the endpoint will return `200 OK` with an empty array rather than `204 No Content`:

{ "csas": [] }

Multiple CSAs per account

If an account holds more than one active CSA loan (one per collateral currency), the endpoint will now return all of them.

CSA Loan Status Values

The csaStatus field will now reflect the full loan lifecycle. Canceled and Rejected loans are excluded from the response. All other fields (csaID, account, currency, amount, mmRatioMarginCall, maintMarginRatio, etc.) remain unchanged.

Possible values include:

Value

Meaning

 

New

Loan is active

PendingNew

Loan activation in progress

MarginCall

Account is in margin call

Liquidated

Loan has been liquidated

Replaced

Loan was amended, superseded by a new entry

PendingCancellation

Cancellation in progress

Action Required

Clients consuming the GET /api/v1/user/csa endpoint should:

  • Read `response.csas` as an array rather than the response root directly

  • Handle `200` with `csas: []` instead of `204`

  • If holding a single-currency CSA, read `csas[0]` for equivalent behaviour

  • If holding multiple CSAs,  iterate over all entries