Docs/Integrations/Blob Storage Export

Blob Storage Export

Blob storage export writes a project's trace data to your own bucket or container on a schedule, for analytics, warehousing or backup.

Options
DestinationsAWS S3, S3 Compatible Storage (for example MinIO), Azure Blob Storage
ScheduleHourly, Daily or Weekly
File typesJSONL, CSV, JSON
Export modesFull history, Today, Custom date
DatasetsTraces, observations, scores, and a joined Standardized Export
ℹ

Needs the scheduled-blob-exports entitlement: included in the Team and Enterprise cloud plans and every self-hosted plan. Viewing the settings needs read access to Integrations (notification and analytics integrations), and changing them needs write access (the Owner role has both). See Members & Roles.

Set up the export

Open the settings

Go to Project Settings > Integrations and open the Blob Storage card.

Choose the destination

FieldNotes
Storage ProviderAWS S3, S3 Compatible Storage or Azure Blob Storage
Bucket Name / Container NameWhere files are written
Endpoint URLS3-compatible and Azure only. For Azure, https://<account>.blob.core.windows.net.
RegionFor S3, for example us-east-1
Force Path StyleTurn on for MinIO and some other S3-compatible providers
Access Key ID / Secret Access KeyFor S3 and S3-compatible storage. On self-hosted deployments with AWS S3, leave both empty to use the host's credentials, such as an IAM role.
Authentication MethodAzure only. Shared Key (Account Key) uses the storage account name and key. Service Principal (Entra ID App) uses Tenant ID (Directory ID), Client ID (Application ID) and Client Secret. Grant the app Storage Blob Data Contributor on the container.
Export PrefixOptional path inside the bucket. End it with /, for example ants-exports/.

Credentials are encrypted at rest. Changing the destination asks for step-up verification when it is enabled.

Choose what and when

FieldNotes
Export FrequencyHourly, Daily or Weekly
File TypeJSONL, CSV or JSON
Export ModeFull history exports everything in the project. Today starts from the day you set it up. Custom date starts from Export Start Date.
Filter Attributes to ExportLimits the Standardized Export to the attributes you pick in Attributes to Export. The raw datasets always include every column.
EnabledTurns the schedule on or off

Save and validate

Select Save, then Validate. Validate uploads a small test file to confirm that the credentials and permissions work.

What lands in your storage

Each export writes four datasets, each in its own folder:

text
{prefix}{projectId}/traces/ {prefix}{projectId}/observations/ {prefix}{projectId}/scores/ {prefix}{projectId}/standardized/
FolderContents
tracesOne row per trace
observationsOne row per observation (model calls, tool calls, spans)
scoresOne row per score
standardizedOne row per observation with its trace fields and scores attached, ready for analysis without joins

File names

A scheduled file is named after the end of the interval it covers, in UTC, with colons replaced by dashes:

text
{prefix}{projectId}/traces/2026-09-26T14-00-00.jsonl

On an hourly schedule, that file covers 13:00 to 14:00 UTC. Daily and weekly schedules write one file per UTC day, so a weekly run writes up to seven files per dataset. A day with no data writes no file.

⚠

Files are replaced, never appended. A later export of the same interval (a retry or a Re-export All) overwrites the file under the same name. Load each file as a replacement for its interval, and detect changes by last-modified time, not by file name.

Run manifests

Every run also writes one manifest at the project root:

text
{prefix}{projectId}/manifest-2026-09-26T14-05-11-<runId>.json

The manifest lists the run's status, triggeredBy (schedule, manual or reexport), the window it covered, exportFrequency, totals (file count and rows per dataset), the files written per dataset, any error, and an entry per interval in intervals. A failed run still gets a manifest. To load incrementally, pick up manifests you have not processed, check status, and load the listed files.

Timing

A scheduled export stops 30 minutes behind the clock and exports only complete intervals. Observations can arrive a little after their trace, and the delay lets a trace settle before its interval is written. For example, on an hourly schedule the 13:00 to 14:00 file is written after 14:30 UTC.

A large backlog, such as a first Full history export, is caught up in daily chunks within one run.

Run Now and Re-export All

ActionWhat it does
Run NowExports the configured range (from the export mode's start) up to about five minutes ago, in daily chunks. Files are named after the time the run started (2026-09-26T00-31-00.jsonl, then .part-00001.jsonl and so on), so they sit next to the scheduled files instead of replacing them. Each click writes a new full copy. It does not move the schedule.
Re-export AllRewrites the whole configured range with the current attribute selection, using the scheduled file names, so existing files are replaced in place. Use it after changing Attributes to Export so all files share one schema.

The runs table shows each run's Status (queued, running, success, no data, partial failure or failed), Triggered by, Date range, Run time and Failure reason.

Choosing a file type

All three formats carry the same data.

  • JSONL (one JSON object per line) is the safest choice when a tool reads a whole folder as one table.
  • CSV repeats the header row in every file. Check that your reader skips the header in each file, not only the first.
  • JSON writes one array per file.

When reading a dataset folder, match on your data file extension so manifests at the project root are not read as rows.

© 2026 ANTS Platform, Inc.Docs v1.0 · Last updated June 2026