ForceX

Chain

List Blocks

Contiguous block-header listing by height range.

Page Sections

GET

/chain/blocks

Full URL: https://forcex.com/xtract/v1/litecoin/chain/blocks

Credit cost: 1 credit.

curl -H "Authorization: Bearer fx_test_************" \
  "https://forcex.com/xtract/v1/litecoin/chain/blocks?start_height=3118700&end_height=3118724&limit=25"

Parameters

NameLocationRequiredTypeDescription
start_heightqueryyesinteger (min 0)Inclusive lower bound on block height.
end_heightqueryyesinteger (min 0)Inclusive upper bound on block height. Must be greater than or equal to start_height and not exceed the validated chain height.
limitquerynointeger (min 1, max 100), default `25`Maximum block headers to return for this request. Defaults to 25 and caps at 100; test-tier keys are further clamped to the test-key page-size cap and surface the requested value under pagination.requested_limit.

Request Body

No request body.

Example Response

Representative trimmed response. Use the OpenAPI schema for the exhaustive field contract.

{
  "data": [
    {
      "height": 3118700,
      "hash": "0000000000004d9af954ee6d9e1496bcb6e3945d4bfb78aada77758c17ee54be",
      "block_time": "2026-06-03T16:48:12Z",
      "tx_count": 214
    }
  ],
  "meta": {
    "served_from": "indexed_store",
    "validation": {
      "scope": "chain",
      "status": "validated",
      "validated_height": 3118767
    },
    "credit_cost": 1
  }
}

Documented Responses

StatusDescription
200Successful Response
400Bad request. The `error.code` field identifies the specific cause: `bad_request` (general validation failure, including malformed dates, out-of-order ranges, and request-body validation), `range_too_large` (date range exceeds the per-grain cap), `ambiguous_time_range` (legacy `from`/`to` and new `start`/`end` supplied with differing values), or `invalid_include` (unsupported expansion in `?include=`).
401Authentication required, or the supplied Bearer token is invalid or revoked. `error.code` = `auth_required`.
402Payment-tier gate. `error.code` identifies which gate fired: `subscription_required` (no active subscription on the account), `subscription_inactive` (subscription exists but is not active), `include_all_requires_paid_tier` (sandbox keys cannot request `?include=all`), `include_set_requires_paid_tier` (the requested include set exceeds the per-request cost cap for sandbox keys), `historical_scan_requires_paid_tier` (sandbox keys cannot scan outside the recent window), or `deep_pagination_requires_paid_tier` (sandbox keys cannot page beyond the depth cap).
403Authenticated but the key lacks the required scope. `error.code` = `scope_insufficient`.
422Defense-in-depth: the runtime maps standard request-shape validation errors to 400, so partners normally see 400 instead of 422. This status is declared so any edge-case validation path that bypasses the override is still typed.
429Rate limit or credit budget exceeded. `error.code` identifies the window: `rate_limit_exceeded` (per-second or per-minute), `quota_exceeded_daily` (sandbox per-day budget), or `quota_exceeded` (per-subscription-period). The body carries a `window` field (`second`, `minute`, `day`, or `month`) naming the failing limit. Responses include the standard `Retry-After` header.
500Internal server error. `error.code` = `internal_error`. Reference `meta.request_id` when contacting support.
503Service or downstream data store is temporarily unavailable, or the endpoint is not implemented in this API version. `error.code` identifies the cause: `data_unavailable` (chain tip not yet populated), `audit_unavailable` (request completed but audit could not be acknowledged — safe to retry), `plan_misconfigured` (operational issue on the API side; not a tier problem), or `endpoint_not_available` (the route is reserved and not yet served in this version).

Integration Notes

  • `start_height` and `end_height` are inclusive.
  • `end_height` must not exceed the validated chain height.