---
title: Dify capabilities
description: >-
  Choose a Dify capability family and interpret its mode, credential, risk,
  approval, retry, transport, and side-effect contract
kind: index
audience: application-developer
appliesTo: "1.x"
writingStandard: "aip-docs/1.0"
lastReviewedRevision: "97be86e9efedf07ecf1783b03800f683f107fb04"
connector: dify
aliases:
  - Dify capability index
  - Dify Service API operations
---

# Dify capabilities

Use this index to choose the Dify family that owns a task and interpret its AIP
contract before invocation. The reviewed frozen catalogue contains 79 provider
operations. Each configured app also publishes one invocation alias.

The source-derived `../assets/capabilities.json` snapshot owns the ordered machine
inventory. Focused pages own task guidance and interpretation; the snapshot
does not replace runtime discovery or the source that constructs each contract.

## Catalogue identity

| Property | Reviewed value |
|---|---|
| AIP source | `97be86e9efedf07ecf1783b03800f683f107fb04` |
| Pinned Dify source | `f8d47616c15d0959f604f6a5e2e1d32d3108991b` |
| Connector profile | `aip.connector.dify.v1` |
| App operations | 33 |
| Knowledge operations | 46 |
| Frozen operations | 79 |
| Reads | 32 |
| Mutations | 47 |
| App invocation aliases | One per configured app |

A matching suffix does not prove that a capability is discoverable. The app
mode, configured credential, admitted manifest, tenant binding, artifact, and
provider baseline remain part of capability identity.

## Choose a family

Each frozen operation appears in exactly one family.

| Family | Focused page | Total | Read | Mutation | Low | Medium | High | Approval | Retry |
|---|---|---:|---:|---:|---:|---:|---:|---:|---:|
| App metadata and files | `app-metadata-and-files.md` | 7 | 6 | 1 | 6 | 1 | 0 | 1 | 6 |
| Chat, conversations, and feedback | `chat-messages-conversations-and-feedback.md` | 9 | 5 | 4 | 5 | 3 | 1 | 4 | 5 |
| Workflows, streams, and human input | `workflows-streaming-and-human-input.md` | 9 | 4 | 5 | 4 | 4 | 1 | 5 | 4 |
| Audio | `audio.md` | 2 | 0 | 2 | 0 | 2 | 0 | 2 | 0 |
| Annotations | `annotations.md` | 6 | 2 | 4 | 2 | 2 | 2 | 4 | 2 |
| Datasets, tags, and retrieval | `knowledge-datasets-tags-and-retrieval.md` | 13 | 4 | 9 | 4 | 7 | 2 | 9 | 4 |
| Documents and indexing | `knowledge-documents-and-indexing.md` | 12 | 4 | 8 | 4 | 7 | 1 | 8 | 4 |
| Segments and child chunks | `knowledge-segments-and-child-chunks.md` | 9 | 3 | 6 | 3 | 4 | 2 | 6 | 3 |
| Metadata and models | `knowledge-metadata-and-models.md` | 8 | 3 | 5 | 3 | 4 | 1 | 5 | 3 |
| Pipelines and uploads | `knowledge-pipelines-and-uploads.md` | 4 | 1 | 3 | 1 | 3 | 0 | 3 | 1 |
| **Total** |  | **79** | **32** | **47** | **32** | **37** | **10** | **47** | **32** |

`Retry` means connector contract support for that read. It does not authorize a
caller to repeat an Action without checking its identity, terminal state,
budget, and provider outcome.

## Read capability IDs

An app invocation alias contains only the configured app ID:

```text
cap:dify:support-chat
│        └────────── configured app
└─────────────────── connector namespace
```

An app catalogue operation appends a frozen suffix:

```text
cap:dify:support-chat:conversation.list
│        │            └──────────────── operation
│        └───────────────────────────── configured app
└────────────────────────────────────── connector namespace
```

A Knowledge capability has an explicit credential domain:

```text
cap:dify:knowledge:main-workspace:dataset.list
│        │         │              └──── operation
│        │         └─────────────────── credential ID
│        └───────────────────────────── Knowledge domain
└────────────────────────────────────── connector namespace
```

Do not derive an ID from a Dify URL. Use authenticated tenant discovery and the
admitted manifest.

## Calculate a configuration's surface

One app publishes its alias plus the operations supported by its mode:

| Mode | App operations | Alias included | App capabilities |
|---|---:|---:|---:|
| `workflow` | 23 | 1 | 24 |
| `completion` | 19 | 1 | 20 |
| `chat` | 27 | 1 | 28 |
| `advanced-chat` | 29 | 1 | 30 |
| `agent-chat` | 27 | 1 | 28 |
| `agent` | 27 | 1 | 28 |

Each Knowledge credential adds 46 capabilities. The total is the sum across
configured apps and Knowledge credentials. The host must still satisfy the
global admitted-manifest limit, so descriptor parser maxima are not usable
surface maxima.

## Distinguish credential scopes

| Scope | Capability prefix | Credential |
|---|---|---|
| App alias and app operations | `cap:dify:<app_id>` | API key loaded for that app |
| Knowledge operations | `cap:dify:knowledge:<credential_id>` | Workspace Knowledge API key |

Binding metadata records the public credential ID, credential class, operation,
provider method, path template, and upstream revision. It never contains the
Bearer value.

## Interpret methods and mutation class

| Provider method | Count | AIP class |
|---|---:|---|
| `GET` | 32 | Read |
| `POST` | 31 | Mutation |
| `PUT` | 2 | Mutation |
| `PATCH` | 6 | Mutation |
| `DELETE` | 8 | Mutation |

Only `GET` is retry-safe in the frozen catalogue. A stop, status toggle, form
submission, retrieval request, archive generation, or model execution remains
a mutation when its provider method is not `GET`.

## Interpret kind and risk

| Kind | Count | Meaning |
|---|---:|---|
| Tool | 73 | Normal app or Knowledge operation |
| Workflow | 6 | Workflow run read, run-by-ID, stop, event stream, and human-input form operations |

The app invocation alias is a Workflow for `workflow` mode and an Agent for all
other modes.

| Risk | Count | Rule |
|---|---:|---|
| Low | 32 | Every `GET` |
| Medium | 37 | Non-delete mutation except two named high-impact operations |
| High | 10 | Every `DELETE`, `workflow.run_by_id`, and `annotation_reply.toggle` |

Risk is policy input, not authorization. Medium and high mutations both require
approval and idempotency.

## Apply approval, idempotency, and retry

| Contract | Catalogue read | Catalogue mutation | App invocation alias |
|---|---|---|---|
| Approval | No | Required | Required for workflow and agent-family modes |
| Idempotency key | Optional | Required | Required |
| Key scope | Tenant | Tenant | Tenant |
| Collision behavior | Revalidate input hash | Revalidate input hash | Revalidate input hash |
| Published TTL | 86400000 ms | 86400000 ms | 86400000 ms |
| Connector retry support | Yes | No | No |
| Retry safety | Safe | Unsafe | Unsafe |

Catalogue approval uses tenant policy for 900,000 ms and requires a reason,
input snapshot, and policy decision. The absence of connector-required approval
on plain `chat` or `completion` aliases does not override deployment policy.

An idempotency key identifies one intent. It does not prove that Dify
deduplicates every route, stream, model invocation, or mutation. Preserve the
same Action and inspect provider state after an uncertain outcome.

## Understand execution and response transport

| Response kind | Count | AIP result |
|---|---:|---|
| JSON or UTF-8 | 74 | HTTP status, decoded body, optional content type and provider request ID |
| Binary | 3 | HTTP status, base64 content, content type, size, and optional request ID |
| Server-sent events | 2 | Bounded event handling and normalized result |

The two catalogue SSE operations are `workflow.run_by_id` and
`workflow.event.stream`. The three binary operations are `file.preview`,
`audio.synthesize`, and `document.download_zip`.

Six operations use multipart input: `file.upload`, `audio.transcribe`, three
document upload or update operations, and `pipeline.file.upload`. Every other
frozen operation uses path, query, and optional JSON input.

App invocation aliases separately support sync, async, streaming, and
cancellation. Catalogue support is operation-specific.

## Apply data and compensation rules

All 79 frozen operations and every app alias declare:

- confidential data;
- possible personal information;
- required redaction;
- external network side effects.

Reads add a read side effect. Mutations add a write side effect, require
approval and a key, and declare `rollback_not_supported` with no compensating
capability. The connector publishes no transaction or reconciliation support.

## Use the machine snapshot

The JSON asset contains source and upstream identities, aggregate counts, the
app-alias contract, and one ordered record for every frozen operation. Each
record includes ID template, family, scope, route, user placement, encoding,
transport, supported modes, kind, risk, approval, idempotency, execution, data,
and compensation.

Its reviewed SHA-256 is:

```text
7884f23e2abce41ea14e869d4202f497a2294ae931facd7917467624a7fc6019
```

The snapshot is a source-derived review artifact. It does not prove registry
admission, tenant authorization, artifact qualification, or live Dify
compatibility.

## Choose the next page

- Use `app-metadata-and-files.md` for app discovery, end users, upload, and
  preview.
- Use `chat-messages-conversations-and-feedback.md` for chat history and state.
- Use `workflows-streaming-and-human-input.md` for remote tasks and forms.
- Use `audio.md` and `annotations.md` for their app-specific domains.
- Use the five `knowledge-*.md` pages for workspace datasets, documents,
  chunks, metadata, models, and pipelines.

## Related documentation

- [Source-derived capability snapshot](../assets/capabilities.json)
- [Dify connector overview](../README.md)
- [Dify connector configuration](../reference/configuration.md)
- [Capabilities and contracts](../../../concepts/capabilities.md)
- [Approvals and policy](../../../concepts/approvals-and-policy.md)
