---
title: 同期 API
description: ソースの同期を開始し、イベントストリームを追跡して、安全に再接続します。また、処理の受付と最終状態を区別します。
species: reference
---
# 同期 API

同期の開始には `apps:manage` が必要です。進捗ストリームの読み取りには `data:read` が必要です。

## 同期を開始

```endpoint
POST /sources/{id}/sync
```

ソースの同期リクエストを受け付け、非同期リソースを返します。受付はリクエストの記録を意味し、テーブルのコミットが完了したことを意味しません。

一時停止中または削除済みのソースは拒否されます。ソースですでに処理が進行中の場合は、重複する実行を開始せず、レスポンスで競合を通知します。

レスポンスを受信できずに再試行する場合は、`Idempotency-Key` を使用してください。キーは、1 つのソースとリクエスト本文に紐づけてください。

## 進捗をストリーミング

```endpoint
GET /sources/{id}/sync/stream
```

Server-Sent Events ストリームは、進捗と永続化された同期結果を通知します。接続が閉じられた場合は、`Last-Event-ID` を使って再接続してください。再接続後は、ソースリソースの最新の同期を、最終的な判断の根拠にしてください。

イベントには、テーブル名、フェーズ、完了数と合計数、終了結果が含まれる場合があります。クライアントは、追加されたイベントフィールドを無視する必要があります。

## 完了後

成功を示す終了イベントは、その実行のテーブルのコミットが完了したことを意味します。関連するテーブルが異なる時刻に完了する場合があるため、データの鮮度が重要な自動化では、終了状態になった後、コミットされた `_synced_at` の値またはカタログを確認してください。

実行が失敗した場合は[ソースのエラーログ](/docs/api/logs)を、マージと削除の意味については[同期](/docs/concepts/syncing)を参照してください。
