Skip to main content

Outcome

Run one bounded historical job that stays inside its request, concurrency, credit, retry, and page budgets.

Prerequisites

  • Choose one venue family, symbol, data family, and time window.
  • Read Rate limits and Errors and request IDs for current capacity and retry behavior.
  • Set a worker count, page budget, retry budget, and output path before the first request.
  • Keep the API key in the runtime environment and out of job logs.

Inputs

Steps

1

Run one baseline request

Save the status, row count, request ID, and any meta.next_cursor before adding workers.
2

Set finite workers and pages

Give each worker one family, symbol, window, and cursor chain. Stop when the window is exhausted or the page budget is reached. Do not let the agent or scheduler create an unbounded loop.
3

Apply bounded retries

Retry 429, transient 5xx, and network timeouts only within the retry budget. Honor Retry-After when present; otherwise use capped exponential backoff with jitter and lower concurrency.
4

Widen only after the run is inspectable

Compare returned rows, request IDs, latency, retries, and quality state with the input record. Increase symbols or workers only after this run has a clear stop state.

Expected state

Every request has a recorded status and request identifier. The run ends as complete, partial, or stopped with a reason. A remaining cursor, exhausted retry budget, or quality failure is visible in the output rather than hidden by a retry loop.

Verification

Treat a 403 as an exact endpoint/account/key response. Inspect the endpoint contract and verify the account/key response before changing the route or retrying. Capacity limits affect request rate, concurrency, credits, standard replay’s speed, or export volume; they do not by themselves establish route or dataset availability. Check that the route, numeric window, page size, worker count, retry budget, and stop rule are written beside the output. Keep request IDs per page, including failed attempts when the client exposes them.

Failure and recovery

  • 400, invalid symbols, or invalid parameters: fix the input before another call.
  • 401: repair the key source or X-API-Key header.
  • 403: inspect the exact endpoint/account/key response and stop unchanged retries.
  • 429: honor Retry-After when present, otherwise back off with jitter and lower concurrency.
  • 5xx or timeout: retry within budget, then check Data quality and stop if the budget is exhausted.
  • Page budget reached with a cursor remaining: mark the output partial and resume from the saved cursor under a new bounded run.

Saved run metadata

The zero UUID is a shape placeholder only. Replace it with the UUID returned by each response or client wrapper.

Next task

Use Historical market data for cursor handling, Reliability and data gaps for partial output policy, or Rate limits for current account capacity.
Last modified on August 28, 2026