Trello ExecModule
Overview
TrelloModule connects ValkyrAI workflows to Trello REST API v1 through the native map I/O ExecModule ABI. Workflow Studio discovers it as TrelloModule. The Trello API key and member API token resolve only from encrypted fields on a bound IntegrationAccount.
The first production operation set covers the board-to-card lifecycle used by delivery, sales, support, and release workflows:
get_member,list_boards,get_board,create_board,update_board, and guardeddelete_boardlist_listsandcreate_listlist_cards,get_card,create_card,update_card, and guardeddelete_cardadd_comment
Read-only operations can retry transient failures. Board, list, card, and comment mutations run once so an ambiguous timeout cannot duplicate a write. Permanent board and card deletion requires explicit confirmation.
Usage
- Create or select a dedicated Trello automation member.
- Generate a Trello API key and authorize a member API token with only the boards and Workspaces required by the workflow.
- Store the API key in the encrypted
IntegrationAccount.apiKeyfield and the API token in the encryptedIntegrationAccount.passwordfield. - Set the account status to
READYand bind it throughExecModuleConfig.authConfig.integrationAccount. - Run
get_memberwithmemberId: "me", thenlist_boards, before configuring board, list, or card mutations. - Reconcile Trello state by board, list, card, or action ID before repeating any write after an ambiguous network failure.
Workflow input cannot provide credentials or redirect the connector away from the trusted Trello API endpoint. The provider requires both the API key and member token on each request; ValkyrAI appends them only after validating the fixed route and never includes them in outputs or logs.
Inputs
| Name | Type | Requirement | Default | Description and constraints |
|---|---|---|---|---|
operation | string | Required | None | One of the 14 documented operations. |
memberId | string | Member/board discovery | me | Trello member ID, username, or me; 1–128 safe ID characters. |
boardId | string | Board/list operations | None | Board ID or short link; 1–128 safe ID characters. |
listId | string | Card list/create | None | Trello list ID; 1–128 safe ID characters. |
cardId | string | Card/comment operations | None | Card ID or short link; 1–128 safe ID characters. |
organizationId | string | Optional board create/update | None | Trello Workspace ID. Trello still calls this provider field idOrganization. |
name | string | Create board/list/card | None | Non-empty name, at most 4,096 characters. |
description | string | Optional board/card write | None | Maps to Trello desc; at most 16,384 characters. |
card | object or JSON string | Optional card write | None | Additional allowlisted card fields; 256 KiB maximum. |
commentText | string | add_comment | None | Plain-text comment, 1–16,384 characters. |
position | string | Optional list/card write | None | top, bottom, or a non-negative numeric Trello position. |
due | string | Optional card write | None | ISO-8601 timestamp or literal null to clear. |
start | string | Optional card write | None | ISO-8601 timestamp or literal null to clear. |
idMembers | string array | Optional card write | None | Up to 100 bounded Trello member IDs. |
idLabels | string array | Optional card write | None | Up to 100 bounded Trello label IDs. |
closed | boolean | Optional update | Unset | Archives or reopens a board or card when explicitly supplied. |
dueComplete | boolean | Optional card update | Unset | Changes the card due-completion state when explicitly supplied. |
filter | string | Optional list read | open | open, closed, or all; board discovery also permits starred. |
before | string | Optional list_cards | None | Card ID or ISO timestamp used as Trello's page continuation. |
limit | integer | Optional list read | 100 | Client result cap from 1 through 1,000. |
defaultLists | boolean | Optional create_board | true | Asks Trello to create its default lists. |
confirmDelete | boolean | Delete operations | false | Must be true before a permanent board or card delete request is sent. |
The card object accepts only name, desc, closed, idList, idMembers, idLabels, due, start, dueComplete, pos, address, and locationName. Typed inputs override matching fields. Nested arbitrary payloads, unknown fields, credential-like fields, oversized values, and more than 100 member or label IDs fail before a provider request.
Outputs
| Name | Type | When present | Description |
|---|---|---|---|
status | string | Always | success or error. |
operation | string | Always | Normalized operation name. |
attempts | integer | Always | Total provider HTTP attempts. |
httpStatus | integer | Provider responded | Last Trello HTTP status. |
data | object | Single-resource or mutation success | Trello resource or an empty object for an empty successful response. |
id | string | Provider returned it | Convenience resource or action ID. |
url / shortUrl | string | Provider returned them | Convenience Trello URLs. |
items / count | array / integer | List success | Bounded resources and returned count. |
hasMore | boolean | List success | true only when a full card page indicates another page may exist. |
nextBefore | string | Full card page | Last returned card ID for a subsequent before request. |
requestId | string | Provider supplies one | Safe request trace reference. |
error | object | Failure | Safe {code, message, httpStatus?, retryable} details. |
The API key, member token, and credential-bearing request query never enter outputs. Provider error text passes through ValkyrAI's shared sensitive-data redaction policy and explicit replacement for both Trello secrets.
IntegrationAccount Requirements
| Setting | Requirement |
|---|---|
| Provider | Trello API key plus a member-authorized API token |
| Authorization | Token limited to the boards and Workspace objects required by the workflow |
accountName | Human-readable Trello automation identity |
apiKey | Required encrypted SecureField containing the Trello API key |
password | Required encrypted SecureField containing the Trello member API token |
status | READY or legacy unset status; CLOSED and ERROR fail closed |
Trello API tokens act with the authorizing member's permissions. Use a dedicated member with least-privilege board membership, rotate both secrets through the IntegrationAccount lifecycle, and revoke the token from Trello when the workflow is retired. OAuth1 authorization, token refresh, webhook secrets, and Power-Up administration remain outside this module's workflow inputs.
Configuration
{
"version": "1.0.0",
"authConfig": {
"authStrategy": 1,
"integrationAccount": "integration-account:trello-release-ops"
},
"retryPolicy": {
"maxAttempts": 3,
"backoffStrategy": "EXPONENTIAL",
"initialDelayMs": 1000,
"maxDelayMs": 60000,
"jitter": false
},
"executionConfig": {"timeoutMs": 30000},
"payloadConfig": {
"parameters": "{\"operation\":\"list_cards\",\"listId\":\"64f2234567890abcdef12345\",\"limit\":100}"
}
}
The integration-account value is symbolic. Persisted workflows use the generated relationship and never plaintext Trello credentials.
Operations
| Operation | Trello behavior | Side effect |
|---|---|---|
get_member | Reads the authorized member identity by ID, username, or me. | Read-only; safe retries. |
list_boards | Lists open, closed, all, or starred boards visible to a member. | Read-only; safe retries; client result cap. |
get_board | Reads one board's safe core fields. | Read-only; safe retries. |
create_board | Creates a named board, optionally in a Workspace and with default lists. | New board; single attempt. |
update_board | Updates explicitly supplied name, description, Workspace, or closed state. | Mutation; single attempt. |
delete_board | Permanently deletes one board after confirmation. | Irreversible; single attempt. |
list_lists | Lists open, closed, or all lists on one board. | Read-only; safe retries; client result cap. |
create_list | Creates a named list on one board at an optional position. | New list; single attempt. |
list_cards | Lists up to 1,000 cards from one list with filter and before continuation. | Read-only; safe retries. |
get_card | Reads one card's safe core fields. | Read-only; safe retries. |
create_card | Creates one bounded card on a list. | New card; single attempt. |
update_card | Updates explicitly supplied card fields, including movement or archival. | Mutation; single attempt. |
delete_card | Permanently deletes one card after confirmation. | Irreversible; single attempt. |
add_comment | Adds one plain-text comment to a card. | New action/comment; single attempt. |
Errors and Failure Modes
| Code | Typical cause | Retryable | Resolution |
|---|---|---|---|
VALIDATION_ERROR | Missing/invalid ID, missing create field, bad position/timestamp, unknown card field, invalid JSON, empty update, missing credential, or absent deletion guard. | No | Correct input or reconnect the IntegrationAccount; no unsafe request was sent. |
UNSUPPORTED_OPERATION | Unknown operation. | No | Select a documented operation. |
INTEGRATION_ACCOUNT_REQUIRED | No bound account. | No | Bind a Trello IntegrationAccount. |
INTEGRATION_ACCOUNT_NOT_READY | Account status is closed/error. | No | Repair or replace the account. |
TRELLO_HTTP_400 | Provider validation failed. | No | Correct the bounded request and re-read provider state. |
TRELLO_HTTP_401 | API key or member token is invalid or revoked. | No | Rotate both IntegrationAccount secrets. |
TRELLO_HTTP_403 | Member lacks access to the board, list, card, or Workspace. | No | Grant the dedicated member the minimum required Trello access. |
TRELLO_HTTP_404 | Resource ID is wrong, deleted, or hidden from the member. | No | Re-run discovery with the same IntegrationAccount. |
TRELLO_HTTP_429 / 5xx | Rate limit or transient provider failure. | Yes for reads | Honor Retry-After; reconcile writes before any manual retry. |
NETWORK_ERROR | Timeout, DNS, TLS, or connectivity failure. | Yes for reads | Verify connectivity and inspect Trello state before repeating a write. |
RESPONSE_TOO_LARGE | Response exceeded 5 MiB. | No | Narrow the board/list scope or reduce the card limit. |
INVALID_PROVIDER_RESPONSE | A list endpoint did not return an array. | No | Verify Trello compatibility and use the safe request trace. |
Example
Create one approved production release card:
{
"operation": "create_card",
"listId": "64f2234567890abcdef12345",
"name": "Verify public Trello ExecModule launch",
"description": "Confirm canonical documentation, article, header image, and public READ grants.",
"due": "2026-08-14T17:00:00Z",
"position": "top",
"idMembers": ["64f4234567890abcdef12345"],
"idLabels": ["64f5234567890abcdef12345"]
}
Expected result:
{
"status": "success",
"operation": "create_card",
"attempts": 1,
"httpStatus": 200,
"id": "64f3234567890abcdef12345",
"url": "https://trello.com/c/abc123/verify-public-trello-execmodule-launch",
"data": {
"id": "64f3234567890abcdef12345",
"name": "Verify public Trello ExecModule launch",
"idList": "64f2234567890abcdef12345"
}
}
Notes
- Pagination:
list_cardsrequests up to 1,000 cards. A full page returns the last card ID asnextBefore; reuse it only with the same list and filter. Board and list endpoints return provider arrays that the module caps client-side. - Rate limits: only reads retry HTTP 408, 429, 500, 502, 503, and 504 according to
RetryPolicy, honoring numeric or HTTP-dateRetry-After. Writes never retry automatically. - API limits: structured card input is capped at 256 KiB, provider responses at 5 MiB, list results at 1,000, member/label arrays at 100 IDs, comments and descriptions at 16,384 characters, and identifiers at 128 characters.
- Idempotency: Trello does not provide a universal idempotency key for these mutations. Each write is single-attempt. Reconcile by board, list, card, or action ID before repeating an ambiguous create, update, delete, or comment.
- Destructive behavior:
delete_boardanddelete_cardare permanent and requireconfirmDelete=true. Preferupdate_boardorupdate_cardwithclosed:truewhen archival satisfies the workflow. - Security: the API key and member token remain in separate encrypted IntegrationAccount fields. Fixed-host routing, bounded paths and parameters, card-field allowlisting, redacted provider errors, and absence of arbitrary raw requests prevent secret reflection and SSRF-style routing.
- API behavior: Trello still uses
organizationnames in parts of API v1 for current Workspace resources. Member permissions, Enterprise restrictions, board visibility, Power-Ups, automation rules, and provider policy can impose constraints beyond local validation. - External verification: request construction, dual-secret query authentication, board/list/card routing, card continuation, validation, redaction, read retry, single-attempt writes, deletion guards, and metadata discovery have deterministic local tests. Live Trello authorization and provider behavior require separately authorized Trello credentials and are not exercised in repository tests.
- Deferred operations: labels, checklists, attachments, board membership changes, card member/label delta endpoints, custom fields, reactions, votes, notifications, search, batch API, webhooks/triggers, OAuth1 lifecycle, Enterprise administration, and arbitrary raw requests.
- Functional references: n8n Trello node source, n8n Trello operations, and Trello REST API.