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

# Connect Migration Source

> Attach a provider credential to an existing migration run.

# Connect Migration Source

Stores the source credential for the run connection. Discovery and imports are queued separately.

## Request

<ParamField path="runId" type="string" required>
  Migration run ID.
</ParamField>

<ParamField body="provider" type="string" required>
  Provider adapter ID. Supported values include `active-campaign`, `brevo`, `constant-contact`, `customer-io`, `drip`, `hubspot`, `kit`, `klaviyo`, `loops`, `mailchimp`, `mailerlite`, `mailjet`, `omnisend`, `resend`, and `sendgrid`.
</ParamField>

<ParamField body="credential" type="string" required>
  Provider API credential.
</ParamField>

<ParamField body="providerLabel" type="string">
  Optional display label for manual providers.
</ParamField>

```bash theme={null}
curl -X POST "https://api.sequenzy.com/api/v1/migrations/run_123/connect-source" \
  -H "Authorization: Bearer SEQUENZY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"provider":"mailchimp","credential":"PROVIDER_API_KEY"}'
```

## Responses

<ResponseExample>
  ```json 200 theme={null}
  {"success":true,"data":{"id":"run_123","status":"pending","provider":"mailchimp"}}
  ```

  ```json 400 theme={null}
  {"success":false,"error":"Migration provider is not available"}
  ```

  ```json 401 theme={null}
  {"error":"Invalid API key"}
  ```

  ```json 404 theme={null}
  {"error":"Migration run not found"}
  ```
</ResponseExample>
