CorebanqCorebanq Developer Docs
FXv2

Get spread rule history

Retrieve the change history for a specific spread rule

GET
/v2/fx/spreads/{id}/history

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

id*string

Query Parameters

action?string

Return only rows with this action. The three the service writes are create, update and delete; delete rows come from the Configurator patch path, since DELETE /v2/fx/spreads/{id} appends no history. An unknown value is not rejected — it filters to nothing and answers 200 with an empty array. Blank or absent returns every row.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v2/fx/spreads/497f6eca-6276-4993-bfeb-53cbbbba6f08/history"
[
  {
    "id": "string",
    "spread_rule_id": "string",
    "fx_tariff_id": "string",
    "provider": "string",
    "base_currency": "string",
    "target_currency": "string",
    "rate_type": "BUY",
    "bid_spread_bps": 0.1,
    "ask_spread_bps": 0.1,
    "effective_from": "2019-08-24T14:15:22Z",
    "effective_to": "2019-08-24T14:15:22Z",
    "active": true,
    "reason": "string",
    "changed_at": "2019-08-24T14:15:22Z",
    "changed_by": "string",
    "action": "create"
  }
]
{
  "status": 409,
  "message": "Spread rule overlaps an existing rule",
  "code": "fx_m.spread_overlap",
  "class": "business",
  "retryable": false,
  "details": [
    {
      "field": "percent_fee",
      "rule": "lte",
      "param": "1",
      "message": "string"
    }
  ]
}
{
  "status": 409,
  "message": "Spread rule overlaps an existing rule",
  "code": "fx_m.spread_overlap",
  "class": "business",
  "retryable": false,
  "details": [
    {
      "field": "percent_fee",
      "rule": "lte",
      "param": "1",
      "message": "string"
    }
  ]
}
{
  "status": 409,
  "message": "Spread rule overlaps an existing rule",
  "code": "fx_m.spread_overlap",
  "class": "business",
  "retryable": false,
  "details": [
    {
      "field": "percent_fee",
      "rule": "lte",
      "param": "1",
      "message": "string"
    }
  ]
}
{
  "status": 429,
  "message": "Rate limit for 203.0.113.7 to GET:/v1/fx/rates exceeded.",
  "code": "rate_limits_m.exceeded",
  "class": "temporary",
  "retryable": true
}
{
  "status": 409,
  "message": "Spread rule overlaps an existing rule",
  "code": "fx_m.spread_overlap",
  "class": "business",
  "retryable": false,
  "details": [
    {
      "field": "percent_fee",
      "rule": "lte",
      "param": "1",
      "message": "string"
    }
  ]
}

{
  "overall_status": "unhealthy",
  "message": "Service is shutting down",
  "timestamp": "2026-08-27T15:04:05Z"
}