LIVE

Check CSV and JSON data before your next import

Flag duplicates and missing fields before they reach your automation.

Lira Data Integrity reports exact duplicate rows, repeated values in identifiers you name, missing values, absent required fields and mixed scalar types in the data you supply.

Three rows. Four findings to review.

Synthetic example, executed locally with the existing credit API v0.1.0. No purchase or production request was made.

What the result shows
  • Row 2 exactly repeats row 1.
  • The identifier A1 occurs in rows 1 and 2.
  • Row 3 is missing a status value.
  • The requested amount field is absent from the dataset.

These are four findings, not four bad rows: the duplicate row also triggers the identifier check. The example leaves the input unchanged.

Synthetic input
[
  {
    "id": "A1",
    "status": "ready"
  },
  {
    "id": "A1",
    "status": "ready"
  },
  {
    "id": "A2"
  }
]
Request body and API key request

Send this JSON body with the request shown below. YOUR_API_KEY is a placeholder for the key delivered after a completed purchase.

POST https://lira-data-integrity-live.cristiand182gomez.workers.dev/audit
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "format": "json",
  "data": [
    {
      "id": "A1",
      "status": "ready"
    },
    {
      "id": "A1",
      "status": "ready"
    },
    {
      "id": "A2"
    }
  ],
  "id_fields": [
    "id"
  ],
  "required_fields": [
    "id",
    "status",
    "amount"
  ]
}
Actual local response body
{
  "version": "0.1.0",
  "input_sha256": "dd329d634e18821eb3795384b780f065947d436eb2b7b3e6feab71e0b77cb572",
  "rows": 3,
  "fields": [
    "id",
    "status"
  ],
  "summary": {
    "missing_values": 1,
    "missing_required_fields": 1,
    "exact_duplicate_rows": 1,
    "duplicate_identifiers": 1
  },
  "finding_count": 4,
  "findings": [
    {
      "type": "MISSING_VALUE",
      "row": 3,
      "field": "status"
    },
    {
      "type": "MISSING_REQUIRED_FIELD",
      "field": "amount"
    },
    {
      "type": "EXACT_DUPLICATE_ROW",
      "row": 2,
      "duplicate_of": 1
    },
    {
      "type": "DUPLICATE_IDENTIFIER",
      "field": "id",
      "value": "A1",
      "rows": [
        1,
        2
      ]
    }
  ],
  "cleaned": null,
  "notes": [
    "No missing value is invented.",
    "Only exact duplicate rows are auto-fixable in v0.1, and only when explicitly requested.",
    "Domain-specific rules require buyer-supplied rules and are not inferred."
  ]
}

This response came from the existing handler in local public-test mode, without authentication or a credit balance. An authenticated Live response also includes access.label and access.credits_remaining.

JSON row numbers start at 1; CSV row numbers start at 2 after the header. Required fields are checked for presence across the dataset; missing cells are reported separately. This basic API does not infer business rules or certify that a dataset is correct.

PayPal credit packages

Prepaid API credits. Starter: USD 5 for 20 audits (USD 0.25 each). Builder: USD 12 for 100 audits (USD 0.12 each).

USD 5.00
Starter

20 audit credits

USD 12.00
Builder

100 audit credits

Use your API credits

  1. Complete PayPal checkout and return in the same browser. The return page waits for payment capture to be recorded and then displays your API key and remaining credits. Approval alone does not issue access.
  2. Store the displayed key securely. Send it as Authorization: Bearer YOUR_API_KEY to POST /audit on this storefront's origin, with Content-Type: application/json.
  3. Supply format as json with an array of objects, or csv with a CSV string. Use id_fields and required_fields to name the fields to check. The example above contains the complete request shape.

A successful authenticated audit consumes one credit per call, including when it reports findings. Credit deduction happens after the body parses and the audit runs. Invalid input, rejected authentication and an exhausted balance do not reach that deduction. Reopening the return page does not replenish used credits.

Limits and scope: maximum request body 2,000,000 bytes, including the JSON wrapper. The credit API has no separate row-count cap in its code; infrastructure limits still apply. It provides basic checks, with no custom rule endpoint or v0.2.1 verification/receipt fields. It does not fill missing values or guarantee detection of every error.

If the return page says capture is still pending, wait and reload that page in the same browser. It needs the checkout session saved there to recover the key.

Need the x402 API instead?

The x402 documentation describes a separate API paid per call in USDC on Base. PayPal API keys and credit balances do not apply there.

Existing payment options and scope
OptionPriceScope
PayPal creditsUSD 5 / 20 or USD 12 / 100Basic v0.1.0 audit; bearer API key; 2,000,000-byte body limit
x402 basicUSDC 0.005 / callv0.2.1 basic audit with verification and digests
x402 rulesUSDC 0.01 / callBasic checks plus supplied uniqueness, allowed-value, numeric-range, regex and date-order rules

Both x402 routes have a 1,000-row and 2,000,000-byte request limit. These are different prices and API versions; credits are not interchangeable with x402 payments.

Terms ยท Privacy