Compares the processed files of two runs of the SAME pipeline (for example yesterday’s ingest vs today’s) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (completed, delivered, or acknowledged), and must be visible to the caller. The response carries summary counts plus a single paginated changes list (added entries first, then removed).
GET
/
pipeline-runs
/
delta
Compare two pipeline runs (delta)
curl --request GET \ --url https://api.sftpsync.io/pipeline-runs/delta \ --header 'x-api-key: <api-key>'
Pagination metadata for the flattened changes list.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"FileFeed DOCS","colors":{"primary":"#2563ea","light":"#2563ea","dark":"#2563ea"},"logo":{"light":"https://mintcdn.com/filefeed/isIDiioCZwaquy-g/logo/filefeed-logo-auto.svg?fit=max\u0026auto=format\u0026n=isIDiioCZwaquy-g\u0026q=85\u0026s=008657fa8724c730e7c817572b836db3","dark":"https://mintcdn.com/filefeed/isIDiioCZwaquy-g/logo/dark.svg?fit=max\u0026auto=format\u0026n=isIDiioCZwaquy-g\u0026q=85\u0026s=8ea67725e98b4856b1e62a8e85304f47"},"favicon":"https://mintcdn.com/filefeed/isIDiioCZwaquy-g/favicon.svg?fit=max\u0026auto=format\u0026n=isIDiioCZwaquy-g\u0026q=85\u0026s=ee5e5e8047bdc247d0ee3962a63d3530","api":{"mdx":{"auth":{"method":"key","name":"x-api-key"}}},"navbar":{"links":[{"href":"mailto:support@filefeed.io","label":"Support"}],"primary":{"type":"button","label":"Sign Up","href":"https://filefeed.io/signup"}},"footer":{"socials":{"x":"https://x.com/filefeed","github":"https://github.com/filefeed","linkedin":"https://linkedin.com/company/filefeed"}},"fonts":{"heading":{"family":"Noto Sans"},"body":{"family":"Noto Sans"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"filefeed","hasAudioNarration":false,"actualSubdomain":"filefeed","customDomains":["docs.filefeed.io"],"gitSource":{"type":"github","owner":"nikolicigor","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae940f9fafb49d47fd595d7:success","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API Reference","count":126},{"language":"default","tag":"Guides","count":15},{"language":"default","tag":"Documents","count":12},{"language":"default","tag":"Pipeline Runs","count":9},{"language":"default","tag":"Webhooks","count":8},{"language":"default","tag":"Clients (deprecated)","count":6},{"language":"default","tag":"Connections","count":6},{"language":"default","tag":"Pipelines","count":6},{"language":"default","tag":"Schemas","count":6},{"language":"default","tag":"Automated Flows","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/pipeline-runs/compare-two-pipeline-runs-delta","slug":"/api-reference/pipeline-runs/compare-two-pipeline-runs-delta","pageMetadata":{"title":"Compare two pipeline runs (delta)","description":"Compares the processed files of two runs of the SAME pipeline (for example yesterday's ingest vs today's) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (`completed`, `delivered`, or `acknowledged`), and must be visible to the caller. The response carries summary counts plus a single paginated `changes` list (added entries first, then removed).","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /pipeline-runs/delta","href":"/api-reference/pipeline-runs/compare-two-pipeline-runs-delta","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Compares the processed files of two runs of the SAME pipeline (for example yesterday’s ingest vs today’s) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (\", _jsx(_components.code, {\n children: \"completed\"\n }), \", \", _jsx(_components.code, {\n children: \"delivered\"\n }), \", or \", _jsx(_components.code, {\n children: \"acknowledged\"\n }), \"), and must be visible to the caller. The response carries summary counts plus a single paginated \", _jsx(_components.code, {\n children: \"changes\"\n }), \" list (added entries first, then removed).\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Compare two pipeline runs (delta)","description":"Compares the processed files of two runs of the SAME pipeline (for example yesterday's ingest vs today's) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (`completed`, `delivered`, or `acknowledged`), and must be visible to the caller. The response carries summary counts plus a single paginated `changes` list (added entries first, then removed).","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /pipeline-runs/delta","href":"/api-reference/pipeline-runs/compare-two-pipeline-runs-delta","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Pipeline Runs"],"summary":"Compare two pipeline runs (delta)","description":"Compares the processed files of two runs of the SAME pipeline (for example yesterday's ingest vs today's) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (`completed`, `delivered`, or `acknowledged`), and must be visible to the caller. The response carries summary counts plus a single paginated `changes` list (added entries first, then removed).","parameters":["8e3188f3-0da4-4c0a-9db5-1e43b33af622","4df2011b-79ca-4b3a-8b76-0fc21d5d4063","8e4476de-4604-4171-9286-8fa293181bd2","a6b5b14e-9aaf-41f5-9e63-7d50032b09c4"],"responses":{"200":"258c8308-942a-4b49-bf1b-a20d2712e9d9","400":"12d68557-a898-4ec2-9e39-fc4ea661dde3","404":"4eac32be-c1ee-4826-8de5-c9499fc1b442"},"method":"get","type":"path","servers":["660c892d-0422-4017-96f3-56463916d62d"],"security":["fff5e477-6ced-4f31-8ff9-8e9bff345538"],"path":"/pipeline-runs/delta","baseUrlOptions":["https://api.sftpsync.io"],"title":"Compare two pipeline runs (delta)","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"8e3188f3-0da4-4c0a-9db5-1e43b33af622":{"name":"baseRunId","in":"query","required":true,"schema":{"type":"string","isRequired":true,"description":"Baseline (earlier) pipeline run id — the \"before\" side.","uniqueKey":"","typeLabel":"string"},"description":"Baseline (earlier) pipeline run id — the \"before\" side."},"4df2011b-79ca-4b3a-8b76-0fc21d5d4063":{"name":"compareRunId","in":"query","required":true,"schema":{"type":"string","isRequired":true,"description":"Comparison (later) pipeline run id — the \"after\" side. Must belong to the same pipeline as baseRunId.","uniqueKey":"","typeLabel":"string"},"description":"Comparison (later) pipeline run id — the \"after\" side. Must belong to the same pipeline as baseRunId."},"8e4476de-4604-4171-9286-8fa293181bd2":{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"isRequired":false,"description":"Offset into the flattened changes list.","uniqueKey":"","typeLabel":"integer"},"description":"Offset into the flattened changes list."},"a6b5b14e-9aaf-41f5-9e63-7d50032b09c4":{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100,"isRequired":false,"description":"Maximum number of change entries to return (1–1000).","uniqueKey":"","typeLabel":"integer"},"description":"Maximum number of change entries to return (1–1000)."}},"responses":{"258c8308-942a-4b49-bf1b-a20d2712e9d9":{"description":"The delta between the two runs.","content":{"application/json":{"schema":{"type":"object","description":"Record-level delta between two runs of the same pipeline.","properties":{"baseRunId":{"type":"string","isRequired":true,"uniqueKey":"baseRunId","typeLabel":"string"},"compareRunId":{"type":"string","isRequired":true,"uniqueKey":"compareRunId","typeLabel":"string"},"pipelineId":{"type":"string","description":"The pipeline definition both runs belong to.","isRequired":true,"uniqueKey":"pipelineId","typeLabel":"string"},"summary":{"type":"object","description":"Aggregate counts for a pipeline-run delta.","properties":{"baseCount":{"type":"integer","description":"Records in the base run's processed file.","isRequired":true,"uniqueKey":"summary.baseCount","typeLabel":"integer"},"compareCount":{"type":"integer","description":"Records in the compare run's processed file.","isRequired":true,"uniqueKey":"summary.compareCount","typeLabel":"integer"},"addedCount":{"type":"integer","description":"Records present in the compare run but not the base run.","isRequired":true,"uniqueKey":"summary.addedCount","typeLabel":"integer"},"removedCount":{"type":"integer","description":"Records present in the base run but not the compare run.","isRequired":true,"uniqueKey":"summary.removedCount","typeLabel":"integer"}},"required":["baseCount","compareCount","addedCount","removedCount"],"isRequired":true,"uniqueKey":"summary","typeLabel":"object"},"changes":{"type":"array","items":{"type":"object","description":"A single changed record. `added` = present only in the compare run; `removed` = present only in the base run.","properties":{"changeType":{"type":"string","enum":["added","removed"],"isRequired":true,"uniqueKey":"changes.items.[INDEX].changeType","typeLabel":"enum\u003cstring>"},"record":{"type":"object","additionalProperties":true,"description":"The processed record (a row of the processed file) that was added or removed.","isRequired":true,"uniqueKey":"changes.items.[INDEX].record","typeLabel":"object"}},"required":["changeType","record"],"uniqueKey":"changes.items.[INDEX]","typeLabel":"object"},"description":"Changed records for this page (added first, then removed).","isRequired":true,"uniqueKey":"changes","typeLabel":"object[]"},"pagination":{"type":"object","description":"Pagination metadata for the flattened changes list.","properties":{"total":{"type":"integer","description":"Total change entries (addedCount + removedCount).","isRequired":true,"uniqueKey":"pagination.total","typeLabel":"integer"},"offset":{"type":"integer","isRequired":true,"uniqueKey":"pagination.offset","typeLabel":"integer"},"limit":{"type":"integer","isRequired":true,"uniqueKey":"pagination.limit","typeLabel":"integer"},"returned":{"type":"integer","description":"Number of change entries returned in this page.","isRequired":true,"uniqueKey":"pagination.returned","typeLabel":"integer"}},"required":["total","offset","limit","returned"],"isRequired":true,"uniqueKey":"pagination","typeLabel":"object"}},"required":["baseRunId","compareRunId","pipelineId","summary","changes","pagination"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"baseRunId":"\u003cstring>","compareRunId":"\u003cstring>","pipelineId":"\u003cstring>","summary":{"baseCount":123,"compareCount":123,"addedCount":123,"removedCount":123},"changes":[{"changeType":"added","record":{}}],"pagination":{"total":123,"offset":123,"limit":123,"returned":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"12d68557-a898-4ec2-9e39-fc4ea661dde3":{"description":"Same run id given twice, the two runs belong to different pipelines, a run is not in a processed state, or a processed file is not a record array.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","uniqueKey":"message","typeLabel":"string"},"statusCode":{"type":"integer","uniqueKey":"statusCode","typeLabel":"integer"},"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","statusCode":123,"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"4eac32be-c1ee-4826-8de5-c9499fc1b442":{"description":"A run was not found in the workspace or is not visible to the caller.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","uniqueKey":"message","typeLabel":"string"},"statusCode":{"type":"integer","uniqueKey":"statusCode","typeLabel":"integer"},"error":{"type":"string","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","statusCode":123,"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"fff5e477-6ced-4f31-8ff9-8e9bff345538":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[]}}},"servers":{"660c892d-0422-4017-96f3-56463916d62d":{"url":"https://api.sftpsync.io"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","scopes":[]},"schema":{"title":"x-api-key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"x-api-key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"filefeed","siteName":"FileFeed DOCS","title":"Compare two pipeline runs (delta) - FileFeed DOCS","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-26T16:49:24.631Z","originalFileLocation":"api-reference/pipeline-runs/compare-two-pipeline-runs-delta.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Compares the processed files of two runs of the SAME pipeline (for example yesterday\u0026#x27;s ingest vs today\u0026#x27;s) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (completed, delivered, or acknowledged), and must be visible to the caller. The response carries summary counts plus a single paginated changes list (added entries first, then removed).\">\u003cmeta data-mint-head name=\"application-name\" content=\"FileFeed DOCS\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/filefeed/W3wezMGFSABIA1z-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/filefeed/W3wezMGFSABIA1z-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/filefeed/W3wezMGFSABIA1z-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/filefeed/W3wezMGFSABIA1z-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/filefeed/W3wezMGFSABIA1z-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/filefeed/W3wezMGFSABIA1z-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/filefeed/W3wezMGFSABIA1z-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/filefeed/W3wezMGFSABIA1z-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/filefeed/W3wezMGFSABIA1z-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Compare two pipeline runs (delta) - FileFeed DOCS\">\u003cmeta data-mint-head property=\"og:description\" content=\"Compares the processed files of two runs of the SAME pipeline (for example yesterday\u0026#x27;s ingest vs today\u0026#x27;s) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (completed, delivered, or acknowledged), and must be visible to the caller. The response carries summary counts plus a single paginated changes list (added entries first, then removed).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FileFeed DOCS\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.filefeed.io/api-reference/pipeline-runs/compare-two-pipeline-runs-delta\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://filefeed.mintlify.site/_mintlify/api/og/v2?division=Pipeline+Runs\u0026amp;title=Compare+two+pipeline+runs+%28delta%29\u0026amp;description=Compares+the+processed+files+of+two+runs+of+the+SAME+pipeline+%28for+example+yesterday%27s+ingest+vs+today%27s%29+and+returns+the+records+added+and+removed.+The+diff+is\u0026amp;theme=640fe8724dd2b7139bf3321a\u0026amp;signature=4b5f588fa206d85f502c2d65e6e6c9e6093990c9ae5e1c16493f8bd1fea89f33\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Compare two pipeline runs (delta) - FileFeed DOCS\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Compares the processed files of two runs of the SAME pipeline (for example yesterday\u0026#x27;s ingest vs today\u0026#x27;s) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (completed, delivered, or acknowledged), and must be visible to the caller. The response carries summary counts plus a single paginated changes list (added entries first, then removed).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://filefeed.mintlify.site/_mintlify/api/og/v2?division=Pipeline+Runs\u0026amp;title=Compare+two+pipeline+runs+%28delta%29\u0026amp;description=Compares+the+processed+files+of+two+runs+of+the+SAME+pipeline+%28for+example+yesterday%27s+ingest+vs+today%27s%29+and+returns+the+records+added+and+removed.+The+diff+is\u0026amp;theme=640fe8724dd2b7139bf3321a\u0026amp;signature=4b5f588fa206d85f502c2d65e6e6c9e6093990c9ae5e1c16493f8bd1fea89f33\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/filefeed/W3wezMGFSABIA1z-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FileFeed DOCS\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563ea\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.filefeed.io/api-reference/pipeline-runs/compare-two-pipeline-runs-delta\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/pipeline-runs/compare-two-pipeline-runs-delta.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.filefeed.io/#organization\",\"name\":\"FileFeed DOCS\",\"url\":\"https://docs.filefeed.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/filefeed/isIDiioCZwaquy-g/logo/filefeed-logo-auto.svg?fit=max\u0026auto=format\u0026n=isIDiioCZwaquy-g\u0026q=85\u0026s=008657fa8724c730e7c817572b836db3\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.filefeed.io#website\",\"name\":\"FileFeed DOCS\",\"url\":\"https://docs.filefeed.io\",\"publisher\":{\"@id\":\"https://docs.filefeed.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.filefeed.io/api-reference/pipeline-runs/compare-two-pipeline-runs-delta#webpage\",\"url\":\"https://docs.filefeed.io/api-reference/pipeline-runs/compare-two-pipeline-runs-delta\",\"name\":\"Compare two pipeline runs (delta)\",\"description\":\"Compares the processed files of two runs of the SAME pipeline (for example yesterday's ingest vs today's) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (completed, delivered, or acknowledged), and must be visible to the caller. The response carries summary counts plus a single paginated changes list (added entries first, then removed).\",\"dateModified\":\"2026-06-26T16:49:24.631Z\",\"isPartOf\":{\"@id\":\"https://docs.filefeed.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.filefeed.io/api-reference/pipeline-runs/compare-two-pipeline-runs-delta#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.filefeed.io/api-reference/pipeline-runs/compare-two-pipeline-runs-delta#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.filefeed.io/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pipeline Runs\",\"item\":\"https://docs.filefeed.io/api-reference/pipeline-runs/list-pipeline-runs\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Compare two pipeline runs (delta)\",\"item\":\"https://docs.filefeed.io/api-reference/pipeline-runs/compare-two-pipeline-runs-delta\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.filefeed.io/api-reference/pipeline-runs/compare-two-pipeline-runs-delta#apireference\",\"headline\":\"Compare two pipeline runs (delta)\",\"name\":\"Compare two pipeline runs (delta)\",\"description\":\"Compares the processed files of two runs of the SAME pipeline (for example yesterday's ingest vs today's) and returns the records added and removed. The diff is a whole-record multiset difference — the platform has no record-identity key, so a changed row surfaces as one removed plus one added. Both runs must belong to the same pipeline, must be in a processed state (completed, delivered, or acknowledged), and must be visible to the caller. The response carries summary counts plus a single paginated changes list (added entries first, then removed).\",\"url\":\"https://docs.filefeed.io/api-reference/pipeline-runs/compare-two-pipeline-runs-delta\",\"mainEntityOfPage\":{\"@id\":\"https://docs.filefeed.io/api-reference/pipeline-runs/compare-two-pipeline-runs-delta#webpage\"},\"dateModified\":\"2026-06-26T16:49:24.631Z\",\"publisher\":{\"@id\":\"https://docs.filefeed.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.filefeed.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FileFeed DOCS\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FileFeed DOCS","nav":{"global":{},"tabs":[{"tab":"Guides","icon":"book-open","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","icon":"code","groups":[{"group":"API Reference","pages":[{"title":"API Introduction","href":"/api-reference/introduction"},{"group":"Pipeline Runs","pages":[{"title":"List pipeline runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /pipeline-runs","href":"/api-reference/pipeline-runs/list-pipeline-runs"},{"title":"Get a pipeline run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /pipeline-runs/{id}","href":"/api-reference/pipeline-runs/get-a-pipeline-run"},{"title":"Get pipeline run data (paginated)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /files/pipeline-runs/{id}","href":"/api-reference/pipeline-runs/get-pipeline-run-data-paginated"},{"title":"Acknowledge a pipeline run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /pipeline-runs/{id}/status","href":"/api-reference/pipeline-runs/acknowledge-a-pipeline-run"},{"title":"Reprocess a pipeline run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /files/pipeline-runs/{id}/reprocess","href":"/api-reference/pipeline-runs/reprocess-a-pipeline-run"},{"title":"Get presigned URL for original file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /files/pipeline-runs/{id}/original","href":"/api-reference/pipeline-runs/get-presigned-url-for-original-file"},{"title":"Get presigned URL for processed file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /files/pipeline-runs/{id}/processed","href":"/api-reference/pipeline-runs/get-presigned-url-for-processed-file"},{"title":"Get runs by pipeline","description":null,"deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /pipeline-runs/pipeline/{pipelineId}","href":"/api-reference/pipeline-runs/get-runs-by-pipeline"},{"title":"Compare two pipeline runs (delta)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /pipeline-runs/delta","href":"/api-reference/pipeline-runs/compare-two-pipeline-runs-delta"}]},{"group":"Connections","pages":[{"title":"List connections","description":null,"deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /connections","href":"/api-reference/connections/list-connections"},{"title":"Create connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /connections","href":"/api-reference/connections/create-connection"},{"title":"Get connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /connections/{id}","href":"/api-reference/connections/get-connection"},{"title":"Delete connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /connections/{id}","href":"/api-reference/connections/delete-connection"},{"title":"Update connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /connections/{id}","href":"/api-reference/connections/update-connection"},{"title":"Test SFTP connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /connections/{id}/test-connection","href":"/api-reference/connections/test-sftp-connection"}]},{"group":"Clients (deprecated)","pages":[{"title":"List clients","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json get /clients","href":"/api-reference/clients-deprecated/list-clients"},{"title":"Create client","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json post /clients","href":"/api-reference/clients-deprecated/create-client"},{"title":"Get client","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json get /clients/{id}","href":"/api-reference/clients-deprecated/get-client"},{"title":"Delete client","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json delete /clients/{id}","href":"/api-reference/clients-deprecated/delete-client"},{"title":"Update client","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json patch /clients/{id}","href":"/api-reference/clients-deprecated/update-client"},{"title":"Test SFTP connection","deprecated":true,"version":null,"openapi":"/api-reference/openapi.json post /clients/{id}/test-connection","href":"/api-reference/clients-deprecated/test-sftp-connection"}]},{"group":"Schemas","pages":[{"title":"List schemas","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /schemas","href":"/api-reference/schemas/list-schemas"},{"title":"Create schema","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /schemas","href":"/api-reference/schemas/create-schema"},{"title":"Get schema","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /schemas/{id}","href":"/api-reference/schemas/get-schema"},{"title":"Delete schema","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /schemas/{id}","href":"/api-reference/schemas/delete-schema"},{"title":"Update schema","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /schemas/{id}","href":"/api-reference/schemas/update-schema"},{"title":"Validate data against a schema","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /schemas/{schemaId}/validate","href":"/api-reference/schemas/validate-data-against-a-schema"}]},{"group":"Pipelines","pages":[{"title":"List pipelines","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /pipelines","href":"/api-reference/pipelines/list-pipelines"},{"title":"Create pipeline","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /pipelines","href":"/api-reference/pipelines/create-pipeline"},{"title":"Get pipeline","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /pipelines/{id}","href":"/api-reference/pipelines/get-pipeline"},{"title":"Delete pipeline","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /pipelines/{id}","href":"/api-reference/pipelines/delete-pipeline"},{"title":"Update pipeline","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /pipelines/{id}","href":"/api-reference/pipelines/update-pipeline"},{"title":"Toggle pipeline active status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /pipelines/{id}/toggle-active","href":"/api-reference/pipelines/toggle-pipeline-active-status"}]},{"group":"Webhooks","pages":[{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /webhooks","href":"/api-reference/webhooks/list-webhooks"},{"title":"Create webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /webhooks","href":"/api-reference/webhooks/create-webhook"},{"title":"Get webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /webhooks/{id}","href":"/api-reference/webhooks/get-webhook"},{"title":"Delete webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /webhooks/{id}","href":"/api-reference/webhooks/delete-webhook"},{"title":"Update webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /webhooks/{id}","href":"/api-reference/webhooks/update-webhook"},{"title":"List webhook deliveries","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /webhooks/deliveries","href":"/api-reference/webhooks/list-webhook-deliveries"},{"title":"Subscribe Zapier to pipeline-run events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /webhooks/zapier/pipeline-run-events/subscribe","href":"/api-reference/webhooks/subscribe-zapier-to-pipeline-run-events"},{"title":"Unsubscribe Zapier from pipeline-run events","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /webhooks/zapier/pipeline-run-events/unsubscribe","href":"/api-reference/webhooks/unsubscribe-zapier-from-pipeline-run-events"}]},{"group":"Outbound Uploads","pages":[{"title":"Initialize an outbound multipart upload session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /outbound/uploads","href":"/api-reference/outbound-uploads/initialize-an-outbound-multipart-upload-session"},{"title":"Upload one part for an outbound upload session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /outbound/uploads/{uploadId}/parts/{partNumber}","href":"/api-reference/outbound-uploads/upload-one-part-for-an-outbound-upload-session"},{"title":"Complete outbound multipart upload and trigger processing","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /outbound/uploads/{uploadId}/complete","href":"/api-reference/outbound-uploads/complete-outbound-multipart-upload-and-trigger-processing"},{"title":"Abort outbound multipart upload and cleanup temp parts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /outbound/uploads/{uploadId}/abort","href":"/api-reference/outbound-uploads/abort-outbound-multipart-upload-and-cleanup-temp-parts"},{"title":"Get outbound multipart upload status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /outbound/uploads/{uploadId}","href":"/api-reference/outbound-uploads/get-outbound-multipart-upload-status"}]},{"group":"Documents","pages":[{"title":"Browse documents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /documents/browse","href":"/api-reference/documents/browse-documents"},{"title":"Get document metadata","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /documents/metadata","href":"/api-reference/documents/get-document-metadata"},{"title":"Get a presigned download URL","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /documents/download","href":"/api-reference/documents/get-a-presigned-download-url"},{"title":"Create a presigned upload ticket","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /documents/upload-url","href":"/api-reference/documents/create-a-presigned-upload-ticket"},{"title":"Complete a multipart upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /documents/upload-complete","href":"/api-reference/documents/complete-a-multipart-upload"},{"title":"Abort a multipart upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /documents/upload-abort","href":"/api-reference/documents/abort-a-multipart-upload"},{"title":"Create a folder","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /documents/folders","href":"/api-reference/documents/create-a-folder"},{"title":"Move a file or folder","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /documents/move","href":"/api-reference/documents/move-a-file-or-folder"},{"title":"Rename a file or folder","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /documents/rename","href":"/api-reference/documents/rename-a-file-or-folder"},{"title":"Delete a file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /documents/object","href":"/api-reference/documents/delete-a-file"},{"title":"Delete a folder and its contents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /documents/folder","href":"/api-reference/documents/delete-a-folder-and-its-contents"},{"title":"Delete multiple items","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /documents/bulk-delete","href":"/api-reference/documents/delete-multiple-items"}]},{"group":"Files","pages":[{"title":"Get a processed JSON file by name","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /files/json","href":"/api-reference/files/get-a-processed-json-file-by-name"},{"title":"Search across processed files","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /files/search","href":"/api-reference/files/search-across-processed-files"}]},{"group":"Notifications","pages":[{"title":"Get notification preferences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /notifications/preferences/{clientId}","href":"/api-reference/notifications/get-notification-preferences"},{"title":"Set notification preferences","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /notifications/preferences/{clientId}","href":"/api-reference/notifications/set-notification-preferences"}]}]}]}]},"basePath":"","title":"Compare two pipeline runs (delta) - FileFeed DOCS","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}