SettleMint
Developer guidesAPI integration

Exchange rates

Reference for the current DALP exchange rates API, including list, supported currencies, current pair reads, history queries, collection filters, pagination, and response envelopes.

The exchange rates API exposes fiat currency pairs that DALP can use for pricing, valuation, and reconciliation workflows. New integrations should call the current routes under /api/v2, which return DALP response envelopes and use the shared collection query format for lists.

The routes cover reads only. Feed setup, feed governance, and legal valuation policy remain outside this API contract.

Endpoints

JobMethod and pathUse it forResponse shape
List exchange ratesGET /api/v2/exchange-ratesDiscover available base and quote pairs, latest observations, and feed links.Collection envelope with data, meta, and links.
Read the current pair rateGET /api/v2/exchange-rates/{baseCurrency}/{quoteCurrency}Read the latest observed rate for one currency pair.Single-resource envelope with data and links.self.
Read historical pair ratesGET /api/v2/exchange-rates/{baseCurrency}/{quoteCurrency}/historyInspect observations for one pair with collection filters and pagination.Collection envelope with data, meta, and links.
List supported currenciesGET /api/v2/exchange-rates/supported-currenciesBuild currency pickers from the codes the configured exchange-rate source currently supports.Single-resource envelope with data and links.self.

Exchange rate routes use ISO 4217 alpha-3 currency codes. Use uppercase codes such as EUR and USD in path parameters and filters.

List available rates

Call the list endpoint before asking for a specific conversion path. It returns the available pair records after DALP deduplicates the active feed rows for each pair.

curl --globoff "https://your-platform.example.com/api/v2/exchange-rates?filter[baseCurrency]=EUR&filter[quoteCurrency]=USD&page[limit]=50&page[offset]=0&sort=-effectiveAt" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"

The response uses the collection envelope:

{
  "data": [
    {
      "baseCurrency": "EUR",
      "quoteCurrency": "USD",
      "rate": 1.08,
      "effectiveAt": "2026-03-22T10:30:00.000Z",
      "updatedAt": "2026-03-22T10:31:00.000Z",
      "feedAddress": "0xabcdef1234567890abcdef1234567890abcdef12"
    }
  ],
  "meta": {
    "total": 1,
    "facets": {
      "baseCurrency": [{ "value": "EUR", "count": 1 }],
      "quoteCurrency": [{ "value": "USD", "count": 1 }]
    }
  },
  "links": {
    "self": "/v2/exchange-rates?filter[baseCurrency]=EUR&filter[quoteCurrency]=USD&page[limit]=50&page[offset]=0&sort=-effectiveAt",
    "first": "/v2/exchange-rates?filter[baseCurrency]=EUR&filter[quoteCurrency]=USD&page[limit]=50&page[offset]=0&sort=-effectiveAt",
    "next": null,
    "prev": null,
    "last": "/v2/exchange-rates?filter[baseCurrency]=EUR&filter[quoteCurrency]=USD&page[limit]=50&page[offset]=0&sort=-effectiveAt"
  }
}

rate, effectiveAt, updatedAt, and feedAddress can be null when a listed pair exists but has no usable observation yet. Treat a listed pair as discoverable, not automatically fresh enough for a valuation workflow.

Read one current rate

Call the pair read endpoint when the integration already knows the pair it needs. DALP returns 404 with EXCHANGE_RATE_NOT_FOUND when no current rate exists for the requested pair. The current endpoint does not return null for a missing current-rate read.

curl "https://your-platform.example.com/api/v2/exchange-rates/EUR/USD" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"

A current-rate response returns one data object and a self link:

{
  "data": {
    "baseCurrency": "EUR",
    "quoteCurrency": "USD",
    "rate": 1.08,
    "effectiveAt": "2026-03-22T10:30:00.000Z"
  },
  "links": {
    "self": "/v2/exchange-rates/EUR/USD"
  }
}

If baseCurrency and quoteCurrency are the same code, DALP returns an identity rate of 1.

Read historical rates

Call the history endpoint when you need a time-bounded record of observations for reconciliation, reporting, or a valuation review.

curl --globoff "https://your-platform.example.com/api/v2/exchange-rates/EUR/USD/history?filter[effectiveAt][gte]=2026-03-01T00:00:00.000Z&filter[effectiveAt][lte]=2026-03-31T23:59:59.999Z&page[limit]=100&sort=-effectiveAt" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"

The history response uses the same collection envelope as the list endpoint:

{
  "data": [
    {
      "baseCurrency": "EUR",
      "quoteCurrency": "USD",
      "rate": "1.08",
      "effectiveAt": "2026-03-22T10:30:00.000Z"
    }
  ],
  "meta": {
    "total": 1,
    "facets": {}
  },
  "links": {
    "self": "/v2/exchange-rates/EUR/USD/history?filter[effectiveAt][gte]=2026-03-01T00:00:00.000Z&filter[effectiveAt][lte]=2026-03-31T23:59:59.999Z&page[limit]=100&sort=-effectiveAt",
    "first": "/v2/exchange-rates/EUR/USD/history?filter[effectiveAt][gte]=2026-03-01T00:00:00.000Z&filter[effectiveAt][lte]=2026-03-31T23:59:59.999Z&page[limit]=100&page[offset]=0&sort=-effectiveAt",
    "next": null,
    "prev": null,
    "last": "/v2/exchange-rates/EUR/USD/history?filter[effectiveAt][gte]=2026-03-01T00:00:00.000Z&filter[effectiveAt][lte]=2026-03-31T23:59:59.999Z&page[limit]=100&page[offset]=0&sort=-effectiveAt"
  }
}

Historical rate values are decimal strings. Use decimal arithmetic instead of converting them through binary floating-point numbers in financial workflows.

List supported currencies

Call the supported-currencies endpoint before rendering a target-currency picker. It returns the ISO 4217 alpha-3 codes currently present in the exchange-rate source snapshot.

curl "https://your-platform.example.com/api/v2/exchange-rates/supported-currencies" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"
{
  "data": {
    "providerKey": "open-er-api",
    "currencies": ["AED", "EUR", "USD"]
  },
  "links": {
    "self": "/v2/exchange-rates/supported-currencies"
  }
}

providerKey identifies the configured exchange-rate source snapshot. Treat currencies as the allowed picker set for the next exchange-rate refresh cycle.

Parameters and fields

FieldLocationTypeNotes
baseCurrencyPath or filterISO 4217 fiat codeCurrency the rate converts from. The list endpoint supports filter[baseCurrency]=EUR.
quoteCurrencyPath or filterISO 4217 fiat codeCurrency the rate converts to. The list endpoint supports filter[quoteCurrency]=USD.
filter[q]QuerystringFree-text search across base and quote currency codes on the list endpoint.
filter[rate]Querynumber filterFilter list or history rows by rate. Use operators such as filter[rate][gte]=1.
filter[effectiveAt]Querytimestamp filterFilter list or history rows by observation timestamp. Use ISO 8601 UTC timestamps.
filter[updatedAt]Querytimestamp filterFilter list rows by last update timestamp.
page[limit]QueryintegerPage size for collection responses.
page[offset]QueryintegerOffset for collection responses.
sortQuerystringSort field. Prefix with - for descending order, such as sort=-effectiveAt.
rateResponsenumber, string, or nullList and current reads return numbers; history returns decimal strings; list items may be null.
effectiveAtResponsetimestamp or nullTime when the returned rate became effective. List items may be null before an observation.
updatedAtResponsetimestamp or nullTime when the listed rate record was last updated.
feedAddressResponseEVM address or nullFeed contract address for a listed pair when one is available.
providerKeyResponsestringIdentifier for the supported-currencies snapshot.
currenciesResponseISO 4217 fiat code arrayCurrency codes available from the supported-currencies endpoint.

On this page