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

# Update source connector

> Update the configuration of an existing source connector.

You must specify all of the settings for the connector, even for settings that are not changing.

You can change any of the connector's settings except for its `name`and `type`.

## Path parameters

<ParamField path="source_id" type="string" required>
  The unique identifier of the source connector.
</ParamField>

## Body

<ParamField body="name" type="string">
  New source connector name.
</ParamField>

<ParamField body="config" type="object">
  Updated connector configuration. Fields vary by connector type.

  For the specific settings to include for a connector, see the entry for that connector in [Sources](/api-reference/workflow/sources/overview).
</ParamField>

## Response

<ResponseField name="id" type="string" required>
  Unique identifier for the source connector.
</ResponseField>

<ResponseField name="name" type="string" required>
  Source connector name.
</ResponseField>

<ResponseField name="type" type="string" required>
  Connector type.
</ResponseField>

<ResponseField name="config" type="object" required>
  Connector configuration. Fields vary by connector `type`.

  For the specific settings to include for a specific connector, see the entry for that connector in [Sources](/api-reference/workflow/sources/overview).
</ResponseField>

<ResponseField name="created_at" type="string" required>
  ISO 8601 timestamp when the connector was created.
</ResponseField>

<ResponseField name="updated_at" type="string">
  ISO 8601 timestamp when the connector was last updated.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request PUT \
    --url "${UNSTRUCTURED_API_URL}/api/v1/sources/a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d" \
    --header "unstructured-api-key: ${UNSTRUCTURED_API_KEY}" \
    --header "Content-Type: application/json" \
    --data '{
      "name": "My Updated S3 Source",
      "config": {
        "remote_url": "s3://my-new-bucket/input/",
        "access_key_id": "AKIAIOSFODNN7EXAMPLE",
        "secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "recursive": true
      }
    }'
  ```

  ```python Python SDK theme={null}
  import os
  from unstructured_client import UnstructuredClient
  from unstructured_client.models.operations import UpdateSourceRequest
  from unstructured_client.models.shared import UpdateSourceConnector

  client = UnstructuredClient(
      api_key_auth=os.getenv("UNSTRUCTURED_API_KEY"),
      server_url=os.getenv("UNSTRUCTURED_API_URL"),
  )

  response = client.sources.update_source(
      request=UpdateSourceRequest(
          source_id="a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
          update_source_connector=UpdateSourceConnector(
              name="My Updated S3 Source",
              config={
                  "remote_url": "s3://my-new-bucket/input/",
                  "access_key_id": "AKIAIOSFODNN7EXAMPLE",
                  "secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
                  "recursive": True,
              },
          )
      )
  )
  print(response)
  ```

  ```python Python SDK (async) theme={null}
  import asyncio
  import os
  from unstructured_client import UnstructuredClient
  from unstructured_client.models.operations import UpdateSourceRequest
  from unstructured_client.models.shared import UpdateSourceConnector

  async def update_source():
      client = UnstructuredClient(
          api_key_auth=os.getenv("UNSTRUCTURED_API_KEY"),
          server_url=os.getenv("UNSTRUCTURED_API_URL"),
      )
      response = await client.sources.update_source_async(
          request=UpdateSourceRequest(
              source_id="a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
              update_source_connector=UpdateSourceConnector(
                  name="My Updated S3 Source",
                  config={
                      "remote_url": "s3://my-new-bucket/input/",
                      "access_key_id": "AKIAIOSFODNN7EXAMPLE",
                      "secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
                      "recursive": True,
                  },
              )
          )
      )
      print(response)

  asyncio.run(update_source())
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "id": "a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
    "name": "My Updated S3 Source",
    "type": "s3",
    "config": {
      "remote_url": "s3://my-new-bucket/input/",
      "access_key_id": "AKIAIOSFODNN7EXAMPLE",
      "secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
      "recursive": true
    },
    "created_at": "2026-01-01T00:00:00Z",
    "updated_at": "2026-04-29T10:00:00Z"
  }
  ```
</ResponseExample>
