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

# Get candles

> Get up to 1,000 OHLC candles at a chosen resolution, ending at a given time.

## Path parameters

<ParamField path="ticker" type="string" required>
  Trading symbol, for example XAUUSD, EURUSD, or BTCUSD.
</ParamField>

<ParamField path="resolution" type="integer" required>
  Candle size in seconds, must be a multiple of 60. Common values: 60 (1 min), 3600 (1 H), 86400 (1 D).
</ParamField>

<ParamField path="count" type="integer" required>
  Number of candles to return. Maximum 1000.
</ParamField>

<ParamField path="dt" type="string" required>
  ISO-8601 upper-bound timestamp, for example 2025-06-01T00:00:00.000Z. Use the current datetime to retrieve the most recent candles.
</ParamField>

## Response

`200` Success.

<ResponseField name="data" type="object[]">
  Candles in ascending time order.

  <Expandable title="properties">
    <ResponseField name="time" type="integer">
      Candle close time as Unix seconds.
    </ResponseField>

    <ResponseField name="open" type="number">
      Opening price.
    </ResponseField>

    <ResponseField name="high" type="number">
      Highest price in the period.
    </ResponseField>

    <ResponseField name="low" type="number">
      Lowest price in the period.
    </ResponseField>

    <ResponseField name="close" type="number">
      Closing price.
    </ResponseField>

    <ResponseField name="volume" type="number">
      Trade volume.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="immutable" type="boolean">
  True when the right edge is finalized and safe to cache.
</ResponseField>

<ResponseField name="no_more" type="boolean">
  True when no further historical data exists beyond this range.
</ResponseField>

## Possible Errors

| Error | Possible cause | What to do |
| - | - | - |
| 400 | Invalid or missing field | Check the request against the schema. |
| 401 | Token missing or expired | Log in again or use the refresh token. |
| 403 | IP not whitelisted, or account restricted | Confirm your IP is whitelisted; otherwise contact Amana. |
| 429 / 5xx | Rate limit, or temporary issue on our side | Retry with backoff; contact support if it persists. |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://gateway.amana.io/trading/chart/{ticker}/candles/{resolution}/{count}/{dt}' \
    --header 'Authorization: Bearer <token>'
  ```

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

  url = "https://gateway.amana.io/trading/chart/{ticker}/candles/{resolution}/{count}/{dt}"
  headers = {"Authorization": "Bearer <token>"}

  response = requests.request("GET", url, headers=headers)
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://gateway.amana.io/trading/chart/{ticker}/candles/{resolution}/{count}/{dt}', {
    method: 'GET',
    headers: {"Authorization": "Bearer <token>"},
  });
  console.log(await response.json());
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "time": 123,
        "open": 123.45,
        "high": 123.45,
        "low": 123.45,
        "close": 123.45,
        "volume": 123.45
      }
    ],
    "immutable": true,
    "no_more": true
  }
  ```

  ```json 400 theme={null}
  {
    "error": "<string>",
    "message": "<string>"
  }
  ```

  ```json 401 theme={null}
  {
    "error": "<string>",
    "message": "<string>"
  }
  ```

  ```json 403 theme={null}
  {
    "error": "<string>",
    "message": "<string>"
  }
  ```

  ```json 429 theme={null}
  {
    "error": "<string>",
    "message": "<string>"
  }
  ```

  ```json 500 theme={null}
  {
    "error": "<string>",
    "message": "<string>"
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.