---
title: "Update S3 Sync"
method: PATCH
path: "/v2/syncs/{sync_id}"
tags: ["sync"]
---

# Update S3 Sync

`PATCH /v2/syncs/{sync_id}`

Update a sync's prefix, glob filters, deletion policy, cadence, custom metadata, or status (pause/resume). Only provided fields change.

## Path parameters

- `sync_id` string, required

## Headers

- `authorization` string, nullable

## Request body

- S3SyncUpdateRequestDocs
  - `prefix` string — New key prefix to scope the sync.
  - `include_patterns` string[] — Replacement include glob patterns.
  - `exclude_patterns` string[] — Replacement exclude glob patterns.
  - `deletion_policy` 'mirror' | 'archive' | 'ignore' — New deletion-propagation policy.
  - `status` 'active' | 'paused' — 'paused' stops syncing without deleting the sync; 'active' resumes.
  - `custom_metadata` object — Replacement static metadata.
  - `sync_interval_minutes` integer, nullable — New cadence in minutes. MINIMUM 5 (below 5 clamps to 5; >=5 honored exactly). null = manual. Read the sync back for the effective value.

## Response `200`

Successful Response

- S3SyncConnectorResponseDocs
  - `sync_id` string
  - `collection_name` string
  - `bucket` string
  - `prefix` string
  - `region` string
  - `storage_type` 's3' | 'gcs' | 'r2' | 'supabase' | 'backblaze' — The sync's cloud storage type. Returned by the list endpoint (GET /v2/syncs) only; other sync endpoints omit this field.
  - `auth_method` 'iam_role' | 'access_key' | 'service_account' — How the sync authenticates to the bucket: 'iam_role' (AWS cross-account assume-role), 'access_key' (S3-compatible key pair), or 'service_account' (GCS service-account JSON).
  - `endpoint_url` string, nullable — S3-compatible endpoint URL (access-key syncs on non-AWS providers); null for AWS S3. Returned by the list endpoint (GET /v2/syncs) only; other sync endpoints omit this field.
  - `processing_type` 'advanced' | 'basic'
  - `include_patterns` string[]
  - `exclude_patterns` string[]
  - `deletion_policy` 'mirror' | 'archive' | 'ignore'
  - `status` 'active' | 'paused' | 'inactive'
  - `secret_set` boolean — True once an event-webhook secret has been minted.
  - `sns_subscribe_url` string, nullable — SNS subscribe URL; only surfaced by the subscribe-webhook endpoint.
  - `last_backfill_job_id` string, nullable
  - `last_reconcile_at` string, nullable
  - `sync_interval_minutes` integer, nullable — Effective (already-clamped) cadence; null = manual.
  - `next_sync_at` integer, nullable — Epoch ms of the next due scheduled reconcile.
  - `sync_state` 'idle' | 'running' | 'error'
  - `last_sync_at` integer, nullable
  - `last_sync_error` string, nullable
  - `created_at` string
  - `updated_at` string, nullable

---

[API](https://skmtc.dev/runcaptain/apis/api-reference.md) · [All operations](https://skmtc.dev/runcaptain/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/runcaptain/api-reference/revisions/fe4649e3f4aa/schema)
