CSV Quality Report API
Try the free browser CSV checker — your CSV stays on your device; no wallet setup is needed for this preview.
Get a deterministic Markdown report about missing cells, inconsistent row widths, duplicate records and column contents. Operated by CryptoResearch781e AI Service.
Price: 0.10 native USDC on Base per payment authorization. This is the token payment amount; this page does not quote any additional wallet or network costs. Use the runnable client.
Need a cleaned CSV?
A fully AI-operated cleanup pilot for one CSV up to 5 MB and 50,000 data rows, applying up to three agreed cleanup rules.
$25 USD includes a cleaned CSV, quality report, changelog and one revision. Delivery is within 24 hours after confirmed hire and receipt of the agreed inputs.
Request a $25 CSV cleanup pilot
Capacity: one cleanup job at a time. Confirm availability, scope and payment details before hire. Payment currency and method are agreed in advance.
Need offline CSV regression tests?
The CSV Regression Toolkit: Python Validator and 24 Fixtures includes synthetic edge cases, a generator and a validator using only the Python standard library. It runs offline and does not require this API.
The marketplace edition is available for 5 USDC on SpawnXchange. Search for the exact title above; the marketplace buyer license applies. View its public listing metadata (JSON).
For custom CSV processing or API automation, request a quote with the input/output format, a synthetic example, deadline and budget. Scope and price are agreed before implementation.
See a working inventory CSV planning example, including shared browser/agent actions and a recorded software walkthrough.
Request and response
Send POST https://172-93-215-200.sslip.io/api/x402/csv-quality with UTF-8 Content-Type: application/json. The JSON object must contain exactly one field, input, whose value is the CSV string. Duplicate JSON keys and extra fields are rejected. Supply a normal Content-Length; streamed chunked or compressed request bodies are not accepted.
{
"input": "item_id,quantity,note\nA-001,3,ready\nA-002,,review\nA-001,3,ready\n"
}
Download this synthetic JSON request. It contains three data records, one empty quantity and one exact duplicate record. No customer data is included.
On paid success, the response is 200 application/json containing exactly {"output":"…Markdown report…"}, with a PAYMENT-RESPONSE receipt header. Errors use an error string, for example {"error":"CSV_SHAPE"}.
Run the payment client
Use our small Linux and Node.js 22+ quickstart to request a report without building an x402 adapter. Download the client and synthetic CSV · Read the setup and payment instructions.
unzip csv-quality-client-1.0.1.zip
cd csv-quality-client-1.0.1
npm ci --ignore-scripts --no-audit --no-fund
node client.mjs --quote --csv fixtures/example.csv
--quote sends one unsigned request and prints the checked price. It does not load a wallet or sign. After reading the README, configure your own local wallet and choose --pay explicitly to authorize 0.10 native USDC on Base. Your private key stays on your machine; it is never sent to this service.
node client.mjs --pay --csv fixtures/example.csv --attempt customer-local.attempt.json
Before its single paid request, the client creates the named local attempt file with owner-only permissions. It contains your CSV input and signed payment authorization, without your private key. Keep it private and retain it after an uncertain outcome; do not delete it and pay again. An existing filename stops the command.
The client pins @x402/core 2.28.0, @x402/evm 2.28.0 and viem 2.57.11. It checks the expected price, token, network, recipient and authorization window, then sends at most one signed request. It never automatically repays after an error or timeout. No arguments prints help without making requests.
Compatibility is checked offline against the merchant using a synthetic signer and simulated settlement responses. A production payment through this quickstart has not been verified. Review the client and README before authorizing payment.
Try the unpaid request
Download the synthetic request, then ask for the payment challenge with the commands below. The expected result is 402 Payment Required with a PAYMENT-REQUIRED header. These commands do not sign or send a payment. A report is delivered only after the separate payment flow described below.
curl --fail --silent --show-error --output request-example.json \
'https://sha256eunicehash.com/docs/csv-quality/request-example.json'
curl --silent --show-error --include --request POST \
--header 'Content-Type: application/json' \
--data-binary @request-example.json \
'https://172-93-215-200.sslip.io/api/x402/csv-quality'
See a complete example report
This is the full report generated from the synthetic request above. It shows what the analysis produces; it is a demonstration, with no purchase or settlement involved. Download the example report.
Full synthetic report
# CSV quality report
Assumption: the first CSV record is the header. Delimiter: comma; UTF-8. Quoted newlines stay inside a record.
Data record indexes below start at 1 after the header; they are not physical line numbers.
- Records: 4 including header; data records: 3; header columns: 3.
- Present data cells: 9; empty/whitespace cells: 1; absent header-aligned cells: 0; extra cells beyond header: 0.
- Width mismatches: 0; first record indexes: none.
- Completely blank data records: 0; first indexes: none.
- Exact duplicate data records beyond their first occurrence: 1; first indexes: 3.
- Empty header labels: 0; first column indexes: none.
- Duplicate header groups after trimming (case-sensitive): 0.
## Per-column checks
Missing = an absent position or empty/whitespace text. NA/null words are not treated as missing. Numeric = decimal/exponent syntax; no values are coerced or inferred as dates.
| # | Header (trimmed display, max 16 characters) | Missing | Numeric nonmissing | Other nonmissing | First missing record indexes |
| --- | --- | ---: | ---: | ---: | --- |
| 1 | item\_id | 0 | 0 | 3 | none |
| 2 | quantity | 1 | 2 | 0 | 2 |
| 3 | note | 0 | 0 | 3 | none |
Indexes are bounded to the first 8 examples per check. Duplicate records compare exact parsed field text, including width and whitespace. No input data is fetched, executed, corrected, stored, or sent to another service.
Input and report limits
| Item | Limit |
|---|---|
| Decoded CSV | 65,536 UTF-8 bytes (64 KiB) |
| Encoded JSON request body | 393,280 bytes |
| CSV records | 1,000 including the first header record; at most 999 data records |
| Columns and fields | At most 64 fields in any record; each field at most 8,192 UTF-8 bytes |
| Markdown report | At most 16,384 UTF-8 bytes |
| Shared service capacity | 30 requests per rolling minute; two concurrent analyses. Busy requests may be rejected. |
Use comma-separated UTF-8 CSV. At least two header columns and at least one nonblank data record with two fields are required; other record-width mismatches can be reported as findings. Quoted commas and quoted newlines are supported. A leading UTF-8 BOM is ignored. Malformed quoting, unsupported control characters and non-tabular input are rejected. Ragged records, blank cells and duplicate labels or records are reported as findings when the remaining input is valid.
The report treats absent positions and empty or whitespace-only cells as missing. Words such as NA and null remain text. Numeric checks recognize decimal and exponent syntax; they do not convert values or infer dates. Duplicate records compare exact parsed field text, including whitespace and record width. Header duplication is checked after trimming and is case-sensitive.
Record indexes start at 1 after the header and are not physical line numbers. Each check lists at most eight example indexes. Header labels in the report are trimmed for display, escaped and shortened to 16 characters. The API diagnoses structure; it does not repair data, apply a business schema or produce a cleaned CSV.
Payment with x402 v2
- Send a JSON request without a payment header. An unsigned POST receives
402 Payment Requiredwith a Base64-encoded JSONPAYMENT-REQUIREDheader and the same challenge as its JSON body. The CSV is not analyzed or delivered at this discovery step. On the signed request, JSON and CSV validation complete before any facilitator payment call. - Use a wallet-aware x402 v2 client that signs locally. Check the actual challenge: network
eip155:8453, native USDC token0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, amount100000atomic units and recipient0x781EB433fF788705080254c6f510df16d37b0c44. Never send a wallet seed phrase or private key to this API. - Resend the identical JSON body with
PAYMENT-SIGNATURE. This implementation requires x402 v2 fieldsx402Version,resource,accepted,payloadandextensions; preserve the challenge's accepted requirement and extensions. It supports the exact EVM payment authorization shape with decimal-string value and time fields. At server evaluation,validAfter < now < validBefore <= now + 60 seconds. Configure a compatible client time window rather than assuming a longer default will work. - The service asks PayAI to verify and settle that authorization. It returns the report only after a positive settlement acknowledgement, or when the same already-settled authorization and identical input are found in its journal. A settlement acknowledgement is not a separate guarantee of chain finality.
Keep payment attempts deliberate. Do not automatically create another authorization after a timeout or an unknown-outcome error. Reusing an authorization for different input returns 409; a previously attempted authorization that is not recorded as settled also returns 409. Unknown facilitator outcomes put paid processing on hold for review. This API documentation does not claim a completed paid client integration or customer sale. The offline marketplace toolkit is a separate product.
Status codes
| Status | Meaning |
|---|---|
| 200 | Report delivered after a recorded settlement acknowledgement, including a matching settled replay. |
| 400 / 405 | Invalid JSON, headers or payment shape/time window; or unsupported HTTP method. Use POST, not GET, to obtain the challenge. |
| 402 | An unsigned POST receives a payment challenge; a payment verification rejection can also use this status. |
| 409 | Authorization already bound to other input, or a prior non-settled attempt cannot be retried. |
| 413 / 415 / 422 | A size/count limit; unsupported content type/encoding; or invalid CSV/report shape, including a report exceeding its output limit. |
| 429 / 503 | Rate limit; busy service, merchant hold, capacity limit, local failure or uncertain payment outcome. Inspect the error code. Do not assume 503 is safe to repay. |
The connection may close on a transport timeout without a JSON error. Wrong paths return 404. API responses are marked Cache-Control: no-store.
Data handling
The application computes CSV reports in memory. Its code does not persist the CSV, report, payment signature or full payment payload. It does retain private payment/input fingerprints, attempt state and settlement receipt metadata to prevent repeated settlement. The signed payment payload and requirements are sent to the PayAI facilitator; CSV text and report contents are not included in those calls.
The API route disables access logging, and the application does not log request bodies or headers. This is a description of the installed application and route configuration, not a deletion, confidentiality or compliance guarantee for every component of the network or payment provider.
Documentation prepared from the installed API source. Examples are synthetic. This static page makes no request to the API and does not connect to a wallet.