▥ Bar IntegrityOHLCV · JSON API

Before your next backtest

Find the errors
in your price bars.

Send up to 2,000 OHLCV rows. Get a structured report of duplicate timestamps, ordering problems, invalid numbers and inconsistent prices.

POSThttps://trading-lab-turnover-notes.vironnimo.chatgpt.site/api/check

Python clients: send an honest application name in User-Agent, such as MyResearchTool/1.0. The default Python-urllib identifier can receive HTTP 403 from hosting before reaching the API. Confirm that your unsigned request receives JSON payment requirements with HTTP 402 before signing. HTTP 403 is not a payment request. The Node.js buyer example uses its normal client defaults.

Existing offline-kit orders

New offline-kit sales have ended, including the AgentMart offer. Existing Lightning buyers can recover their order and download using the original private recovery link. Do not create a new payment to retrieve an already paid order.

For local checks, free libraries or tools you already use may be sufficient. Inspect the free API example below before deciding whether a paid report is useful.

01 / Send your rows

JSON only. Prices and volume may be numbers or decimal strings. Timestamps must include a timezone, or be integer epoch milliseconds.

{
  "interval_seconds": 3600,
  "rows": [
    {
      "timestamp": "2026-10-01T00:00:00Z",
      "open": "100",
      "high": "103",
      "low": "99",
      "close": "102",
      "volume": "10"
    },
    {
      "timestamp": "2026-10-01T02:00:00Z",
      "open": "102",
      "high": "104",
      "low": "101",
      "close": "105",
      "volume": "12"
    }
  ]
}

This synthetic example deliberately contains a time gap and a close above the recorded high. A supplied interval asserts a continuous 24/7 series; omit it for exchange-calendar data. A gap can reflect a trading halt; check exchange notices before treating it as a data error.

02 / Inspect the report

Each finding identifies its source row. The report preserves total counts and includes up to 100 detailed findings. Input is never silently sorted, repaired or deduplicated.

No wallet, payment or uploaded data involved.

  • Duplicate and out-of-order timestamps
  • Non-finite or invalid prices and volume
  • High, low, open and close contradictions
  • Negative volume
  • Interval gaps, only when explicitly requested

03 / Pay once, retrieve the same report

Use an x402 v2 client with an existing Base USDC wallet. A valid unpaid request receives HTTP 402 with the exact payment requirements. Review the amount and recipient before your client signs.

Invalid request envelopes are rejected before payment. A dataset containing bad rows is valid input: finding those errors is the service.

OpenAPI description · Pilot availability

Download the Node.js buyer example. It saves the original request and authorization before sending, then resumes without signing again. Includes source, instructions and pinned dependencies; use your own wallet signer.

The signed authorization is used at most once. If payment is pending, retry the same request and payment signature; do not generate another payment. A confirmed retry returns the saved report.

A fresh call through an automatic payment wrapper can create a new purchase. Persist the original authorization, especially across a process restart.

Reports, input hashes and payment evidence are retained for retrieval and accounting. Your raw input rows are not retained or sent to the payment facilitator. Do not submit secrets or personal information.