> ## Documentation Index
> Fetch the complete documentation index at: https://sequin.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a sync

> This endpoint updates a sync.

## Request parameters

<Note>You cannot update the `credential`, `provider`, or `stream_id` of an existing sync.</Note>

<ParamField path="id" type="string" required>
  The ID of the sync.
</ParamField>

<ParamField body="name" type="string">
  Name of the sync.
</ParamField>

<ParamField body="collection_ids" type="array">
  IDs of the collections to sync.
</ParamField>

<ParamField body="rate_limit" type="object">
  Rate limit of the sync. Learn more about the rate limit object. The rate limit object is not required if you're using Sequin OAuth for certain providers. If you don't specify a rate limit, Sequin will use a reasonable default according to your provider.
</ParamField>

<ParamField body="status" type="string">
  Status of the sync. Possible values are `active` and `disabled`.
</ParamField>

<ParamField body="max_age_days" type="number">
  By default, Sequin syncs all data from the API regardless of age. When you set `max_age_days`, Sequin will only sync and retain records that have been created or updated in the last `max_age_days` days.

  Defaults to `null`, which means no age limit.
</ParamField>

<ParamField body="sync_frequency" type="string">
  One of `continuous` or `4h`. If `continuous`, Sequin will run a continuous sync to sync data as fast as possible from the API. If `4h`, Sequin will sync data every 4 hours.
</ParamField>

<ParamField body="metadata" type="object">
  Metadata for the sync. This is a JSON object that you can use to store any additional information you want to associate with the sync.
</ParamField>

<RequestExample>
  ```shell theme={null}
  curl --request PATCH \
    --url https://api.sequin.io/v1/syncs/c906b4a4-0cda-4f46-bd80-255f570c195d \
    --header 'Authorization: Bearer YOUR_API_TOKEN' \
    --header 'Content-Type: application/json' \
    --data '{
      "name": "Choam Corp - Stripe Production",
      "collection_ids": ["stripe:customer", "stripe:invoice"],
      "status": "active",
      "rate_limit": {
        "allowed_requests": 100,
        "interval": 60,
        "max_concurrent_requests": 0
      },
      "metadata": { "custom_property": 42 }
    }'
  ```
</RequestExample>

## Response fields

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "id": "c906b4a4-0cda-4f46-bd80-255f570c195d",
    "provider": "stripe",
    "stream_id": "f0f70b52-5243-489c-879b-a1ae3f02abfd",
    "name": "Choam Corp - HubSpot Production",
    "status": "active",
    "org_id": "75958cea-c981-4116-9a0d-c1e99e826688",
    "health": {
      "status": "healthy",
      "sync_id": "c906b4a4-0cda-4f46-bd80-255f570c195d"
    },
    "collection_ids": ["hubspot:contact", "hubspot:company"],
    "rate_limit": {
      "allowed_requests": 1000,
      "interval": 60,
      "max_concurrent_requests": 0
    },
    "credential_id": "27879937-bd5d-490b-a943-edf486b04300",
    "credential": {
      "id": "27879937-bd5d-490b-a943-edf486b04300",
      "provider": "stripe",
      "properties": {
        "kind": "stripe_key",
        "name": "TEST ACCOUNT",
        "secret": "***********",
        "test": true
      },
      "oauth_app_id": null,
      "oauth_app": {
        "kind": "sequin"
      },
      "metadata": { "custom_credential_property": 42 },
      "created_at": "2023-12-15 01:29:29",
      "updated_at": "2023-12-15 01:29:29"
    },
    "max_age_days": 365,
    "sync_frequency": "continuous",
    "initial_backfill_completed_at": "2023-12-15 01:29:29",
    "metadata": { "custom_property": 42 },
    "created_at": "2023-12-15 01:29:29",
    "updated_at": "2023-12-15 01:29:29"
  }
  ```
</ResponseExample>

<ResponseField name="id" type="string">
  ID of the sync.
</ResponseField>

<ResponseField name="provider" type="string">
  Provider of the sync (e.g. `github`, `stripe`, etc). See [the list of possible values](/management-api/objects#sync-providers).
</ResponseField>

<ResponseField name="stream_id" type="string">
  ID of the stream the sync writes to.
</ResponseField>

<ResponseField name="org_id" type="string">
  ID of your organization.
</ResponseField>

<ResponseField name="name" type="string">
  Name of the sync, which you provide on create or update.
</ResponseField>

<ResponseField name="status" type="string">
  Whether the sync is `active` or `disabled`.
</ResponseField>

<ResponseField name="health" type="object">
  Health of the sync. Learn more about [the health object](/management-api/objects#health).
</ResponseField>

<ResponseField name="collection_ids" type="array">
  IDs of the [collections](/management-api/collections/list) that are synced by this sync.
</ResponseField>

<ResponseField name="rate_limit" type="object">
  Rate limit of the sync. Learn more about [the rate limit object](/management-api/objects#rate-limits).
</ResponseField>

<ResponseField name="credential" type="object">
  Credential for the sync. This will usually consist of an access token and a refresh token Sequin uses to make requests. This object is polymorphic, see [the list of possible shapes](/management-api/objects#credential-properties).
</ResponseField>

<ResponseField name="max_age_days" type="number">
  By default, Sequin syncs all data from the API regardless of age. When you set `max_age_days`, Sequin will only sync and retain records that have been created or updated in the last `max_age_days` days.

  Defaults to `null`, which means no age limit.
</ResponseField>

<ResponseField name="sync_frequency" type="string">
  One of `continuous` or `4h`. If `continuous`, Sequin will run a continuous sync to sync data as fast as possible from the API. If `4h`, Sequin will sync data every 4 hours.
</ResponseField>

<ResponseField name="initial_backfill_completed_at" type="string">
  Timestamp of when the initial backfill was completed, in ISO 8601 format. Is `null` if the initial backfill has not yet completed.
</ResponseField>

<ResponseField name="metadata" type="object">
  Metadata for the sync. This is a JSON object that you can use to store any additional information you want to associate with the sync.
</ResponseField>

<ResponseField name="created_at" type="string">
  Timestamp of when the sync was created, in ISO 8601 format.
</ResponseField>

<ResponseField name="updated_at" type="string">
  Timestamp of when the sync was last updated, in ISO 8601 format.
</ResponseField>
