curl --request POST \
--url https://api.example.com/v1/data-syncs/{sync_id}/snapshots \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"source_operation_id": "<string>",
"source_format": "SHOPIFY_GRAPHQL_JSONL_2026_01",
"expected_size_bytes": 4503599627370495,
"sync_generation": "<string>",
"staged_pages": false
}
'import requests
url = "https://api.example.com/v1/data-syncs/{sync_id}/snapshots"
payload = {
"source_operation_id": "<string>",
"source_format": "SHOPIFY_GRAPHQL_JSONL_2026_01",
"expected_size_bytes": 4503599627370495,
"sync_generation": "<string>",
"staged_pages": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
source_operation_id: '<string>',
source_format: 'SHOPIFY_GRAPHQL_JSONL_2026_01',
expected_size_bytes: 4503599627370495,
sync_generation: '<string>',
staged_pages: false
})
};
fetch('https://api.example.com/v1/data-syncs/{sync_id}/snapshots', 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://api.example.com/v1/data-syncs/{sync_id}/snapshots",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'source_operation_id' => '<string>',
'source_format' => 'SHOPIFY_GRAPHQL_JSONL_2026_01',
'expected_size_bytes' => 4503599627370495,
'sync_generation' => '<string>',
'staged_pages' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/data-syncs/{sync_id}/snapshots"
payload := strings.NewReader("{\n \"source_operation_id\": \"<string>\",\n \"source_format\": \"SHOPIFY_GRAPHQL_JSONL_2026_01\",\n \"expected_size_bytes\": 4503599627370495,\n \"sync_generation\": \"<string>\",\n \"staged_pages\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/data-syncs/{sync_id}/snapshots")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"source_operation_id\": \"<string>\",\n \"source_format\": \"SHOPIFY_GRAPHQL_JSONL_2026_01\",\n \"expected_size_bytes\": 4503599627370495,\n \"sync_generation\": \"<string>\",\n \"staged_pages\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/data-syncs/{sync_id}/snapshots")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"source_operation_id\": \"<string>\",\n \"source_format\": \"SHOPIFY_GRAPHQL_JSONL_2026_01\",\n \"expected_size_bytes\": 4503599627370495,\n \"sync_generation\": \"<string>\",\n \"staged_pages\": false\n}"
response = http.request(request)
puts response.read_body{
"data": {
"snapshot": {
"id": "<string>",
"mode": "REPLACE",
"status": "CREATING",
"sourceWatermark": "<string>",
"expectedSizeBytes": "<string>",
"expectedSha256": "<string>",
"rowsBefore": "<string>",
"rowsAfter": "<string>",
"rowsInserted": "<string>",
"rowsUpdated": "<string>",
"rowsDeleted": "<string>",
"rowsSkipped": "<string>",
"tableId": "<string>",
"errorCode": "<string>",
"errorMessage": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"completedAt": "<string>"
},
"replayed": true,
"uploadUrl": "<string>",
"expiresInSeconds": 123
}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}Create an authoritative provider snapshot upload
Create a generation-fenced atomic replacement from one provider bulk operation.
Use direct upload for an immutable provider result URL, or staged pages for provider-owned cursor fanout. Replaying the same operation is idempotent.
curl --request POST \
--url https://api.example.com/v1/data-syncs/{sync_id}/snapshots \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"source_operation_id": "<string>",
"source_format": "SHOPIFY_GRAPHQL_JSONL_2026_01",
"expected_size_bytes": 4503599627370495,
"sync_generation": "<string>",
"staged_pages": false
}
'import requests
url = "https://api.example.com/v1/data-syncs/{sync_id}/snapshots"
payload = {
"source_operation_id": "<string>",
"source_format": "SHOPIFY_GRAPHQL_JSONL_2026_01",
"expected_size_bytes": 4503599627370495,
"sync_generation": "<string>",
"staged_pages": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
source_operation_id: '<string>',
source_format: 'SHOPIFY_GRAPHQL_JSONL_2026_01',
expected_size_bytes: 4503599627370495,
sync_generation: '<string>',
staged_pages: false
})
};
fetch('https://api.example.com/v1/data-syncs/{sync_id}/snapshots', 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://api.example.com/v1/data-syncs/{sync_id}/snapshots",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'source_operation_id' => '<string>',
'source_format' => 'SHOPIFY_GRAPHQL_JSONL_2026_01',
'expected_size_bytes' => 4503599627370495,
'sync_generation' => '<string>',
'staged_pages' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/data-syncs/{sync_id}/snapshots"
payload := strings.NewReader("{\n \"source_operation_id\": \"<string>\",\n \"source_format\": \"SHOPIFY_GRAPHQL_JSONL_2026_01\",\n \"expected_size_bytes\": 4503599627370495,\n \"sync_generation\": \"<string>\",\n \"staged_pages\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/data-syncs/{sync_id}/snapshots")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"source_operation_id\": \"<string>\",\n \"source_format\": \"SHOPIFY_GRAPHQL_JSONL_2026_01\",\n \"expected_size_bytes\": 4503599627370495,\n \"sync_generation\": \"<string>\",\n \"staged_pages\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/data-syncs/{sync_id}/snapshots")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"source_operation_id\": \"<string>\",\n \"source_format\": \"SHOPIFY_GRAPHQL_JSONL_2026_01\",\n \"expected_size_bytes\": 4503599627370495,\n \"sync_generation\": \"<string>\",\n \"staged_pages\": false\n}"
response = http.request(request)
puts response.read_body{
"data": {
"snapshot": {
"id": "<string>",
"mode": "REPLACE",
"status": "CREATING",
"sourceWatermark": "<string>",
"expectedSizeBytes": "<string>",
"expectedSha256": "<string>",
"rowsBefore": "<string>",
"rowsAfter": "<string>",
"rowsInserted": "<string>",
"rowsUpdated": "<string>",
"rowsDeleted": "<string>",
"rowsSkipped": "<string>",
"tableId": "<string>",
"errorCode": "<string>",
"errorMessage": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"completedAt": "<string>"
},
"replayed": true,
"uploadUrl": "<string>",
"expiresInSeconds": 123
}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
Configured source sync receiving the page.
1Body
One completed provider bulk operation ready for streaming handoff.
Stable provider operation or fanout-manifest identifier used to make snapshot creation idempotent.
1 - 255Versioned provider export format that determines server-side parsing and schema validation.
"SHOPIFY_GRAPHQL_JSONL_2026_01"Exact bulk-result byte size, or zero when staged pages supply the authoritative manifest.
0 <= x <= 9007199254740991Current installed recipe generation; stale generations cannot create or commit a snapshot.
1 - 255Whether the snapshot is assembled from immutable numbered pages instead of one direct upload.
Response
Successful Response
Authoritative snapshot creation result.
Show child attributes
Show child attributes