ripple_path_find
The ripple_path_find
method is a simplified version of the path_find method that provides a single response with a payment path you can use right away. It is available in both the WebSocket and JSON-RPC APIs. However, the results tend to become outdated as time passes. Instead of making multiple calls to stay updated, you should instead use the path_find method to subscribe to continued updates where possible.
Although the rippled
server tries to find the cheapest path or combination of paths for making a payment, it is not guaranteed that the paths returned by this method are, in fact, the best paths.
Request Format
An example of the request format:
{ "id": 8, "command": "ripple_path_find", "source_account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59", "source_currencies": [ { "currency": "XRP" }, { "currency": "USD" } ], "destination_account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59", "destination_amount": { "value": "0.001", "currency": "USD", "issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B" } }
The request includes the following parameters:
Field | Type | Description |
---|---|---|
source_account | String | Unique address of the account that would send funds in a transaction |
destination_account | String | Unique address of the account that would receive funds in a transaction |
destination_amount | String or Object | Currency Amount that the destination account would receive in a transaction. Special case: You can specify "-1" (for XRP) or provide -1 as the contents of the value field (for non-XRP currencies). This requests a path to deliver as much as possible, while spending no more than the amount specified in send_max (if provided). |
send_max | String or Object | (Optional) Currency Amount that would be spent in the transaction. Cannot be used with source_currencies . |
source_currencies | Array | (Optional) Array of currencies that the source account might want to spend. Each entry in the array should be a JSON object with a mandatory currency field and optional issuer field, like how currency amounts are specified. Cannot contain more than 18 source currencies. By default, uses all source currencies available up to a maximum of 88 different currency/issuer pairs. |
ledger_hash | String | (Optional) A 20-byte hex string for the ledger version to use. (See Specifying Ledgers) |
ledger_index | String or Unsigned Integer | (Optional) The ledger index of the ledger to use, or a shortcut string to choose a ledger automatically. (See Specifying Ledgers) |
Response Format
An example of a successful response:
{ "id": 8, "status": "success", "type": "response", "result": { "alternatives": [ { "paths_canonical": [], "paths_computed": [ [ { "currency": "USD", "issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "type": 48, "type_hex": "0000000000000030" }, { "account": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "type": 1, "type_hex": "0000000000000001" } ], [ { "currency": "USD", "issuer": "rrpNnNLKrartuEqfJGpqyDwPj1AFPg9vn1", "type": 48, "type_hex": "0000000000000030" }, { "account": "rrpNnNLKrartuEqfJGpqyDwPj1AFPg9vn1", "type": 1, "type_hex": "0000000000000001" }, { "account": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "type": 1, "type_hex": "0000000000000001" } ], [ { "currency": "USD", "issuer": "rrpNnNLKrartuEqfJGpqyDwPj1AFPg9vn1", "type": 48, "type_hex": "0000000000000030" }, { "account": "rrpNnNLKrartuEqfJGpqyDwPj1AFPg9vn1", "type": 1, "type_hex": "0000000000000001" }, { "account": "rLpq4LgabRfm1xEX5dpWfJovYBH6g7z99q", "type": 1, "type_hex": "0000000000000001" }, { "account": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "type": 1, "type_hex": "0000000000000001" } ], [ { "currency": "USD", "issuer": "rrpNnNLKrartuEqfJGpqyDwPj1AFPg9vn1", "type": 48, "type_hex": "0000000000000030" }, { "account": "rrpNnNLKrartuEqfJGpqyDwPj1AFPg9vn1", "type": 1, "type_hex": "0000000000000001" }, { "account": "rPuBoajMjFoDjweJBrtZEBwUMkyruxpwwV", "type": 1, "type_hex": "0000000000000001" }, { "account": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "type": 1, "type_hex": "0000000000000001" } ] ], "source_amount": "256987" } ], "destination_account": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59", "destination_currencies": [ "015841551A748AD2C1F76FF6ECB0CCCD00000000", "JOE", "DYM", "EUR", "CNY", "MXN", "BTC", "USD", "XRP" ] } }
The response follows the standard format, with a successful result containing the following fields:
Field | Type | Description |
---|---|---|
alternatives | Array | Array of objects with possible paths to take, as described below. If empty, then there are no paths connecting the source and destination accounts. |
destination_account | String | Unique address of the account that would receive a payment transaction |
destination_currencies | Array | Array of strings representing the currencies that the destination accepts, as 3-letter codes like "USD" or as 40-character hex like "015841551A748AD2C1F76FF6ECB0CCCD00000000" |
Each element in the alternatives
array is an object that represents a path from one possible source currency (held by the initiating account) to the destination account and currency. This object has the following fields:
Field | Type | Description |
---|---|---|
paths_computed | Array | Array of arrays of objects defining payment paths |
source_amount | String or Object | Currency Amount that the source would have to send along this path for the destination to receive the desired amount |
The following fields are deprecated, and may be omitted: paths_canonical
, and paths_expanded
. If they appear, you should disregard them.
Possible Errors
- Any of the universal error types.
tooBusy
- The server is under too much load to calculate paths. Not returned if you are connected as an admin.invalidParams
- One or more fields are specified incorrectly, or one or more required fields are missing.srcActMissing
- Thesource_account
field is omitted from the request.srcActMalformed
- Thesource_account
field in the request is not formatted properly.dstActMissing
- Thedestination_account
field is omitted from the request.dstActMalformed
- Thedestination_account
field in the request is not formatted properly.srcCurMalformed
- Thesource_currencies
field is not formatted properly.srcIsrMalformed
- Theissuer
field of one or more of the currency objects in the request is not valid.