---
title: "Create GCS Sync"
method: POST
path: "/v2/collections/{collection_name}/sync/gcs"
tags: ["sync"]
---

# Create GCS Sync

`POST /v2/collections/{collection_name}/sync/gcs`

Create a Google Cloud Storage Sync for a collection and start the initial backfill. GCS authenticates with a service-account JSON (stored in Secrets Manager, never returned), so there is no region, endpoint_url, or access-key pair. Returns the sync; indexing runs asynchronously.

## Path parameters

- `collection_name` string, required

## Headers

- `authorization` string, nullable

## Request body

- GCSSyncCreateRequestDocs — Create a Google Cloud Storage Sync. GCS authenticates with a service-account JSON (a single credential blob), not an access-key pair or an assume-role, so there is no auth, region, or endpoint_url here. The JSON is stored in Secrets Manager, never on the sync.
  - `bucket` string, required — GCS bucket to keep in sync with the collection.
  - `prefix` string — Object-name prefix to scope the sync (e.g. 'docs/2024/'). Empty syncs the whole bucket.
  - `service_account_json` string, required — Google service-account key JSON (type='service_account') with read access to the bucket (roles/storage.objectViewer). Stored securely in Secrets Manager, never returned.
  - `processing_type` 'advanced' | 'basic', required — Parsing tier. 'advanced' = full document understanding; 'basic' = faster/cheaper.
  - `include_patterns` string[] — Glob patterns; only matching object names are synced.
  - `exclude_patterns` string[] — Glob patterns; matching object names are excluded.
  - `deletion_policy` 'mirror' | 'archive' | 'ignore' — How to propagate objects removed from GCS: `mirror` removes them from the collection so they no longer appear in search; `archive` keeps the document's content but marks it archived, excluded from search by default and surfaced with `include_archived: true`; `ignore` leaves the indexed copy in place.
  - `metadata_mapping` object, nullable — Maps a GCS object metadata key to a Captain metadata field name.
  - `custom_metadata` GcsSyncCreateRequestDocsCustomMetadata — Static metadata applied to every synced document.
  - `sync_interval_minutes` integer, nullable — Scheduled reconcile cadence in minutes (minimum 5; below 5 clamps to 5; null = manual).

## Response `201`

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)
