> ## 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.

# Create source connector

> Create a new source connector using the provided configuration.

## Body

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

<ParamField body="type" type="string" required>
  Connector type. One of: `azure`, `box`, `confluence`, `couchbase`, `databricks_volumes`, `dropbox`, `elasticsearch`, `gcs`, `google_drive`, `kafka-cloud`, `mongodb`, `onedrive`, `opensearch`, `outlook`, `postgres`, `s3`, `salesforce`, `sharepoint`, `snowflake`, `teradata`, `jira`, `zendesk`.
</ParamField>

<ParamField body="config" type="object" required>
  Connector configuration. Required 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 POST \
    --url "${UNSTRUCTURED_API_URL}/api/v1/sources/" \
    --header "unstructured-api-key: ${UNSTRUCTURED_API_KEY}" \
    --header "Content-Type: application/json" \
    --data '{
      "name": "My S3 Source",
      "type": "s3",
      "config": {
        "remote_url": "s3://my-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 CreateSourceRequest
  from unstructured_client.models.shared import CreateSourceConnector

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

  response = client.sources.create_source(
      request=CreateSourceRequest(
          create_source_connector=CreateSourceConnector(
              name="My S3 Source",
              type="s3",
              config={
                  "remote_url": "s3://my-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 CreateSourceRequest
  from unstructured_client.models.shared import CreateSourceConnector

  async def create_source():
      client = UnstructuredClient(
          api_key_auth=os.getenv("UNSTRUCTURED_API_KEY"),
          server_url=os.getenv("UNSTRUCTURED_API_URL"),
      )
      response = await client.sources.create_source_async(
          request=CreateSourceRequest(
              create_source_connector=CreateSourceConnector(
                  name="My S3 Source",
                  type="s3",
                  config={
                      "remote_url": "s3://my-bucket/input/",
                      "access_key_id": "AKIAIOSFODNN7EXAMPLE",
                      "secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
                      "recursive": True,
                  },
              )
          )
      )
      print(response)

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

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