> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://apidocs.polytomic.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://apidocs.polytomic.com/_mcp/server.

# SFTP

Supports:
* ✅ Bulk sync source


## Connection

### Configuration
<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>auth_mode</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Authentication method<br/><br/>Accepted values: `private_key` <a href="#auth-mode-private-key">↓</a>, `password` <a href="#auth-mode-password">↓</a></td>
<td><code>required</code></td>
</tr>
<tr>
<td><code>is_single_table</code></td>
<td><code>boolean</code></td>
<td style="vertical-align: top;">Files are time-based snapshots<br/><br/>Treat the files as a single table. <a href="#is-single-table-true">↓</a></td>
<td><code>optional</code></td>
</tr>
<tr>
<td><code>path</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Path<br/><br/>The path to the directory on the SFTP server containing the files.</td>
<td><code>optional</code></td>
</tr>
<tr>
<td><code>skip_lines</code></td>
<td><code>integer</code></td>
<td style="vertical-align: top;">Skip first lines<br/><br/>Skip first N lines of each CSV file.</td>
<td><code>optional</code></td>
</tr>
<tr>
<td><code>ssh_host</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Host</td>
<td><code>optional</code></td>
</tr>
<tr>
<td><code>ssh_port</code></td>
<td><code>integer</code></td>
<td style="vertical-align: top;">Port</td>
<td><code>optional</code></td>
</tr>
<tr>
<td><code>ssh_user</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">User</td>
<td><code>optional</code></td>
</tr>
</tbody>
</table>

<a id="auth-mode-private-key"></a>

#### `auth_mode`

When `auth_mode` is `private_key`:

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ssh_private_key</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Private key</td>
<td><code>required</code></td>
</tr>
</tbody>
</table>

```json
{
  "name": "SFTP connection",
  "type": "sftp",
  "configuration": {
    "auth_mode": "private_key",
    "is_single_table": false,
    "path": "/path/to/files",
    "skip_lines": 0,
    "ssh_host": "sftp.example.net",
    "ssh_port": 22,
    "ssh_private_key": "",
    "ssh_user": "user"
  }
}
```

<a id="auth-mode-password"></a>

When `auth_mode` is `password`:

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ssh_password</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Password</td>
<td><code>required</code></td>
</tr>
</tbody>
</table>

```json
{
  "name": "SFTP connection",
  "type": "sftp",
  "configuration": {
    "auth_mode": "password",
    "is_single_table": false,
    "path": "/path/to/files",
    "skip_lines": 0,
    "ssh_host": "sftp.example.net",
    "ssh_password": "",
    "ssh_port": 22,
    "ssh_user": "user"
  }
}
```

<a id="is-single-table-true"></a>

#### `is_single_table`

When `is_single_table` is `true`:

<table>
<thead>
<tr>
<th>Name</th><th>Type</th><th>Description</th><th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>single_table_name</code></td>
<td><code>string</code></td>
<td style="vertical-align: top;">Collection name</td>
<td><code>optional</code></td>
</tr>
</tbody>
</table>

```json
{
  "name": "SFTP connection",
  "type": "sftp",
  "configuration": {
    "auth_mode": "private_key",
    "is_single_table": true,
    "path": "/path/to/files",
    "single_table_name": "",
    "skip_lines": 0,
    "ssh_host": "sftp.example.net",
    "ssh_port": 22,
    "ssh_private_key": "",
    "ssh_user": "user"
  }
}
```





## Bulk Sync
### Source
SFTP connections may be used as a bulk sync source. No additional configuration options are required.