Skip to content

Trello

Trello is a visual work-management tool that organizes projects into boards, lists, and cards.

ingestr supports Trello as a source.

URI format

trello://?api_key=<api_key>&token=<token>

URI parameters:

  • api_key: the API key of a Trello Power-Up, used to identify your application.
  • token: a token that authorizes access to your Trello account's data.

Trello requires both an api_key and a token. Create a Power-Up to obtain an API key, then generate a token for your own account. See Trello's API key and token guide for the steps.

Once you have both values, here's a sample command that copies boards from Trello into a DuckDB database:

sh
ingestr ingest \
  --source-uri "trello://?api_key=key_123&token=token_123" \
  --source-table "boards" \
  --dest-uri duckdb:///trello.duckdb \
  --dest-table "public.boards"

Tables

Trello source allows ingesting the following resources into separate tables:

TablePKInc KeyInc StrategyDetails
boardsidreplaceAll boards the authenticated member can access
organizationsidreplaceWorkspaces (organizations) the member belongs to
listsidreplaceLists across all accessible boards
membersidreplaceMembers across all accessible boards, de-duplicated
labelsidreplaceLabels defined on each board
checklistsidreplaceChecklists across all accessible boards
cardsiddateLastActivitymergeCards across all accessible boards
actionsiddatemergeActivity log (actions) across all accessible boards

Use these as the --source-table parameter in the ingestr ingest command.

By default the board-scoped tables (lists, members, labels, checklists, cards, actions) fetch data from every board the account can access. To scope a run to specific boards, append a comma-separated list of board IDs after the table name with a colon:

sh
ingestr ingest \
  --source-uri "trello://?api_key=key_123&token=token_123" \
  --source-table "cards:5f2a1c,60b1d2" \
  --dest-uri duckdb:///trello.duckdb \
  --dest-table "public.cards"

Pass an explicit --dest-table when using a board filter, since the destination table defaults to the source table name.

The boards and organizations tables don't accept a board filter.

Incremental loading

When --interval-start / --interval-end are provided, cards and actions are loaded incrementally by their most recent activity and merged on id; the other tables are fully refreshed on each run. When no interval is provided, all records are fetched.