{"info":{"_postman_id":"zapinner-collection","name":"Zapinner API (v1.0.0)","description":"Every public Zapinner endpoint, ready to run. Set the `zapinner_api_key` collection variable to your `zap_live_...` (or `zap_test_...`) key. Direct Zapinner access authenticates with `Authorization: Bearer {{zapinner_api_key}}`. If you are calling Zapinner through RapidAPI instead, do NOT set a Zapinner key — RapidAPI handles marketplace authentication automatically. Usage is metered per record and shared across your entire Zapinner account.","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{zapinner_api_key}}","type":"string"}]},"variable":[{"key":"base_url","value":"https://zapinner.com","type":"string"},{"key":"zapinner_api_key","value":"","type":"string"}],"item":[{"name":"POST /api/v1/normalize","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/normalize","host":["{{base_url}}"],"path":["api","v1","normalize"]},"description":"Standardizes names, companies, emails, phones, dates, currencies, and monetary values into consistent structured values. Returns both the original and normalized value for every field. Deterministic; no AI. Cost: 1 credit per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"company\": \" ACME, INC. \",\n    \"amount\": \"$1,245.00\",\n    \"date\": \"9/6/26\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/match","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/match","host":["{{base_url}}"],"path":["api","v1","match"]},"description":"Determines whether two records represent the same underlying entity or transaction, with a weighted, per-field explanation and a 0..1 confidence. Deterministic; no AI. Cost: 1 credit.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"left\": {\n    \"customer_name\": \"Acme Incorporated\",\n    \"email\": \"billing@acme.com\",\n    \"invoice_number\": \"INV-1002\"\n  },\n  \"right\": {\n    \"customer_name\": \"ACME Inc.\",\n    \"email\": \"billing@acme.com\",\n    \"invoice_number\": \"INV1002\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/compare","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/compare","host":["{{base_url}}"],"path":["api","v1","compare"]},"description":"Returns deterministic field-level differences between two records, including signed deltas for numeric fields and distinct missing-field classification. Cost: 1 credit.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"left\": {\n    \"amount\": 1250,\n    \"status\": \"open\"\n  },\n  \"right\": {\n    \"amount\": 1200,\n    \"status\": \"open\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/dedupe","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/dedupe","host":["{{base_url}}"],"path":["api","v1","dedupe"]},"description":"Finds likely duplicate records within a supplied dataset, grouped transitively with an explanation per group. Identifies only — never merges or deletes. Deterministic; no AI. Cost: 1 credit per record (max 500 records).\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"email\": \"billing@acme.com\",\n      \"company\": \"Acme Incorporated\"\n    },\n    {\n      \"email\": \"sales@globex.com\",\n      \"company\": \"Globex\"\n    },\n    {\n      \"email\": \"billing@acme.com\",\n      \"company\": \"ACME Inc.\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/anomalies","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/anomalies","host":["{{base_url}}"],"path":["api","v1","anomalies"]},"description":"Flags unusual or inconsistent records using robust statistics (median/MAD outliers), coverage-based missing values, rare categorical values, currency inconsistency, and possible duplicates. Neutral language; every anomaly cites evidence. Deterministic; no AI. Cost: 3 credits; metered per record (max 1000).\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"id\": \"INV-1\",\n      \"amount\": 100,\n      \"currency\": \"USD\"\n    },\n    {\n      \"id\": \"INV-2\",\n      \"amount\": 105,\n      \"currency\": \"USD\"\n    },\n    {\n      \"id\": \"INV-3\",\n      \"amount\": 98000,\n      \"currency\": \"USD\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/score","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/score","host":["{{base_url}}"],"path":["api","v1","score"]},"description":"Assigns an explainable 0..1 score (with a low/medium/high level) from either explicit weighted factors or a Zapinner finding. Every score is backed by the factors that produced it. Deterministic. Cost: 1 credit.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"score_type\": \"match_confidence\",\n  \"factors\": [\n    {\n      \"name\": \"email_match\",\n      \"value\": 1,\n      \"weight\": 2,\n      \"note\": \"Email matches exactly\"\n    },\n    {\n      \"name\": \"name_similarity\",\n      \"value\": 0.9,\n      \"note\": \"Names are highly similar\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/explain","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/explain","host":["{{base_url}}"],"path":["api","v1","explain"]},"description":"Produces a plain-English explanation of a Zapinner finding, referencing ONLY the evidence present on the supplied finding — it never invents evidence, and states explicitly when evidence is missing. Deterministic. Cost: 1 credit.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"finding\": {\n    \"result\": \"conflict\",\n    \"confidence\": 0.94,\n    \"evidence\": [\n      {\n        \"field\": \"amount\",\n        \"expected\": 12500,\n        \"actual\": 11750\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/analyze","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/analyze","host":["{{base_url}}"],"path":["api","v1","analyze"]},"description":"Runs several Zapinner operations over one payload, reusing the same service logic as the dedicated endpoints. Operations run independently (partial failure is reported per-operation) and only operations that actually executed are charged. Supported operations: normalize, match, compare, dedupe, anomalies, reconcile. Cost: the combined credit cost of the operations that ran.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"operations\": [\n    \"normalize\",\n    \"dedupe\",\n    \"anomalies\"\n  ],\n  \"data\": {\n    \"records\": [\n      {\n        \"email\": \"a@acme.com\",\n        \"company\": \"Acme Inc\",\n        \"amount\": 100\n      },\n      {\n        \"email\": \"a@acme.com\",\n        \"company\": \"ACME Incorporated\",\n        \"amount\": 100\n      },\n      {\n        \"email\": \"b@globex.com\",\n        \"company\": \"Globex\",\n        \"amount\": 100000\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/repair","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/repair","host":["{{base_url}}"],"path":["api","v1","repair"]},"description":"Send messy data, get production-ready data back. Inspects records, infers a schema, reconciles equivalent field names, normalizes and safely repairs values, detects and (at high confidence) merges duplicates, flags anomalies, and returns clean records plus a complete audit trail of every change. Deterministic; reuses the normalize, dedupe, and anomaly engines. Billed ONCE per input record for the whole operation — never separately for the internal steps. Cost: metered per input record (max 500).\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"Company Name\": \"ACME, INC.\",\n      \"Email\": \" JOHN@ACME.COM \",\n      \"Revenue\": \"$1.2M\",\n      \"signup\": \"3/7/26\"\n    },\n    {\n      \"company\": \"Acme Inc\",\n      \"email_address\": \"john@acme.com\",\n      \"revenue\": \"1200000\",\n      \"created\": \"2026-03-07\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/map","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/map","host":["{{base_url}}"],"path":["api","v1","map"]},"description":"Turn incoming data into the exact shape your application expects. Supply source records and the target schema; Map infers the field mapping (direct, alias, name-similarity, first+last name combination, safe splitting), converts each value to the target type, and returns data in your shape plus the inferred mappings, unresolved fields, and review items. Every mapping carries a confidence and a plain-language reason; low-confidence mappings go to review instead of being applied silently. Deterministic; reuses the shared data-intelligence primitives and (optionally) the /repair engine. Billed ONCE per input record (max 500).\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"firstname\": \"Mike\",\n      \"lastname\": \"Perkins\",\n      \"annualrevenue\": \"$2.4M\",\n      \"phone\": \"(704) 555-1234\",\n      \"company\": \"Acme, LLC\"\n    }\n  ],\n  \"target_schema\": {\n    \"full_name\": {\n      \"type\": \"string\",\n      \"required\": true\n    },\n    \"company_name\": {\n      \"type\": \"string\"\n    },\n    \"annual_revenue\": {\n      \"type\": \"number\"\n    },\n    \"phone_number\": {\n      \"type\": \"phone\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/guard","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/guard","host":["{{base_url}}"],"path":["api","v1","guard"]},"description":"Stop bad data before it reaches your application. Validates each incoming record against a schema, repairs safe issues, and returns a per-record decision — pass, repair, review, or reject — with clear reasons and confidence. Configurable policy controls what is repaired versus rejected. Optimized for real-time ingestion (forms, webhooks, CRM syncs). Deterministic; reuses the shared validation and repair primitives and (optionally) the dedupe and anomaly engines. Billed ONCE per input record (max 500).\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"email\": \" JOHN@ACME.COM \",\n      \"company\": \"Acme Inc\",\n      \"revenue\": \"$1.2M\"\n    },\n    {\n      \"email\": \"not-an-email\",\n      \"company\": \"\",\n      \"revenue\": \"1200000\"\n    },\n    {\n      \"email\": \"jane@globex.com\",\n      \"company\": \"Globex\",\n      \"revenue\": \"450000\"\n    }\n  ],\n  \"schema\": {\n    \"email\": {\n      \"type\": \"email\",\n      \"required\": true\n    },\n    \"company\": {\n      \"type\": \"string\",\n      \"required\": true\n    },\n    \"revenue\": {\n      \"type\": \"number\"\n    }\n  },\n  \"policy\": {\n    \"repair_safe_issues\": true,\n    \"reject_invalid_required_fields\": true\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/leads/recovery","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/leads/recovery","host":["{{base_url}}"],"path":["api","v1","leads","recovery"]},"description":"Analyze a single lead (or a { leads: [] } batch as a convenience) and return a Recovery Score with a recommended next action.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"lead_id\": \"lead_123\",\n  \"industry\": \"roofing\",\n  \"status\": \"estimate_sent\",\n  \"lead_age_days\": 28,\n  \"last_contact_days\": 19,\n  \"estimate_value\": 12000,\n  \"explicit_rejection\": false\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/leads/recovery/batch","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/leads/recovery/batch","host":["{{base_url}}"],"path":["api","v1","leads","recovery","batch"]},"description":"Analyze up to 1000 leads and return per-lead results plus an aggregated summary.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"leads\": [\n    {\n      \"lead_id\": \"lead_123\",\n      \"industry\": \"roofing\",\n      \"status\": \"estimate_sent\",\n      \"lead_age_days\": 28,\n      \"last_contact_days\": 19,\n      \"estimate_value\": 12000\n    },\n    {\n      \"lead_id\": \"lead_456\",\n      \"industry\": \"hvac\",\n      \"status\": \"no_response\",\n      \"lead_age_days\": 45,\n      \"last_contact_days\": 40\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/reconcile","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/reconcile","host":["{{base_url}}"],"path":["api","v1","reconcile"]},"description":"Compare two datasets (e.g. CRM vs billing) using configurable primary/secondary keys and comparison fields. Returns exact/probable/unmatched classifications, conflicts, duplicates, needs_review items, and evidence-backed financial exposure. Metered by total records processed (source_a + source_b).\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"source_a\": {\n    \"name\": \"crm\",\n    \"records\": [\n      {\n        \"email\": \"acme@example.com\",\n        \"customer\": \"Acme Co\",\n        \"amount\": 25000,\n        \"status\": \"won\"\n      }\n    ]\n  },\n  \"source_b\": {\n    \"name\": \"billing\",\n    \"records\": [\n      {\n        \"email\": \"acme@example.com\",\n        \"customer\": \"Acme Co\",\n        \"amount\": 22000,\n        \"status\": \"paid\"\n      }\n    ]\n  },\n  \"matching\": {\n    \"primary_keys\": [\n      \"email\"\n    ],\n    \"secondary_keys\": [\n      \"customer\"\n    ],\n    \"compare_fields\": [\n      \"amount\",\n      \"status\"\n    ],\n    \"amount_field\": \"amount\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/verify","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/verify","host":["{{base_url}}"],"path":["api","v1","verify"]},"description":"Determine whether a claim is supported by supplied evidence. Deterministic (no LLM required); customer text is treated strictly as data and injection attempts are ignored. Returns verified | unsupported | contradicted | insufficient_evidence with the supporting/contradicting evidence and a confidence score.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"claim\": \"Customer owes $47,250\",\n  \"evidence\": [\n    {\n      \"source\": \"billing\",\n      \"record_id\": \"inv_881\",\n      \"field\": \"amount\",\n      \"value\": 47250\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/revenue-leak","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/revenue-leak","host":["{{base_url}}"],"path":["api","v1","revenue-leak"]},"description":"Analyze orders, invoices, payments, and credits for possible revenue leakage: missing invoices, amount mismatches, underpayments, duplicates, and status conflicts. Every monetary conclusion traces to supplied numbers; exposure is reported cautiously as potential vs verified.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"orders\": [\n    {\n      \"order_id\": \"ORD-1\",\n      \"amount\": 18000,\n      \"status\": \"won\"\n    }\n  ],\n  \"invoices\": [],\n  \"payments\": []\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/transform","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/transform","host":["{{base_url}}"],"path":["api","v1","transform"]},"description":"Runs an ordered list of deterministic operations — trim, lowercase, uppercase, rename, pick, omit, default, coalesce, to_number, to_boolean, replace — over a record or array of records. No AI; no user-supplied regular expressions. Cost: 1 credit per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"name\": \"  Acme, Inc. \"\n  },\n  \"operations\": [\n    {\n      \"op\": \"trim\",\n      \"fields\": [\n        \"name\"\n      ]\n    },\n    {\n      \"op\": \"lowercase\",\n      \"fields\": [\n        \"name\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/validate","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/validate","host":["{{base_url}}"],"path":["api","v1","validate"]},"description":"Checks a record or array of records against per-field rules (type, required, numeric min/max, length, and allowed values), returning every failed rule with a stable code. Deterministic; no user-supplied regular expressions. Cost: 1 credit per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"email\": \"not-an-email\"\n  },\n  \"rules\": {\n    \"email\": {\n      \"type\": \"email\",\n      \"required\": true\n    }\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/extract","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/extract","host":["{{base_url}}"],"path":["api","v1","extract"]},"description":"Extracts a caller-declared set of fields from unstructured text using the Zapinner AI layer. The text is treated as untrusted data: fields with no clear value come back null rather than fabricated. Cost: 1 credit per request.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"text\": \"Invoice #INV-1042 dated 2026-09-06 for $1,245.00\",\n  \"fields\": [\n    {\n      \"name\": \"invoice_number\"\n    },\n    {\n      \"name\": \"amount\",\n      \"type\": \"number\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/web/extract","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/web/extract","host":["{{base_url}}"],"path":["api","v1","web","extract"]},"description":"Fetches a public web page over an SSRF-hardened client (no private, loopback, or link-local addresses; no redirects; size and time capped), reduces it to text, and extracts caller-declared structured fields. Cost: 1 credit per request.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"url\": \"https://example.com/\",\n  \"fields\": [\n    {\n      \"name\": \"page_title\",\n      \"description\": \"The main heading of the page\"\n    },\n    {\n      \"name\": \"summary\",\n      \"description\": \"A one-sentence summary of the page\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/process","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/process","host":["{{base_url}}"],"path":["api","v1","process"]},"description":"The universal operation orchestrator. Chains any record-stream operations from the catalog (those that take a `data` array, plus the two-dataset comparisons) into one synchronous request over a single working set — no internal HTTP calls, the same auth and metering as every endpoint. All steps are validated before any runs. Record-transforming steps (e.g. impute, rank, normalize-address, normalize-url) rewrite the working set; analysis steps attach their result under `artifacts` keyed by operation id and pass the records through unchanged. Two-dataset ops (schema-diff, link) take the working set as source_a and the step's `against` array as source_b. Text-scalar, text-pair, document, series, and single-string operations are NOT chainable here — call their own endpoints. Cost: the sum of each step's records_in × the operation's per-record weight.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"name\": \"John\",\n      \"email\": \"john@example.com\",\n      \"score\": 10\n    },\n    {\n      \"name\": \"jane\",\n      \"email\": \"nope\",\n      \"score\": null\n    }\n  ],\n  \"steps\": [\n    {\n      \"operation\": \"impute\",\n      \"options\": {\n        \"strategy\": \"mean\",\n        \"fields\": [\n          \"score\"\n        ]\n      }\n    },\n    {\n      \"operation\": \"quality-score\"\n    },\n    {\n      \"operation\": \"pii-detect\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/pipeline","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/pipeline","host":["{{base_url}}"],"path":["api","v1","pipeline"]},"description":"Runs an ordered chain of record-in / record-out capabilities (standardize, transform, redact, mask, normalize) over one record set, feeding each step's output into the next. The whole pipeline is validated before any step runs, and steps call each capability's pure engine directly. Deterministic; billed records × steps. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"records\": [\n      {\n        \"company\": \" ACME, INC. \",\n        \"note\": \"call me at 704-555-1234\"\n      }\n    ]\n  },\n  \"steps\": [\n    {\n      \"operation\": \"standardize\"\n    },\n    {\n      \"operation\": \"redact\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/workflows/run","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/workflows/run","host":["{{base_url}}"],"path":["api","v1","workflows","run"]},"description":"DEPRECATED, LIMITED-PREVIEW predecessor of the production pipeline. Chains a small fixed set of capabilities (normalize, transform, validate, dedupe, anomalies) via `{ capability }` steps and is gated behind a feature flag (returns 403 until enabled). For all new integrations use POST /api/v1/pipeline, which is generally available, composes 16 operations across five behavior classes via `{ operation }` steps, returns per-step reports and analysis artifacts, and bills for actual per-step work. This endpoint remains only for existing preview users and is not recommended. Cost: the combined credit cost of the steps that ran.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"records\": [\n      {\n        \"company\": \" ACME, INC. \"\n      },\n      {\n        \"company\": \"acme inc\"\n      }\n    ]\n  },\n  \"steps\": [\n    {\n      \"capability\": \"normalize\"\n    },\n    {\n      \"capability\": \"dedupe\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/execute","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/execute","host":["{{base_url}}"],"path":["api","v1","execute"]},"description":"Picks the best capability for a plain-language instruction and runs it with the real deterministic engine — the AI layer only routes, it never executes. Limited preview: availability is controlled by a feature flag, so calls return 403 until it is enabled for your account. Cost: the credit cost of the capability that ran.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"instruction\": \"clean up these messy customer records\",\n  \"data\": {\n    \"company\": \" ACME, INC. \"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"GET /api/v1/usage","request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/usage","host":["{{base_url}}"],"path":["api","v1","usage"]},"description":"Returns your account's authoritative monthly record usage, plan allowance, and per-API breakdown. Read-only: never metered and never counts toward usage. Usage is shared across your entire Zapinner account."}},{"name":"POST /api/v1/jobs","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/jobs","host":["{{base_url}}"],"path":["api","v1","jobs"]},"description":"Queues a batch job that runs ONE deterministic capability (normalize, transform, validate, dedupe, or anomalies) over up to 10,000 records outside the request/response cycle. Returns immediately with a queued job handle; poll GET /api/v1/jobs/{id} for status and result. The batch is billed up front against your account-level monthly record allowance (1 credit per record) — polling is free. Use this instead of the synchronous endpoints for large batches that would otherwise exceed a single request's time budget.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"capability\": \"dedupe\",\n  \"records\": [\n    {\n      \"email\": \"billing@acme.com\",\n      \"company\": \"Acme Incorporated\"\n    },\n    {\n      \"email\": \"billing@acme.com\",\n      \"company\": \"ACME Inc.\"\n    }\n  ],\n  \"params\": {\n    \"threshold\": 0.9\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"GET /api/v1/jobs/{id}","request":{"method":"GET","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/jobs/{id}","host":["{{base_url}}"],"path":["api","v1","jobs","{id}"]},"description":"Returns the status and (once completed) the result of an async job you submitted. Read-only: never metered and never counts toward usage. The submitted batch was already billed at submit time, shared across your entire Zapinner account."}},{"name":"GET /api/health","request":{"method":"GET","header":[],"url":{"raw":"{{base_url}}/api/health","host":["{{base_url}}"],"path":["api","health"]},"description":"Unauthenticated liveness/readiness probe. Not billable and never counts toward usage.","auth":{"type":"noauth"}}},{"name":"POST /api/v1/standardize","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/standardize","host":["{{base_url}}"],"path":["api","v1","standardize"]},"description":"Infers each column's type from its values (or takes an explicit type) and coerces every value into the canonical form for that type, so a whole dataset comes back type-consistent. Reuses the shared coercion + type-inference engines. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"amount\": \"$1,245.00\",\n    \"created\": \"3/7/26\",\n    \"active\": \"yes\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/parse","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/parse","host":["{{base_url}}"],"path":["api","v1","parse"]},"description":"Pulls typed values (and, for full names, structured first/middle/last components) out of caller-declared string fields. Deterministic: a value that cannot be parsed into the declared target comes back null with parsed:false rather than being guessed at. Billed per record. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"name\": \"Mike J Perkins\",\n    \"when\": \"3/7/26\"\n  },\n  \"fields\": [\n    {\n      \"name\": \"name\",\n      \"as\": \"full_name\"\n    },\n    {\n      \"name\": \"when\",\n      \"as\": \"date\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/type-infer","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/type-infer","host":["{{base_url}}"],"path":["api","v1","type-infer"]},"description":"Infers each column's type by majority vote over its non-blank values, with confidence and nullable/required flags. Types come from value evidence only, never field names. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"amount\": \"100\",\n      \"active\": \"yes\"\n    },\n    {\n      \"amount\": \"250\",\n      \"active\": \"no\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/completeness","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/completeness","host":["{{base_url}}"],"path":["api","v1","completeness"]},"description":"Reports per-field fill rate (the share of records where a field is present and non-blank) plus an overall completeness score. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"email\": \"a@x.com\",\n      \"phone\": \"\"\n    },\n    {\n      \"email\": \"\",\n      \"phone\": \"555-1234\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/fuzzy-match","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/fuzzy-match","host":["{{base_url}}"],"path":["api","v1","fuzzy-match"]},"description":"Pure per-field string-similarity comparison of two records, with an overall score and a match decision against a threshold. Distinct from /match (a weighted entity decision): this exposes the raw similarity so you can build your own thresholds. Reuses the shared similarity primitives. Deterministic. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"left\": {\n    \"company\": \"Acme Inc\"\n  },\n  \"right\": {\n    \"company\": \"ACME Incorporated\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/entity-resolution","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/entity-resolution","host":["{{base_url}}"],"path":["api","v1","entity-resolution"]},"description":"Clusters records that refer to the same real-world entity and emits one canonical record per entity. Reuses the deterministic dedupe engine for clustering and the shared merge engine for the canonical record. Billed per record. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"email\": \"a@acme.com\",\n      \"name\": \"Acme\"\n    },\n    {\n      \"email\": \"A@ACME.com\",\n      \"name\": \"ACME Inc\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/conflicts","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/conflicts","host":["{{base_url}}"],"path":["api","v1","conflicts"]},"description":"Within groups of records that share the same key, finds fields whose non-blank values disagree — the survivorship decisions you need before /merge or /survivorship. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"id\": \"1\",\n      \"email\": \"a@x.com\"\n    },\n    {\n      \"id\": \"1\",\n      \"email\": \"b@y.com\"\n    }\n  ],\n  \"key_fields\": [\n    \"id\"\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/merge","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/merge","host":["{{base_url}}"],"path":["api","v1","merge"]},"description":"Collapses several records for the same entity into one golden record using explicit per-field survivorship rules (most_complete, longest, highest, most_common, and more), with provenance for every chosen value. Reuses the shared merge engine. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"name\": \"Acme\",\n      \"phone\": \"\"\n    },\n    {\n      \"name\": \"Acme Inc\",\n      \"phone\": \"555-1234\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/survivorship","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/survivorship","host":["{{base_url}}"],"path":["api","v1","survivorship"]},"description":"Groups records by a shared key and collapses each group into one golden record using explicit per-field survivorship rules, with full provenance. Reuses the shared merge engine. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"id\": \"1\",\n      \"email\": \"a@x.com\"\n    },\n    {\n      \"id\": \"1\",\n      \"email\": \"\"\n    }\n  ],\n  \"key_fields\": [\n    \"id\"\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/consistency","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/consistency","host":["{{base_url}}"],"path":["api","v1","consistency"]},"description":"Reports per-field type consistency: each column's dominant type and the share of values that agree with it, flagging columns that mix types (e.g. numbers and free text). Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"amount\": \"100\"\n    },\n    {\n      \"amount\": \"abc\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/data-quality","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/data-quality","host":["{{base_url}}"],"path":["api","v1","data-quality"]},"description":"A composite 0..100 quality score with a letter grade, built from explainable completeness, type-consistency, and uniqueness dimensions. Reuses the shared quality primitives. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"email\": \"a@x.com\",\n      \"amount\": \"100\"\n    },\n    {\n      \"email\": \"\",\n      \"amount\": \"200\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/schema-detect","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/schema-detect","host":["{{base_url}}"],"path":["api","v1","schema-detect"]},"description":"Produces a compact schema object ({ field: { type, required, nullable, confidence } }) inferred from the records — ready to feed straight into /map, /guard, or /validate. Types come from value evidence only. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"amount\": \"100\",\n      \"active\": \"yes\"\n    },\n    {\n      \"amount\": \"250\",\n      \"active\": \"no\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/schema-map","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/schema-map","host":["{{base_url}}"],"path":["api","v1","schema-map"]},"description":"A named alias for the canonical schema-mapping engine: infers the field mapping from source records to a target schema, converts values to the target types, and returns data in your shape with a confidence and reason per field. Shares the exact /map request contract and engine. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"records\": [\n    {\n      \"firstname\": \"Mike\",\n      \"company\": \"Acme, LLC\"\n    }\n  ],\n  \"target_schema\": {\n    \"full_name\": {\n      \"type\": \"string\",\n      \"required\": true\n    },\n    \"company_name\": {\n      \"type\": \"string\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/classify","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/classify","host":["{{base_url}}"],"path":["api","v1","classify"]},"description":"Single-label classification of each record into one of the caller's declared categories, by keyword evidence (or description similarity). A record with no evidence is returned uncategorized rather than forced into a bucket. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"subject\": \"Refund request for an overcharge on my invoice\"\n  },\n  \"field\": \"subject\",\n  \"categories\": [\n    {\n      \"name\": \"billing\",\n      \"keywords\": [\n        \"refund\",\n        \"charge\",\n        \"invoice\"\n      ]\n    },\n    {\n      \"name\": \"support\",\n      \"keywords\": [\n        \"error\",\n        \"bug\",\n        \"broken\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/tag","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/tag","host":["{{base_url}}"],"path":["api","v1","tag"]},"description":"Multi-label tagging: applies every tag whose keywords appear in the record's text, so a record can carry many tags or none. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"note\": \"urgent refund needed today\"\n  },\n  \"field\": \"note\",\n  \"tags\": [\n    {\n      \"name\": \"urgent\",\n      \"keywords\": [\n        \"urgent\",\n        \"asap\",\n        \"today\"\n      ]\n    },\n    {\n      \"name\": \"billing\",\n      \"keywords\": [\n        \"refund\",\n        \"invoice\"\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/drift","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/drift","host":["{{base_url}}"],"path":["api","v1","drift"]},"description":"Compares a baseline record set against a current one and reports per-field drift: change in fill rate, change in type agreement, and numeric mean shift. Reuses the shared completeness and consistency primitives. Deterministic; billed per credit across both sets. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"baseline\": [\n    {\n      \"amount\": \"100\"\n    },\n    {\n      \"amount\": \"110\"\n    }\n  ],\n  \"current\": [\n    {\n      \"amount\": \"500\"\n    },\n    {\n      \"amount\": \"520\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/change-detect","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/change-detect","host":["{{base_url}}"],"path":["api","v1","change-detect"]},"description":"A keyed diff between two snapshots of a dataset: classifies each keyed record as added, removed, changed, or unchanged, with field-level changes from the shared compare engine. Deterministic; billed per credit across both snapshots. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"before\": [\n    {\n      \"id\": \"1\",\n      \"status\": \"open\"\n    }\n  ],\n  \"after\": [\n    {\n      \"id\": \"1\",\n      \"status\": \"paid\"\n    }\n  ],\n  \"key_fields\": [\n    \"id\"\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/redact","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/redact","host":["{{base_url}}"],"path":["api","v1","redact"]},"description":"Removes detected PII (email, phone, SSN, credit card, IP, URL) from the string fields of your records, replacing each with a typed placeholder or a fixed marker. Card numbers must pass a Luhn check to be redacted. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"note\": \"email me at john@acme.com or call 704-555-1234\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/mask","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/mask","host":["{{base_url}}"],"path":["api","v1","mask"]},"description":"Masks detected PII in the string fields of your records while preserving enough shape to stay recognizable (jo•••@acme.com, ••••1234), so masked data stays format-safe. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"note\": \"card 4111 1111 1111 1111 on file\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/rules","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/rules","host":["{{base_url}}"],"path":["api","v1","rules"]},"description":"Evaluates a data-only rule set against every record and returns the rules that matched, each with its opaque `then` payload. The engine has no code evaluation and a fixed operator set, so rules can never execute arbitrary logic. Deterministic; billed per credit. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"amount\": \"1500\",\n    \"region\": \"US\"\n  },\n  \"rules\": [\n    {\n      \"name\": \"high_value\",\n      \"when\": [\n        {\n          \"field\": \"amount\",\n          \"op\": \"gt\",\n          \"value\": 1000\n        }\n      ],\n      \"then\": {\n        \"tier\": \"priority\"\n      }\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/route","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/route","host":["{{base_url}}"],"path":["api","v1","route"]},"description":"Assigns each record a destination using first-match-wins over an ordered rule set, falling back to a default when nothing matches. Reuses the shared safe rule engine. Deterministic and total — every record gets a destination. Billed per record. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": {\n    \"region\": \"EU\"\n  },\n  \"rules\": [\n    {\n      \"name\": \"eu\",\n      \"when\": [\n        {\n          \"field\": \"region\",\n          \"op\": \"eq\",\n          \"value\": \"EU\"\n        }\n      ],\n      \"then\": {\n        \"destination\": \"eu-queue\"\n      }\n    }\n  ],\n  \"fallback\": \"default-queue\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/profile","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/profile","host":["{{base_url}}"],"path":["api","v1","profile"]},"description":"Profiles a record set: row and field counts, duplicate rows, per-field inferred type with confidence, null counts, and distinct-value counts. A deterministic overview you can run before any other operation. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"name\": \"John\",\n      \"email\": \"john@example.com\",\n      \"age\": 42\n    },\n    {\n      \"name\": \"Jane\",\n      \"email\": \"jane@example.com\",\n      \"age\": 30\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/statistics","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/statistics","host":["{{base_url}}"],"path":["api","v1","statistics"]},"description":"Computes count, min, max, sum, mean, median, mode, variance, standard deviation, and percentiles (p25/p50/p75/p90/p95/p99) for each numeric field in the record set. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"revenue\": 1200\n    },\n    {\n      \"revenue\": 900\n    },\n    {\n      \"revenue\": 1500\n    }\n  ],\n  \"options\": {\n    \"fields\": [\n      \"revenue\"\n    ]\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/missing","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/missing","host":["{{base_url}}"],"path":["api","v1","missing"]},"description":"Reports total missing values and a per-field breakdown (missing count and percentage), treating null, undefined, and empty string as missing. Use it to target imputation or reject incomplete uploads. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"name\": \"John\",\n      \"email\": \"john@example.com\"\n    },\n    {\n      \"name\": \"Jane\",\n      \"email\": \"\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/distributions","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/distributions","host":["{{base_url}}"],"path":["api","v1","distributions"]},"description":"Bins each numeric field into a histogram and reports median-based skewness plus possible outliers by Tukey's rule (1.5x IQR beyond the quartiles) — robust on small or skewed columns where a sigma rule fails. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"v\": 10\n    },\n    {\n      \"v\": 11\n    },\n    {\n      \"v\": 12\n    },\n    {\n      \"v\": 40\n    }\n  ],\n  \"options\": {\n    \"fields\": [\n      \"v\"\n    ],\n    \"bins\": 4\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/quality-score","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/quality-score","host":["{{base_url}}"],"path":["api","v1","quality-score"]},"description":"Combines completeness, validity, consistency, and uniqueness into a single 0-100 score with each component surfaced, so you can gate an import on a quality threshold. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"name\": \"John\",\n      \"email\": \"john@example.com\"\n    },\n    {\n      \"name\": \"Jane\",\n      \"email\": \"invalid\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/correlations","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/correlations","host":["{{base_url}}"],"path":["api","v1","correlations"]},"description":"Computes the Pearson correlation coefficient for every pair of numeric fields and labels each pair's strength and direction. Deterministic and dependency-free. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"x\": 1,\n      \"y\": 2\n    },\n    {\n      \"x\": 2,\n      \"y\": 4\n    },\n    {\n      \"x\": 3,\n      \"y\": 6\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/trends","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/trends","host":["{{base_url}}"],"path":["api","v1","trends"]},"description":"Orders a numeric field by an optional date field and fits an OLS line to report slope, direction, total growth, and volatility. A transparent, reproducible trend read — no black-box model. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"month\": \"2024-01\",\n      \"sales\": 100\n    },\n    {\n      \"month\": \"2024-02\",\n      \"sales\": 130\n    },\n    {\n      \"month\": \"2024-03\",\n      \"sales\": 170\n    }\n  ],\n  \"options\": {\n    \"field\": \"sales\",\n    \"date_field\": \"month\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/change-points","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/change-points","host":["{{base_url}}"],"path":["api","v1","change-points"]},"description":"Scans a numeric series for mean shifts, scoring each candidate against a robust noise floor (median absolute consecutive difference) so a genuine level change is not masked by the variance it introduces. Distinct from keyed row diffing (change-detect). Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"v\": 10\n    },\n    {\n      \"v\": 11\n    },\n    {\n      \"v\": 10\n    },\n    {\n      \"v\": 40\n    },\n    {\n      \"v\": 41\n    },\n    {\n      \"v\": 39\n    }\n  ],\n  \"options\": {\n    \"field\": \"v\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/patterns","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/patterns","host":["{{base_url}}"],"path":["api","v1","patterns"]},"description":"Masks each value into a character-class pattern (letters, digits, punctuation) and reports the most frequent formats per field with their share — ideal for spotting inconsistent phone or code formats. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"phone\": \"555-123-4567\"\n    },\n    {\n      \"phone\": \"5551234567\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/schema-diff","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/schema-diff","host":["{{base_url}}"],"path":["api","v1","schema-diff"]},"description":"Infers a schema for each of two record sets and reports added fields, removed fields, and per-field type changes — a fast guard against silent upstream schema drift. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"source_a\": [\n    {\n      \"first_name\": \"Jane\",\n      \"age\": 30\n    }\n  ],\n  \"source_b\": [\n    {\n      \"firstName\": \"Jane\",\n      \"age\": \"thirty\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/schema-validate","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/schema-validate","host":["{{base_url}}"],"path":["api","v1","schema-validate"]},"description":"Checks every record against a declared schema (per-field type and required flag) and splits the set into valid and invalid records with per-record reasons. Deterministic; no data is mutated. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"email\": \"a@b.com\",\n      \"age\": 30\n    },\n    {\n      \"email\": \"nope\",\n      \"age\": \"x\"\n    }\n  ],\n  \"options\": {\n    \"schema\": {\n      \"email\": {\n        \"type\": \"email\",\n        \"required\": true\n      },\n      \"age\": {\n        \"type\": \"integer\"\n      }\n    }\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/validate-email","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/validate-email","host":["{{base_url}}"],"path":["api","v1","validate-email"]},"description":"Validates each email for syntax and structure, extracts the domain, flags common disposable domains, and returns a normalized form. Deterministic — it does not send network probes. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"email\": \"John@Example.com\"\n    },\n    {\n      \"email\": \"bad@\"\n    }\n  ],\n  \"options\": {\n    \"field\": \"email\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/pii-detect","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/pii-detect","host":["{{base_url}}"],"path":["api","v1","pii-detect"]},"description":"Scans records for emails, phone numbers, SSNs, credit cards, and other PII, returning counts and the field/record locations of each finding. Never returns the sensitive value itself — safe to log. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"note\": \"reach me at jane@example.com or 555-123-4567\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/similarity","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/similarity","host":["{{base_url}}"],"path":["api","v1","similarity"]},"description":"Compares records field-by-field (numeric closeness and string edit distance) and returns pairs above a similarity threshold. Use it to surface fuzzy duplicates before merging. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"name\": \"Acme Inc\"\n    },\n    {\n      \"name\": \"ACME, Inc.\"\n    },\n    {\n      \"name\": \"Globex\"\n    }\n  ],\n  \"options\": {\n    \"threshold\": 0.6\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/link","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/link","host":["{{base_url}}"],"path":["api","v1","link"]},"description":"Links records across two datasets by field-level similarity, returning matched pairs with their score and matching fields plus the unmatched rows on each side. Deterministic greedy matching above a threshold. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"source_a\": [\n    {\n      \"email\": \"alan@example.com\",\n      \"name\": \"Alan\"\n    }\n  ],\n  \"source_b\": [\n    {\n      \"email\": \"alan@example.com\",\n      \"name\": \"Alan\"\n    }\n  ],\n  \"options\": {\n    \"threshold\": 0.8\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/impute","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/impute","host":["{{base_url}}"],"path":["api","v1","impute"]},"description":"Fills missing values using mean, median, mode, a constant, or forward/backward fill, and reports how many values were filled. Returns the completed record set — the input is never mutated in place. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"v\": 10\n    },\n    {\n      \"v\": null\n    },\n    {\n      \"v\": 20\n    }\n  ],\n  \"options\": {\n    \"strategy\": \"mean\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/normalize-phone","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/normalize-phone","host":["{{base_url}}"],"path":["api","v1","normalize-phone"]},"description":"Strips formatting and normalizes phone numbers to E.164 using a default country code for local numbers, flagging values that cannot be normalized. Deterministic and offline. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"phone\": \"(555) 123-4567\"\n    }\n  ],\n  \"options\": {\n    \"field\": \"phone\",\n    \"default_country_code\": \"1\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/normalize-address","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/normalize-address","host":["{{base_url}}"],"path":["api","v1","normalize-address"]},"description":"Standardizes address casing, whitespace, and common abbreviations (St, Ave, Blvd) to a consistent form for grouping and matching. Deterministic string normalization, not a postal-validation lookup. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"address\": \"123 main st.  APT 4\"\n    }\n  ],\n  \"options\": {\n    \"field\": \"address\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/normalize-url","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/normalize-url","host":["{{base_url}}"],"path":["api","v1","normalize-url"]},"description":"Lowercases scheme and host, drops default ports, resolves dot segments, and optionally sorts query parameters to produce a canonical URL for deduplication. Deterministic. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"url\": \"HTTP://Example.com:80/a/../b?z=1&a=2\"\n    }\n  ],\n  \"options\": {\n    \"field\": \"url\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/text-clean","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/text-clean","host":["{{base_url}}"],"path":["api","v1","text-clean"]},"description":"Cleans a text string with optional lowercasing, whitespace collapsing, punctuation stripping, and accent folding. Deterministic and composable with the text-intelligence operations. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"text\": \"  Hello,   WORLD!!  \",\n  \"options\": {\n    \"lowercase\": true,\n    \"collapse_whitespace\": true,\n    \"strip_punctuation\": true\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/cluster","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/cluster","host":["{{base_url}}"],"path":["api","v1","cluster"]},"description":"Groups records via single-linkage clustering over field similarity above a threshold, returning a cluster id per record and cluster sizes. Dependency-free — no external ML runtime. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"name\": \"Acme Inc\"\n    },\n    {\n      \"name\": \"ACME, Inc.\"\n    },\n    {\n      \"name\": \"Globex\"\n    }\n  ],\n  \"options\": {\n    \"fields\": [\n      \"name\"\n    ],\n    \"threshold\": 0.6\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/rank","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/rank","host":["{{base_url}}"],"path":["api","v1","rank"]},"description":"Computes a weighted score from selected numeric fields (with optional normalization and direction) and returns the records with a score and rank attached, ordered best-first. Deterministic. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"name\": \"A\",\n      \"revenue\": 1000,\n      \"churn\": 0.1\n    },\n    {\n      \"name\": \"B\",\n      \"revenue\": 500,\n      \"churn\": 0.5\n    }\n  ],\n  \"options\": {\n    \"weights\": {\n      \"revenue\": 1,\n      \"churn\": -1\n    }\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/segment","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/segment","host":["{{base_url}}"],"path":["api","v1","segment"]},"description":"Assigns each record to the first matching segment rule (numeric range or equality on a field) with a default bucket for the rest, and reports segment sizes. Deterministic rule evaluation. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"mrr\": 1200\n    },\n    {\n      \"mrr\": 50\n    }\n  ],\n  \"options\": {\n    \"rules\": [\n      {\n        \"name\": \"enterprise\",\n        \"field\": \"mrr\",\n        \"min\": 1000\n      },\n      {\n        \"name\": \"smb\",\n        \"field\": \"mrr\",\n        \"max\": 999\n      }\n    ]\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/json-repair","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/json-repair","host":["{{base_url}}"],"path":["api","v1","json-repair"]},"description":"Repairs frequently-seen JSON defects — trailing commas, single quotes, and unquoted keys — and returns valid parsed JSON with the list of repairs applied. Bounded and deterministic. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"input\": \"{'a':1, b:2,}\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/flatten","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/flatten","host":["{{base_url}}"],"path":["api","v1","flatten"]},"description":"Flattens nested objects and arrays into single-level records with dot-path keys. Prototype-pollution safe and depth-bounded. Pairs with unflatten to round-trip. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"a\": {\n        \"b\": {\n          \"c\": 1\n        }\n      },\n      \"d\": [\n        1,\n        2\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/unflatten","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/unflatten","host":["{{base_url}}"],"path":["api","v1","unflatten"]},"description":"Rebuilds nested objects from dot-path keys, guarding every path segment against prototype-pollution keys. The inverse of flatten (arrays are rebuilt as index-keyed objects). Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"a.b.c\": 1,\n      \"d.0\": 1,\n      \"d.1\": 2\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/convert","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/convert","host":["{{base_url}}"],"path":["api","v1","convert"]},"description":"Converts a record set to CSV/TSV or parses delimited text back into records, following RFC 4180 quoting. Deterministic first-seen column ordering. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"data\": [\n    {\n      \"a\": 1,\n      \"b\": \"x,y\"\n    },\n    {\n      \"a\": 2,\n      \"b\": \"z\"\n    }\n  ],\n  \"options\": {\n    \"to\": \"csv\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/sentiment","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/sentiment","host":["{{base_url}}"],"path":["api","v1","sentiment"]},"description":"Scores text sentiment with a polarity lexicon and negation handling, returning a label and a normalized score. A transparent heuristic — honestly labeled, not a neural model. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"text\": \"The product is great but support was terrible\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/language","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/language","host":["{{base_url}}"],"path":["api","v1","language"]},"description":"Detects the most likely language of a text from stop-word and character-frequency profiles, returning the top guess with a confidence. Deterministic and offline over the supported language set. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"text\": \"le chat est sur la table et il est content\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/entities","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/entities","host":["{{base_url}}"],"path":["api","v1","entities"]},"description":"Extracts entities — email, url, phone, money, date, and capitalized proper-noun spans — from free text using deterministic regex and heuristics. No model calls; every match is traceable. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"text\": \"Contact Jane Doe at jane@acme.com by 2024-06-01 for $50\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/keywords","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/keywords","host":["{{base_url}}"],"path":["api","v1","keywords"]},"description":"Tokenizes text, removes stop words, and ranks terms by frequency to return the top keywords with counts. Deterministic term-frequency scoring. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"text\": \"data quality tooling improves data pipelines and data trust\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/text-similarity","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/text-similarity","host":["{{base_url}}"],"path":["api","v1","text-similarity"]},"description":"Compares two texts by token-set Jaccard and term-frequency cosine similarity, returning both scores in [0,1]. Deterministic and dependency-free. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"text_a\": \"the quick brown fox\",\n  \"text_b\": \"the quick red fox\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/summarize","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/summarize","host":["{{base_url}}"],"path":["api","v1","summarize"]},"description":"Produces an extractive summary by scoring sentences on keyword salience and returning the top N in original order. Extractive by design — it never fabricates text, so output is always grounded in the input. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"text\": \"Data quality matters. Bad data costs money every day. Our tool finds issues fast. It integrates with pipelines easily.\",\n  \"options\": {\n    \"sentences\": 2\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/topics","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/topics","host":["{{base_url}}"],"path":["api","v1","topics"]},"description":"Aggregates term and document frequency across a set of documents to surface the most representative terms per topic bucket. A transparent frequency method, not opaque LDA. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"documents\": [\n    \"billing invoice payment\",\n    \"payment refund invoice\",\n    \"login password account\"\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/html-extract","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/html-extract","host":["{{base_url}}"],"path":["api","v1","html-extract"]},"description":"Parses an HTML string with a dependency-free scanner to return the title, headings, links, and visible text, ignoring script and style content. Deterministic; no network fetch. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"html\": \"<title>Hi</title><h1>Welcome</h1><p>Read <a href=\\\"/x\\\">more</a></p>\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/forecast","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":{"raw":"{{base_url}}/api/v1/forecast","host":["{{base_url}}"],"path":["api","v1","forecast"]},"description":"Projects a numeric series forward with an ordinary-least-squares linear trend and residual-based confidence bands. A transparent baseline forecast — the method and its uncertainty are fully inspectable. Cost: metered per record.\n\nUsage: records are counted toward your monthly allowance as described above. Usage is shared across your entire Zapinner account (all API keys draw from one allowance).","body":{"mode":"raw","raw":"{\n  \"series\": [\n    100,\n    120,\n    140,\n    160,\n    180\n  ],\n  \"options\": {\n    \"periods\": 3\n  }\n}","options":{"raw":{"language":"json"}}}}}]}