{"uid":"cap_oM561PWj4_T1AOY4w2Iii","slug":"402utils-csv-diff-f4983a7a","name":"402utils CSV Diff","description":"Row-level diff of two CSVs (a→b) — reconcile two exports. With `key` (a column name, or a column index when header:false), rows pair by key → added / removed / changed (per-field old→new). Without a key, a whole-row multiset diff gives added/removed only. Delimiter auto-detected (, ; tab |); tolerant RFC-4180 parsing. First row is the header unless header:false. Max 5 MB per input; reported buckets cap at 10000.","url":"https://402utils.com/v1/csv-diff","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"a":{"type":"string","description":"Original CSV (max 5 MB UTF-8)."},"b":{"type":"string","description":"New CSV (max 5 MB UTF-8)."},"key":{"type":"string","description":"Column name (header mode) or column index like \"0\" (header:false) to pair rows by. Omit for a keyless whole-row diff."},"header":{"type":"boolean","default":true,"description":"Treat the first row as a header. When false, rows are arrays and key is an index."}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.003","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.003/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_8leXV1zFZJJ_ZUwLzqybU","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.003","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Computes a row-level diff between two CSV files, identifying added, removed, and changed rows (with per-field old→new details when a key column is provided).","exampleAgentPrompt":"Compare these two CSV exports and tell me which rows were added, removed, or changed — use the 'account_id' column as the key so you can match rows across both files.","exampleUseCases":null,"resultDescription":"Returns bucketed diff results: lists of added rows (in b but not a), removed rows (in a but not b), and changed rows (present in both but with differing field values, showing old→new per field). Buckets are capped at 10,000 entries each. When no key is provided, only added/removed buckets are returned using whole-row multiset comparison.","failureModes":["Input CSV exceeds 5 MB — returns an error rejecting oversized input","Key column name not found in header row — returns column-not-found error","Malformed CSV that cannot be parsed — returns parse error","Both CSVs have no rows — returns empty diff buckets","Result buckets hit 10,000-row cap — diff is truncated with a warning"],"whenToPreferThis":"Use this endpoint when you need to reconcile two CSV exports or snapshots and want to know exactly which rows were added, removed, or changed (with per-field granularity). It is especially useful for data audit trails, ETL validation, billing reconciliation, and incremental change detection between periodic exports. Prefer it over manual diffing or generic text diff tools when your data is tabular and you need structured, actionable change buckets rather than raw line diffs.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T18:53:01.088Z","isFirstParty":false}