Source: https://docs.debitura.com/clients/integration-guides/tasks-and-action-items

# Tasks and Action Items

Discover every open action your account needs to take across all cases, and resolve the most common ones directly through the API.

<a id="overview"></a>

## Overview

A task is Debitura's "you must do X for this case to proceed" prompt — reply to a partner's chat message, sign a contract, assign a bank account, and so on. Tasks are created automatically as cases progress and **auto-resolve** once the underlying condition clears: the moment you reply to a case's chat, its `ReplyToChat` task disappears on its own. Poll [`GET /tasks`](https://docs.debitura.com/api/customer-api/tasks.md#list-your-open-tasks) as a live work queue, not an append-only log — a task you saw last week may no longer be open.

Use [`GET /tasks`](https://docs.debitura.com/api/customer-api/tasks.md#list-your-open-tasks) for an account-wide queue, or [`GET /cases/{id}/tasks`](https://docs.debitura.com/api/customer-api/cases.md#list-tasks-for-a-case) when you're already working a specific case.

See [Tasks](https://docs.debitura.com/developer-concepts/tasks.md) for the full task type catalogue (what each type means, case- vs. account-level, API-resolvable or not). `SignContract` and `AssignBankAccount` are account-level: they aren't tied to a single case, so they only ever appear in `GET /tasks`, never in `GET /cases/{id}/tasks`.

<a id="every-task-has-a-solution-url"></a>

## Every Task Has a Solution URL

Each task carries a `solutionUrl` — an absolute link that a human can open to resolve the task in one click. This is the only guaranteed way to resolve the long-tail task types above that aren't yet API-actionable — no polling loop needed, just surface the link to whoever handles that task on your side.

```json
{
  "id": "5e2a1e3a-...",
  "type": "AssignBankAccount",
  "typeLabel": "Assign bank account",
  "status": "Open",
  "solutionUrl": "https://app.debitura.com/Invoices/Index?bankAccountId=-1",
  "action": null
}
```

<a id="resolving-chat-driven-tasks-via-the-api"></a>

## Resolving Chat-Driven Tasks via the API

`ReplyToChat`, `ClientInputRequired`, and `MoreInfoNeeded` together make up the large majority of creditor task volume, and all three resolve the same way: post a chat message. These tasks carry a non-null `action`:

```json
{
  "type": "ReplyToChat",
  "caseId": "8f19c2b0-...",
  "action": {
    "method": "POST",
    "path": "/cases/8f19c2b0-.../chats"
  }
}
```

Call [`POST /cases/{id}/chats`](https://docs.debitura.com/api/customer-api/cases.md#send-a-chat-message) with the `caseId` from the task — see [Send chat messages](https://docs.debitura.com/clients/integration-guides/track-case-status.md#send-chat-messages) for the request format. The task resolves asynchronously: once the case leaves its needs-info state, the task disappears from subsequent `GET /tasks` calls. There's no separate "mark task as done" call — don't poll immediately after posting; give the case a moment to transition before re-checking.

Tasks without an `action` (`null`) aren't yet directly resolvable through the API in this version — send a human to `solutionUrl` instead.

<a id="filtering"></a>

## Filtering

Both endpoints accept:

-   `status` — `Open` (default) or `Solved`
-   `type` — repeatable, e.g. `?type=ReplyToChat&type=SignContract`, restricted to the [task types listed here](https://docs.debitura.com/developer-concepts/tasks.md#task-types)

`GET /tasks` is paginated (`Page`, `PageSize`, max `100`); `GET /cases/{id}/tasks` returns the full unpaginated list for that case.
