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
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 a403 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 orX-API-Keyheader.403: inspect the exact endpoint/account/key response and stop unchanged retries.429: honorRetry-Afterwhen present, otherwise back off with jitter and lower concurrency.5xxor 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.