canonical: https://jentic.com/apis/favro.com/favro

# Favro API

The Favro API is the planning platform's full backend for managing organizations, collections, widgets (boards and backlogs), columns, cards, comments, tags, tasks, and task lists. Its 65-endpoint surface lets agents create cards, move them through columns, attach files, manage dependencies, and pull activity history. Suited to teams running agile delivery in Favro who want to drive workflows from external systems rather than the UI.

## For AI agents

Create and move cards across columns, manage backlogs and boards (widgets), capture comments, and track dependencies on a Favro workspace.

## Scope

Does not handle source-control commits, CI pipelines, or video meetings - use for Favro card, widget, and planning workflows only.

## Capabilities

- Create cards on a board or backlog with title, description, and assignment via POST /cards
- Move cards across columns by updating columnId via PUT `/cards/{cardId}` for kanban transitions
- Attach files to cards via POST `/cards/{cardId}/attachment` for design assets and documentation
- Manage card dependencies via `/cards/{cardId}/dependencies` to model blocked-by relationships
- Pull card activity history via GET `/cards/{cardId}/activities` for audit and timeline views
- Manage organisations, collections, and widgets so an integration can build full workspace structures
- Maintain task lists and individual tasks within a card for sub-item tracking

## Use cases

### Issue Triage Bot for Engineering Teams

Engineering teams using Favro for sprint planning auto-create cards from incoming bug reports or support escalations. The agent POSTs to /cards with the report content and assigns it to the right widget. Cuts triage latency and keeps the support-to-engineering trail in Favro instead of email.

Example prompt: On receipt of a support escalation, POST /cards with title, description, and the engineering widget's id, then return the card url to the support agent

### Kanban State Sync with External Tools

Teams running mixed toolchains keep Favro card state in sync with deployment systems by updating columnId via PUT `/cards/{cardId}` when external events fire. The pattern moves a card to 'Done' when CI publishes a release, for example. Removes manual board updates from the engineering routine.

Example prompt: On a release-published webhook, PUT `/cards/{cardId}` with the Done columnId and post a comment summarising the release

### Dependency Mapping and Reporting

Programme managers map dependencies between cards using `/cards/{cardId}/dependencies` and pull activity timelines from `/cards/{cardId}/activities` for status reports. The combination supports critical-path analysis and weekly report automation. Useful for multi-team programme work.

Example prompt: GET dependencies for each card on a release widget and produce a graph showing blocked-by chains

### Activity Audit for Compliance

Regulated teams pull `/cards/{cardId}/activities` to build immutable audit logs of who changed what and when. The activity feed includes column moves, assignment changes, and edits. Saves a manual export step for audits that need a full change history.

Example prompt: For each card in a compliance scope, GET `/cards/{cardId}/activities` and write the entries to a long-term audit store

### AI Project Manager Agent via Jentic

Conversational PM agents use Jentic to call Favro from natural-language requests like 'create a card on the design backlog with these notes'. Jentic resolves the intent to POST /cards and supplies basic-auth credentials from the vault. Cuts integration time from days to under an hour and prevents the agent from handling raw passwords.

Example prompt: Through Jentic, search 'create a card in favro', load POST /cards, and execute with title, description, and widget id parsed from the user's prompt

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/cards` | Create a card on a widget |
| PUT | `/cards/{cardId}` | Update card fields including column |
| POST | `/cards/{cardId}/attachment` | Attach a file to a card |
| GET | `/cards/{cardId}/activities` | List card activity history |
| POST | `/cards/{cardId}/dependencies` | Add a dependency between cards |
| GET | `/widgets` | List widgets (boards and backlogs) |
| GET | `/columns` | List columns on a widget |

## Key resources

- **Organizations** — Manage workspaces and organisation-level settings
- **Collections** — Group widgets into collections for navigation
- **Widgets** — Boards, backlogs, and other card containers
- **Columns** — Stages within a widget that cards move through
- **Cards** — Primary work items with attachments, comments, dependencies, and activities
- **Comments** — Threaded discussion on a card
- **Tags** — Label cards for filtering and reporting
- **Tasks and Task Lists** — Sub-items inside a card for checklist tracking
- **Users** — Organisation users for assignment

## Why Jentic

- **Setup:** Wiring the Favro API by hand means encoding email and token into a basic Authorization header and navigating a 65-endpoint surface of cards, widgets, and columns yourself. Through Jentic you install once, import Favro from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** Favro puts the card id in the URL path (`/cards/{cardId}` and `/cards/{cardId}/attachment`), so a rule can pin your agent to one card. You choose the operations it may call, so writes like adding an attachment or a dependency are included only when you add them, while widget and column reads can stay read-only.
- **Credential handling:** Your Favro email and token are stored once, encrypted, by your own Jentic One instance and injected into the Authorization header at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a card in Favro', and Jentic returns POST /cards with its widget-id schema so the agent acts without browsing the 65-endpoint surface.

## Related APIs

- **Trello** — Card-based kanban tool with a simpler hierarchy
- **Asana** — Task management alternative with strong project and portfolio views
- **monday.com** — Work management platform with custom-board flexibility
- **ClickUp** — All-in-one work platform with broader feature coverage

## FAQ

### What authentication does the Favro API use?

Favro uses HTTP Basic authentication - supply your Favro email and an API token in the Authorization header. Through Jentic both halves of the basic-auth credential live in the vault and are injected at execution time, never entering the agent's prompt.

### Can I create and move cards with the Favro API?

Yes. POST /cards creates a card on a widget and PUT `/cards/{cardId}` updates its columnId to move it through stages. Use GET /columns to discover the column ids available on a given widget.

### What are the rate limits for the Favro API?

Favro does not document fixed rate limits in the OpenAPI spec - the live API returns rate-limit headers per response. Read the headers, batch reads where possible, and back off on 429 responses to stay within capacity.

### How do I create a card through Jentic?

Install with pip install jentic, search 'create a card in favro', load POST /cards, and execute with the widget id, title, and description from your prompt. Get started with Jentic One, the self-hosted execution layer.

### Does the Favro API support card dependencies?

Yes. POST `/cards/{cardId}/dependencies` adds a dependency from one card to another, GET returns existing dependencies, and DELETE removes them. Use this to model blocked-by relationships and build critical-path reports.

### Can I limit what my agent is allowed to do with the Favro API?

Yes. Because you run Jentic One yourself, your own rules decide which Favro operations and credentials the agent may use, so you can allow reads like GET /widgets and GET /columns while withholding writes. Attachment and dependency operations such as POST `/cards/{cardId}/attachment` and POST `/cards/{cardId}/dependencies` are available to the agent only when you add them. Since Favro carries the card id in the path (`/cards/{cardId}`), a rule can also pin the agent to a single card.
