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:
AWS setup — create the bucket folder structure and the IAM role Level AI will assume.
S3 sync setup — connect and enable the S3 integration in the Level AI dashboard.
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
In the Level AI dashboard sidebar, go to Settings.
Scroll to the Data Ingestion section and select Integrations.
Open the Available integrations tab and click S3 Conversation.
On the management page, click Add Account to open the connection modal.
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.
Click Connect to S3 Conversation to authenticate and validate the connection.
On success, the account appears under Connected Accounts.
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.