AWS S3 <> LevelAI Integration

Last updated: August 19, 2026

Overview

Level AI can sync conversation files directly from your Amazon S3 bucket. Level AI reads files from a designated pending folder in your bucket, transfers them to your Level AI SFTP server, and moves the source files to a processed folder so the same file is never picked up twice.

Setup has three stages:

  1. AWS setup — create the bucket folder structure and the IAM role Level AI will assume.

  2. S3 sync setup — connect and enable the S3 integration in the Level AI dashboard.

  3. SFTP self-serve ingestion — configure how the synced files are parsed and imported as conversations.

All three stages are required. Files will land on the SFTP server after stage 2, but they will not appear as conversations in Level AI until stage 3 is complete.

Stage 1: AWS setup

Before configuring anything in Level AI, your AWS administrator needs to prepare the bucket and grant access. Full instructions, including sample IAM permission and trust policies, are in LevelAI S3 Integration for Conversation Ingestion.

In summary, that article walks through:

  • Creating or designating an S3 bucket and defining the pending and processed folder paths.

  • Creating an IAM role with permissions to list the bucket, read objects under the pending path, and write and delete under the processed path.

  • Setting a custom trust policy on that role so Level AI's AWS role can assume it via role-to-role assumption. No access keys or secrets are used.

Important: the trust policy requires Level AI's own Role ARN as the trusted principal. Request this from your TAM or Level AI support contact before you begin, as you cannot complete the trust policy without it.

Once the role exists, collect the following. You will enter these yourself in Stage 2; unlike the older assisted setup, you no longer need to send them to Level AI.

Item

Description

Example

Customer Role ARN

IAM role Level AI will assume

arn:aws:iam::<Account-ID>:role/CustomerRole

Region

AWS region the bucket lives in

ap-southeast-2

Bucket

Name of the S3 bucket

acme-conversation-exports

Pending prefix

Folder where new files are written

pending/

Destination prefix

Folder where files are moved after sync

processed/

External ID

STS External ID, if your trust policy requires one

Optional

Stage 2: Set up the S3 sync in Level AI

  1. In the Level AI dashboard sidebar, go to Settings.

  2. Scroll to the Data Ingestion section and select Integrations.

  3. Open the Available integrations tab and click S3 Conversation.

  4. On the management page, click Add Account to open the connection modal.

  5. Fill in the configuration fields:

    • Customer Role ARN — the IAM Role ARN created in Stage 1.

    • Region — the AWS region of your S3 bucket.

    • Bucket — the bucket name.

    • Pending Prefix — the folder path where incoming files are located, for example pending/.

    • Destination Prefix — the folder path where processed files should be moved, for example processed/.

    • External ID — the STS External ID, only if your AWS trust policy requires one.

  6. Click Connect to S3 Conversation to authenticate and validate the connection.

  7. On success, the account appears under Connected Accounts.

  8. Click the three-dots menu next to the account name and select Enable to start syncing files from S3 to the SFTP server.

The sync is inactive until you complete step 8. Adding the account alone does not begin transferring files.

Stage 3: Configure SFTP self-serve ingestion

Once the sync is enabled and you have confirmed that files are landing on your SFTP server, configure the ingestion pipeline so those files are processed into conversations.

Follow the step-by-step instructions in the SFTP Level AI Integration Guide.

Managing a connected account

Use the three-dots menu next to any account under Connected Accounts to:

  • Rename — change the display name of the account.

  • Enable / Disable — start or pause syncing without removing the configuration.

  • Disconnect — remove the account and its stored credentials.

Ongoing usage

  • Adding files: write new files under the pending path. The integration discovers files recursively under that path and picks them up on its next scheduled run. It does not filter by date, so anything present under the pending path at run time is processed.

  • Processed files: after a successful transfer, source files are moved from the pending path to the processed path within your bucket.

  • Changes: if you change the bucket name, region, prefix, or role ARN, update the account configuration in the Level AI dashboard to match.

Troubleshooting

Connection fails during validation. Confirm the role ARN, region, and bucket name are correct, and that the role's trust policy names Level AI's role ARN as the trusted principal with the sts:AssumeRole action. If your trust policy specifies an External ID, it must match the value entered in the modal exactly.

Connection succeeds but no files reach the SFTP server. Check that the account has been enabled from the three-dots menu, that new files are being written under the configured pending prefix, and that the prefix in Level AI matches the path in S3 exactly. Also confirm the role has s3:GetObject on the pending path and s3:PutObject plus s3:DeleteObject on the processed path, since a missing delete permission will block the move.

Files reach the SFTP server but no conversations appear in Level AI. Stage 3 is either incomplete or misconfigured. Review the SFTP self-serve configuration, in particular the expected file format and field mapping.

For anything not covered here, contact your Level AI Technical Account Manager or reach out to support with the approximate time of the failed run and example object keys.