> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ratiofx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Indicative Quotes

> Getting reference FX prices before committing

An indicative quote returns a reference price for a currency pair. It does not reserve inventory and has no expiry. Use it to show your users an approximate rate before they decide to execute a transfer.

## When to use

* Display approximate FX rates in your UI
* Let users preview the cost of a transfer before confirming
* Power rate comparison or calculator features
* Run pre-flight checks before requesting a firm quote

## Request

```
GET /v1/quote
```

<ParamField query="pair" type="string" required>
  Currency pair to price. Supported values: `USD-IDR`, `USD-SGD`, `MYR-IDR`.
</ParamField>

<ParamField query="side" type="string" required>
  Trade direction from the base currency perspective. `BUY` or `SELL`.
</ParamField>

<ParamField query="amount" type="number" required>
  Notional amount in the source currency.
</ParamField>

### Example request

<CodeGroup>
  ```bash curl theme={null}
  curl -X GET "https://api.ratiofx.com/v1/quote?pair=USD-IDR&side=BUY&amount=10000" \
    -H "Authorization: Bearer sk_live_abc123..." \
    -H "X-Partner-ID: partner_uuid_xyz"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.ratiofx.com/v1/quote?pair=USD-IDR&side=BUY&amount=10000",
    {
      headers: {
        "Authorization": "Bearer sk_live_abc123...",
        "X-Partner-ID": "partner_uuid_xyz",
      },
    }
  );
  const quote = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      "https://api.ratiofx.com/v1/quote",
      params={"pair": "USD-IDR", "side": "BUY", "amount": 10000},
      headers={
          "Authorization": "Bearer sk_live_abc123...",
          "X-Partner-ID": "partner_uuid_xyz",
      },
  )
  quote = response.json()
  ```
</CodeGroup>

## Response

```json theme={null}
{
  "pair": "USD-IDR",
  "side": "BUY",
  "indicative_rate": 16020.50,
  "mid": 15980.00,
  "spread_bps": 25,
  "timestamp": "2026-02-27T10:00:00Z",
  "quote_type": "INDICATIVE"
}
```

### Response fields

<ResponseField name="pair" type="string">
  Currency pair.
</ResponseField>

<ResponseField name="side" type="string">
  Trade direction.
</ResponseField>

<ResponseField name="indicative_rate" type="number">
  Reference rate. This rate is not executable — it is for display only.
</ResponseField>

<ResponseField name="mid" type="number">
  Oracle mid-market rate.
</ResponseField>

<ResponseField name="spread_bps" type="number">
  Approximate total spread in basis points. The actual spread on a firm quote may differ based on real-time market conditions.
</ResponseField>

<ResponseField name="timestamp" type="string">
  ISO 8601 timestamp of the quote.
</ResponseField>

<ResponseField name="quote_type" type="string">
  Always `INDICATIVE` for this endpoint.
</ResponseField>

## Important notes

<Warning>
  Indicative quotes are not executable. They provide a reference price only. To commit to a trade, you must request a [firm quote](/integration/firm-quotes).
</Warning>

<Note>
  Rates can change between an indicative quote and a subsequent firm quote, especially during volatile markets. Do not surface the indicative rate as a guaranteed price.
</Note>

<Tip>
  Avoid polling this endpoint more frequently than once per second per corridor. Indicative quotes are not rate-limited more aggressively than other endpoints, but excessive polling wastes quota.
</Tip>

## Next step

Once your user is ready to execute, request a firm quote to lock an executable rate.

[Request a firm quote →](/integration/firm-quotes)
