Last updated
Edit

get_aggregate_price

(Requires the PriceOracle amendment)

[Source]

The get_aggregate_price method retrieves the aggregate price of specified Oracle objects, returning three price statistics: mean, median, and trimmed mean.

Request Format

An example of the request format:

{
  "command": "get_aggregate_price",
  "ledger_index": "current",
  "base_asset": "XRP",
  "quote_asset": "USD",
  "trim": 20,
  "oracles": [
    {
      "account": "rp047ow9WcPmnNpVHMQV5A4BF6vaL9Abm6",
      "oracle_document_id": 34
    },
    {
      "account": "rp147ow9WcPmnNpVHMQV5A4BF6vaL9Abm7",
      "oracle_document_id": 56
    },
    {
      "account": "rp247ow9WcPmnNpVHMQV5A4BF6vaL9Abm8",
      "oracle_document_id": 2
    },
    {
      "account": "rp347ow9WcPmnNpVHMQV5A4BF6vaL9Abm9",
      "oracle_document_id": 7
    },
    {
      "account": "rp447ow9WcPmnNpVHMQV5A4BF6vaL9Abm0",
      "oracle_document_id": 109
    }
  ]
}

Try it! >

The request contains the following parameters:

FieldTypeRequired?Description
base_assetStringYesThe currency code of the asset to be priced.
quote_assetStringYesThe currency code of the asset to quote the price of the base asset.
trimNumberNoThe percentage of outliers to trim. Valid trim range is 1-25. If included, the API returns statistics for the trimmed mean.
trim_thresholdNumberNoDefines a time range in seconds for filtering out older price data. Default value is 0, which doesn't filter any data.
oraclesArrayYesAn array of oracle identifier objects. You must list between 1 and 200 oracle identifiers.

Each member of the oracles array is an oracle identifier object with the following fields:

FieldTypeRequired?Description
accountStringYesThe XRPL account that controls the Oracle object.
oracle_document_idNumberYesA unique identifier of the price oracle for the Account

Response Format

An example of the response format:

{
  "result": {
    "entire_set": {
      "mean": "0.78",
      "size": 3,
      "standard_deviation": "0.03464101615137754"
    },
    "ledger_current_index": 3677185,
    "median": "0.8",
    "time": 1724877762,
    "trimmed_set": {
      "mean": "0.78",
      "size": 3,
      "standard_deviation": "0.03464101615137754"
    },
    "validated": false
  },
  "status": "success",
  "type": "response"
}
FieldTypeDescription
entire_setObjectThe statistics from the collected oracle prices.
entire_set.meanString - NumberThe simple mean.
entire_set.sizeNumberThe size of the data set to calculate the mean.
entire_set.standard_deviationString - NumberThe standard deviation.
trimmed_setObjectThe trimmed statistics from the collected oracle prices. Only appears if the trim field was specified in the request.
trimmed_set.meanString - NumberThe simple mean of the trimmed data.
trimmed_set.sizeNumberThe size of the data to calculate the trimmed mean.
trimmed_set.standard_deviationString - NumberThe standard deviation of the trimmed data.
timeNumberThe most recent timestamp out of all LastUpdateTime values, represented in Unix time.
Notes
  • The most recent Oracle objects are obtained for the specified oracles.
  • The most recent LastUpdateTime among all objects is chosen as the upper time threshold.
  • An Oracle object is included in the aggregation dataset if it contains the specified base_asset/quote_asset pair, has an AssetPrice field, and its LastUpdateTime is within the time range specified.
  • If an Oracle object doesn't contain an AssetPrice for the specified token pair, then up to three previous Oracle objects are examined and the most recent one that fulfills the requirements is included.

Possible Errors

  • Any of the universal error types.
  • invalidParams - One or more fields are specified incorrectly, or one or more required fields are missing.
  • internal - The trim_threshold setting removed all prices.
  • objectNotFound - There are no prices in the dataset.
  • oracleMalformed - The oracles array is malformed. At least one object field is specified incorrectly or missing, or the number of objects is outside the bounds of 1 to 200.