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

# Warehouse Connectors

> Import data from external warehouses into Mixpanel

# Warehouse Connectors API

Import events, users, groups, and lookup tables from external data warehouses into Mixpanel.

## Base URL

```
https://mixpanel.com/api/app/projects/{projectId}/warehouse-sources/imports
```

## Supported Warehouses

* BigQuery
* Snowflake
* Amazon Redshift
* Databricks
* PostgreSQL

## List Warehouse Imports

Get all warehouse imports for a project.

<ParamField path="projectId" type="number" required>
  Your Mixpanel project ID
</ParamField>

### Example Request

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://mixpanel.com/api/app/projects/123/warehouse-sources/imports" \
    -u SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET
  ```

  ```python Python theme={null}
  import requests
  from requests.auth import HTTPBasicAuth

  response = requests.get(
      'https://mixpanel.com/api/app/projects/123/warehouse-sources/imports',
      auth=HTTPBasicAuth('SERVICE_ACCOUNT_USERNAME', 'SERVICE_ACCOUNT_SECRET')
  )

  imports = response.json()
  for imp in imports['results']:
      print(f"{imp['name']}: {imp['status']}")
  ```
</CodeGroup>

***

## Get Warehouse Import

Get details of a specific import.

<ParamField path="projectId" type="number" required>
  Your Mixpanel project ID
</ParamField>

<ParamField path="importId" type="string" required>
  The import ID
</ParamField>

### Example Request

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://mixpanel.com/api/app/projects/123/warehouse-sources/imports/abc123" \
    -u SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET
  ```
</CodeGroup>

***

## Update Warehouse Import

Pause/resume an import or update its configuration.

<ParamField path="projectId" type="number" required>
  Your Mixpanel project ID
</ParamField>

<ParamField path="importId" type="string" required>
  The import ID
</ParamField>

<ParamField body="paused" type="boolean" required>
  Pause or resume the import
</ParamField>

<ParamField body="run_every" type="integer">
  Sync frequency in nanoseconds:

  * `0`: API-triggered only
  * `3600000000000`: Hourly
  * `86400000000000`: Daily
  * `604800000000000`: Weekly
</ParamField>

### Example Request

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://mixpanel.com/api/app/projects/123/warehouse-sources/imports/abc123" \
    -X PATCH \
    -u SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET \
    -H "Content-Type: application/json" \
    -d '{
      "paused": false,
      "run_every": 86400000000000
    }'
  ```

  ```python Python theme={null}
  import requests
  from requests.auth import HTTPBasicAuth

  # Resume import with daily frequency
  response = requests.patch(
      'https://mixpanel.com/api/app/projects/123/warehouse-sources/imports/abc123',
      auth=HTTPBasicAuth('SERVICE_ACCOUNT_USERNAME', 'SERVICE_ACCOUNT_SECRET'),
      json={
          'paused': False,
          'run_every': 86400000000000  # Daily
      }
  )

  print(response.json())
  ```
</CodeGroup>

***

## Delete Warehouse Import

Delete an import and optionally its imported data.

<ParamField path="projectId" type="number" required>
  Your Mixpanel project ID
</ParamField>

<ParamField path="importId" type="string" required>
  The import ID
</ParamField>

<ParamField body="delete_data" type="boolean">
  Also delete the imported data from Mixpanel

  Default: `false`
</ParamField>

### Example Request

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://mixpanel.com/api/app/projects/123/warehouse-sources/imports/abc123" \
    -X DELETE \
    -u SERVICE_ACCOUNT_USERNAME:SERVICE_ACCOUNT_SECRET \
    -H "Content-Type: application/json" \
    -d '{"delete_data": true}'
  ```
</CodeGroup>

<Warning>
  Deleting an import with `delete_data: true` will permanently remove all imported data from Mixpanel.
</Warning>

## Best Practices

<AccordionGroup>
  <Accordion title="Start with manual sync">
    Test your import configuration with manual syncs before enabling scheduled runs.
  </Accordion>

  <Accordion title="Monitor import status">
    Regularly check import status and logs to catch issues early:

    ```python theme={null}
    def check_import_health(project_id, import_id):
        response = requests.get(
            f'https://mixpanel.com/api/app/projects/{project_id}/warehouse-sources/imports/{import_id}',
            auth=HTTPBasicAuth('USERNAME', 'SECRET')
        )
        
        data = response.json()
        if data['results']['status'] != 'active':
            alert_team(f"Import {import_id} is {data['results']['status']}")
    ```
  </Accordion>

  <Accordion title="Use appropriate sync frequency">
    Balance freshness needs with costs:

    * **Hourly**: For real-time critical data
    * **Daily**: For most analytics use cases
    * **Weekly**: For reference/dimension data
  </Accordion>
</AccordionGroup>
