# info.summary
Versioned access to historical cryptocurrency market data and ingestion status.

# info.description
Download hourly Parquet datasets, discover supported symbols, and inspect ingestion health. Stable v1 routes are canonical; unversioned aliases remain available during migration. Breaking changes ship under a new URL major version. Deprecations are announced in documentation and response headers at least 180 days before removal, using Deprecation and Sunset headers plus a Link to migration guidance.

# servers[].description
CryptoHFTData API origin. Every operation below uses an explicit stable /v1 path.

# externalDocs.description
CryptoHFTData developer portal and API policy

# tags[].description
API key to bearer-token exchange for machine clients.

# components.securitySchemes.apiKeyQuery.description
Legacy direct-download authentication. Prefer a bearer token or X-API-Key header.

# components.securitySchemes.bearerAuth.description
Short-lived bearer token minted by the v1 token exchange.

# components.securitySchemes.apiKeyHeader.description
Self-service API key accepted by the token endpoint.

# components.headers.RateLimit.description
Combined IETF rate-limit status: limit, remaining quota, and seconds until reset.

# components.headers.RateLimitPolicy.description
IETF rate-limit policy quota and window in seconds.

# components.headers.RateLimitLimit.description
Maximum requests permitted in the current window.

# components.headers.RateLimitRemaining.description
Requests remaining in the current window.

# components.headers.RateLimitReset.description
Seconds until the current rate-limit window resets.

# components.headers.RetryAfter.description
Seconds to wait before retrying a rate-limited request.

# components.schemas.ApiError.description
Consistent API error envelope. code is stable when the endpoint can identify a machine-actionable failure.

# components.schemas.ProblemDetails.description
RFC 9457 problem details. Legacy error is retained while clients migrate to detail.

# components.schemas.ProblemDetails.properties.code.description
Stable, machine-readable application error code.

# paths./v1/status.get.description
Returns a typed snapshot of exchange and data-family ingestion health for a completed historical hour. This operation requires no authentication.

# paths./v1/status.get.parameters[].description
Completed hours to look back from as_of (default 1).

# paths./v1/status.get.parameters[].description
Minimum objects required for an up status.

# paths./v1/status.get.parameters[].description
Optional UTC reference instant for deterministic checks.

# paths./v1/symbols.get.summary
List stored symbols for an exchange and data family

# paths./v1/symbols.get.description
Lists normalized symbols currently found in the permanent registry or archive for one exchange and optional data type. This operation requires no authentication.

# paths./v1/symbols.get.parameters[].description
Normalized exchange identifier such as binance_spot.

# paths./v1/symbols.get.parameters[].description
Optional data family such as trades or orderbook.

# paths./v1/download.get.description
Streams or redirects to one immutable hourly market-data object. Anonymous requests use the documented free-tier limit; authenticated requests receive higher limits.

# paths./v1/download.get.responses.400.description
The required file path is missing or invalid.

# paths./v1/download.get.responses.503.description
Rate limiter or object storage unavailable.

# paths./v1/jwt-token.post.summary
Exchange an API key for a short-lived bearer token

# paths./v1/jwt-token.post.description
Validates a self-service API key supplied in X-API-Key or api_key and returns a four-hour bearer token for subsequent data requests.