Data Diffs
Get a data diff summary
GET
/
api
/
v1
/
datadiffs
/
{datadiff_id}
/
summary_results
Get a data diff summary
curl --request GET \
--url https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results \
--header 'Authorization: <api-key>'import requests
url = "https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"dependencies": [
{
"data_source_id": 123,
"data_source_type": "<string>",
"item_type": "<string>",
"name": "<string>",
"path": [
"<string>"
],
"uid": "<string>",
"popularity": 123,
"primary_key": "<string>",
"query_type": "<string>",
"raw_sql": "<string>",
"remote_id": "<string>",
"table_name": "<string>"
}
],
"materialized_results": {
"diff": [
{
"data_source_id": 123,
"is_sampled": true,
"path": [
"<string>"
]
}
],
"duplicates1": [
{
"data_source_id": 123,
"is_sampled": true,
"path": [
"<string>"
]
}
],
"duplicates2": [
{
"data_source_id": 123,
"is_sampled": true,
"path": [
"<string>"
]
}
],
"exclusives": [
{
"data_source_id": 123,
"is_sampled": true,
"path": [
"<string>"
]
}
]
},
"pks": {
"distincts": [
123,
123
],
"dupes": [
123,
123
],
"exclusives": [
123,
123
],
"nulls": [
123,
123
],
"total_rows": [
123,
123
]
},
"schema": {
"column_counts": [
123,
123
],
"column_reorders": 123,
"column_type_differs": [
"<string>"
],
"column_type_mismatches": 123,
"columns_mismatched": [
123,
123
],
"exclusive_columns": [
[
"<string>"
]
]
},
"exclusives_profile": {
"t1": {
"columns": {}
},
"t2": {
"columns": {}
}
},
"values": {
"columns_diff_stats": [
{
"column_name": "<string>",
"match": 123,
"values_different": 123,
"values_different_estimate": {
"confidence": 123,
"estimate": 123,
"interval": {
"max": 123,
"min": 123
},
"value": 123
}
}
],
"columns_with_differences": 123,
"compared_columns": 123,
"rows_with_differences": 123,
"total_rows": 123,
"total_values": 123,
"values_with_differences": 123
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Authorizations
Use the 'Authorization' header with the format 'Key '
Path Parameters
Response
Successful Response
- ApiDataDiffSummaryForDone
- ApiCrossDataDiffSummaryForDone
- ApiDataDiffSummaryForFailed
- ApiDataDiffSummaryForRunning
- InternalApiDataDiffDependencies
Show child attributes
Show child attributes
Results of the diff, materialized into tables.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Available options:
done, success Distribution statistics for exclusive rows (rows that exist in one table but not the other). Includes histograms and enum distributions for primary key columns. Only available for diffs computed after October 2025.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
⌘I
Get a data diff summary
curl --request GET \
--url https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results \
--header 'Authorization: <api-key>'import requests
url = "https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.datafold.com/api/v1/datadiffs/{datadiff_id}/summary_results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"dependencies": [
{
"data_source_id": 123,
"data_source_type": "<string>",
"item_type": "<string>",
"name": "<string>",
"path": [
"<string>"
],
"uid": "<string>",
"popularity": 123,
"primary_key": "<string>",
"query_type": "<string>",
"raw_sql": "<string>",
"remote_id": "<string>",
"table_name": "<string>"
}
],
"materialized_results": {
"diff": [
{
"data_source_id": 123,
"is_sampled": true,
"path": [
"<string>"
]
}
],
"duplicates1": [
{
"data_source_id": 123,
"is_sampled": true,
"path": [
"<string>"
]
}
],
"duplicates2": [
{
"data_source_id": 123,
"is_sampled": true,
"path": [
"<string>"
]
}
],
"exclusives": [
{
"data_source_id": 123,
"is_sampled": true,
"path": [
"<string>"
]
}
]
},
"pks": {
"distincts": [
123,
123
],
"dupes": [
123,
123
],
"exclusives": [
123,
123
],
"nulls": [
123,
123
],
"total_rows": [
123,
123
]
},
"schema": {
"column_counts": [
123,
123
],
"column_reorders": 123,
"column_type_differs": [
"<string>"
],
"column_type_mismatches": 123,
"columns_mismatched": [
123,
123
],
"exclusive_columns": [
[
"<string>"
]
]
},
"exclusives_profile": {
"t1": {
"columns": {}
},
"t2": {
"columns": {}
}
},
"values": {
"columns_diff_stats": [
{
"column_name": "<string>",
"match": 123,
"values_different": 123,
"values_different_estimate": {
"confidence": 123,
"estimate": 123,
"interval": {
"max": 123,
"min": 123
},
"value": 123
}
}
],
"columns_with_differences": 123,
"compared_columns": 123,
"rows_with_differences": 123,
"total_rows": 123,
"total_values": 123,
"values_with_differences": 123
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}