---
title: "A whole window of OHLCV as one CSV or JSONL file, behind a short lived signed link (synchronous)"
method: GET
path: "/v1/candles/export"
---

# A whole window of OHLCV as one CSV or JSONL file, behind a short lived signed link (synchronous)

`GET /v1/candles/export`

## Request

- Base URL: `https://app.texttoquant.com/api`
- URL: `https://app.texttoquant.com/api/v1/candles/export`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

The bulk path: /v1/candles and get_candles are for inspection. The answer carries the link (url, expires_at), the row count, the file sha256 and candles_sha256, the hash a server lab run records as window_sha256 for the same market and dates. The whole export runs inside this request; for long or cold windows use POST /v1/candles/export, which runs it as a background job. A closed window (its end day before today UTC and its last bar closed) that was exported before is served from the stored file without loading bars (`reused: true`).

## Query parameters

- `symbol` string, required
- `timeframe` string, required
- `start` string, date, required
- `end` string, date, required
- `format` 'csv' | 'jsonl'

## Response `200`

Success

- object
  - `success` true, required
  - `data` object, required

## Other responses

- `400`: invalid_request: a missing or malformed parameter | symbol_ambiguous: the ticker names both a coin and a stock | symbol_unresolved: not a listed ticker, crypto pair or known company name; the message suggests the listing or how to write it (NASDAQ:AAPL, a USDT pair), do not retry unchanged
- `403`: Plan does not include marketData
- `404`: symbol_not_found: no feed has that ticker; check it with GET /v1/markets, do not retry | no_candles: no data for that symbol and timeframe in the window
- `413`: export_too_large: the window holds more bars than one export allows (the message gives the computed count and the limit); split it
- `429`: rate_limited: too many exports this minute (the message says how many seconds) | market_data_busy: the market data provider is busy
- `502`: market_data_unavailable: the market data provider failed; retry later
- `503`: export_storage_unavailable: file storage is not configured or failed

---

[API](https://skmtc.dev/texttoquant/apis/texttoquant-api.md) · [All operations](https://skmtc.dev/texttoquant/apis/texttoquant-api/llms.txt) · [OpenAPI document](https://skmtc.dev/texttoquant/apis/texttoquant-api/revisions/d417fc3f4a7d?raw)
