Two kinds of import
What an import ingests follows the collection you create it on. You never choose this directly — it is reported back asimport_type.
Which fields you get depends entirely on the connector — a metadata import stores what that source
happens to publish about each file, and sources differ a lot. A Zoom recording carries things like a
topic, host, start time and duration; a Gong call adds parties and its own call analysis; Grain
contributes AI summaries and highlights; a Dropbox or Drive file may be little more than a name,
size and timestamps; iconik brings whatever custom metadata your workspace has configured. Anything
present is indexed and becomes searchable and filterable.
The two compose into the workflow most teams want: bulk-index a whole source
into a metadata collection for free, search it to find the files actually
worth processing, then run a media import with narrower filters against a
processing collection to ingest only those.
Create an import
start: false. The response echoes the definition
plus latest_run.
Filtering what gets imported
filters is an array of listing passes, mirroring the parameters you would pass when browsing a
connector. Each set runs as its own pass and results are deduplicated, so overlapping sets are safe.
folder_id for Google Drive, path and
recursive for Dropbox, team and meeting_type for Grain, title_search and date ranges for most.
Unsupported keys are rejected when you create the import rather than silently ignored, because a
saved definition re-runs forever and a quietly dropped filter would import the whole source.
Watch a run
files_queued is the denominator; files_imported (media) or files_indexed (metadata) plus
files_failed settle against it.
Re-running: append, refresh, and mirroring
Every run picks a mode, defaulting to the definition’sdefault_mode.
append — add what's new
append — add what's new
Imports files the collection does not have yet and retries previously failed
ones. Files already imported are skipped: not re-downloaded, not re-billed.
This is the mode to re-run on a schedule.
refresh — also re-sync existing files
refresh — also re-sync existing files
Additionally re-fetches source metadata for files this import already
brought in. For media imports the bytes are never re-downloaded — only the
metadata is refreshed.
refresh + delete_missing — mirror the source
refresh + delete_missing — mirror the source
After a complete listing, removes files this import previously added
that the source no longer returns. Files added by a different import,
files you added yourself, and files this import has never listed are all
left alone. Only the file’s place in this collection is removed — the file
itself, and its use in any other collection, is untouched. A run that
stopped at
max_files skips this step entirely, because a truncated
listing cannot prove anything is missing.To keep a file regardless of what the source does, add it to a collection
this import does not target.When a run stops early
Media imports are billed per file, so a run can stop on something account-wide — running out of credits, or hitting a usage limit. When that happens the run ends with afailed status and a
plain-language error, and everything already imported is kept.
Recovery is always the same move: fix the cause, then re-run in append mode. Already-imported files
are skipped and only the remainder is attempted.
files_failed.
Cancelling
Things to know
- One active run per collection. Starting a second while one is in flight returns a
409; creating a definition still succeeds, it just comes back withlatest_run: nullso you can run it once the current one finishes. - Definitions are immutable. To change filters or connector, delete and recreate.
max_filescaps the files a run takes from the listing, and a capped run never removes anything.- Runs use the workspace’s default API key to read the connector, so the workspace needs one.