> This page is for version 2025-09-18 (default).
> For other versions, use one of these documentation indexes:
> - 2025-09-18 (default): https://apidocs.polytomic.com/2025-09-18/llms.txt
> - 2024-02-08: https://apidocs.polytomic.com/2024-02-08/llms.txt
> - 2023-04-25: https://apidocs.polytomic.com/2023-04-25/llms.txt
> - 2022-12-12: https://apidocs.polytomic.com/2022-12-12/llms.txt
> - 2021-05-23: https://apidocs.polytomic.com/2021-05-23/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://apidocs.polytomic.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://apidocs.polytomic.com/_mcp/server.

# Get Bulk Sync Execution

GET https://app.polytomic.com/api/bulk/syncs/{id}/executions/{exec_id}

Returns a single bulk sync execution, including per-schema execution status.

The response includes a breakdown of each schema (table or object) that
participated in the execution, with its individual status, row counts, and any
error details. This makes it suitable for diagnosing partial failures where
some schemas succeeded while others did not.

Reference: https://apidocs.polytomic.com/api-reference/bulk-sync/executions/get

## Authentication

- `Authorization` header (bearer token, required) — Bearer user API key
- `Authorization` header (basic auth, required) — Basic organization-scoped API key

## Request

### Path parameters

- `id` (string, required) — Unique identifier of the bulk sync
- `exec_id` (string, required) — Unique identifier of the execution

## Response

### 200

OK

- `data` (BulkSyncExecution, optional) — The bulk sync execution

## Errors

### 404 Not Found Error

Not Found

- `key` (string, optional) — Machine-readable error key, when the error has one
- `message` (string, optional) — Error message
- `metadata` (map from string to any, optional) — Structured details about the error, when available
- `status` (integer, optional) — HTTP status code

## Types

### BulkSyncExecution

- `completed_at` (datetime, optional, nullable) — When the execution finished
- `created_at` (datetime, optional) — When the execution was created
- `error_count` (long, optional) — Total errors across all schemas
- `fetch_mode` (enum, optional) — Selective fetch mode the execution runs with
  - Allowed values: `none`, `incremental`, `full`
- `id` (string, optional) — Bulk sync execution ID
- `is_partial` (boolean, optional) — Whether the execution syncs only a selected subset of schemas
- `is_resync` (boolean, optional) — Whether the execution is a resync
- `is_test` (boolean, optional) — Whether the execution is a test execution
- `output_disposition` (enum, optional) — How the destination was handled during this execution (retain, truncate, rebuild)
  - Allowed values: `retain`, `truncate`, `rebuild`
- `record_count` (long, optional) — Total records processed across all schemas
- `schemas` (list of BulkSyncSchemaExecution, optional, nullable) — Per-schema executions within this execution
- `started_at` (datetime, optional, nullable) — When the execution started
- `status` (enum, optional) — Status of the execution
  - Allowed values: `created`, `scheduled`, `running`, `exporting`, `canceling`, `canceled`, `completed`, `failed`, `processing`, `errors`, `interrupted`, `completed_with_cancellations`
- `status_message` (string, optional) — Detail about the execution's status, such as an error message
- `type` (string, optional) — What triggered the execution
- `updated_at` (datetime, optional) — When the execution was last updated
- `version` (string, optional) — Polytomic version which last ran this execution
- `warning_count` (long, optional) — Total warnings across all schemas

### BulkSyncSchemaExecution

- `completed_at` (datetime, optional, nullable) — When the schema execution finished
- `created_at` (datetime, optional) — When the schema execution was created
- `error_count` (long, optional) — Number of errors for this schema
- `output_name` (string, optional) — Name of the destination object the schema was written to, set only once the schema execution completes
- `record_count` (long, optional) — Number of records processed for this schema
- `schema` (string, optional) — Source schema ID
- `started_at` (datetime, optional, nullable) — When the schema execution started
- `status` (enum, optional) — Status of the schema execution
  - Allowed values: `created`, `scheduled`, `running`, `exporting`, `canceled`, `completed`, `failed`, `interrupted`, `processing`
- `status_message` (string, optional) — Detail about the schema execution's status, such as an error message
- `updated_at` (datetime, optional) — When the schema execution was last updated
- `version` (string, optional) — Polytomic version which last ran this schema execution
- `warning_count` (long, optional) — Number of warnings for this schema

## Examples

**Response**

```json
{
  "data": {
    "completed_at": "2023-04-25T12:00:00Z",
    "created_at": "2023-04-25T12:00:00Z",
    "error_count": 0,
    "fetch_mode": "none",
    "id": "248df4b7-aa70-47b8-a036-33ac447e668d",
    "is_partial": false,
    "is_resync": false,
    "is_test": false,
    "output_disposition": "retain",
    "record_count": 1000,
    "schemas": [
      {
        "completed_at": "2023-04-25T12:00:00Z",
        "created_at": "2023-04-25T12:00:00Z",
        "error_count": 0,
        "output_name": "contact",
        "record_count": 1000,
        "schema": "contact",
        "started_at": "2023-04-25T12:00:00Z",
        "status": "created",
        "status_message": "string",
        "updated_at": "2023-04-25T12:00:00Z",
        "version": "rel2026.08.05.06~1a2b3c4",
        "warning_count": 0
      }
    ],
    "started_at": "2023-04-25T12:00:00Z",
    "status": "created",
    "status_message": "string",
    "type": "scheduled",
    "updated_at": "2023-04-25T12:00:00Z",
    "version": "rel2026.08.05.06~1a2b3c4",
    "warning_count": 0
  }
}
```

**SDK Code**

```python
import requests

url = "https://app.polytomic.com/api/bulk/syncs/248df4b7-aa70-47b8-a036-33ac447e668d/executions/248df4b7-aa70-47b8-a036-33ac447e668d"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://app.polytomic.com/api/bulk/syncs/248df4b7-aa70-47b8-a036-33ac447e668d/executions/248df4b7-aa70-47b8-a036-33ac447e668d';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://app.polytomic.com/api/bulk/syncs/248df4b7-aa70-47b8-a036-33ac447e668d/executions/248df4b7-aa70-47b8-a036-33ac447e668d"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://app.polytomic.com/api/bulk/syncs/248df4b7-aa70-47b8-a036-33ac447e668d/executions/248df4b7-aa70-47b8-a036-33ac447e668d")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://app.polytomic.com/api/bulk/syncs/248df4b7-aa70-47b8-a036-33ac447e668d/executions/248df4b7-aa70-47b8-a036-33ac447e668d")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://app.polytomic.com/api/bulk/syncs/248df4b7-aa70-47b8-a036-33ac447e668d/executions/248df4b7-aa70-47b8-a036-33ac447e668d', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://app.polytomic.com/api/bulk/syncs/248df4b7-aa70-47b8-a036-33ac447e668d/executions/248df4b7-aa70-47b8-a036-33ac447e668d");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://app.polytomic.com/api/bulk/syncs/248df4b7-aa70-47b8-a036-33ac447e668d/executions/248df4b7-aa70-47b8-a036-33ac447e668d")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```