Dify chat messages, conversations, and feedback Use this family to read chat history, suggestions, conversations, feedback, and conversation variables. It also supports feedback, rename, variable-update, and conversation-deletion mutations under AIP approval and replay controls. Most operations require a chat-like Dify application and one stable end-user identity. Application-wide feedback is the exception. It has no end-user input and is projected for every configured app mode. Choose an operation | Operation suffix | Method and route | Identity input | Connector projection | Policy | | message.list | GET /v1/messages | user in query | Four chat-like modes | Low-risk read; retry supported | | message.feedback.create | POST /v1/messages/{messageid}/feedbacks | user in JSON | Four chat-like modes | Medium mutation; approval and key required | | feedback.list | GET /v1/app/feedbacks | None | All six app modes | Low-risk read; retry supported | | message.suggested.get | GET /v1/messages/{messageid}/suggested | user in query | Four chat-like modes | Low-risk read; retry supported | | conversation.list | GET /v1/conversations | user in query | Four chat-like modes | Low-risk read; retry supported | | conversation.delete | DELETE /v1/conversations/{conversationid} | user in JSON | Four chat-like modes | High mutation; approval and key required | | conversation.rename | POST /v1/conversations/{conversationid}/name | user in JSON | Four chat-like modes | Medium mutation; approval and key required | | conversation.variable.list | GET /v1/conversations/{conversationid}/variables | user in query | See mode boundary below | Low-risk read; retry supported | | conversation.variable.update | PUT /v1/conversations/{conversationid}/variables/{variableid} | user in JSON | See mode boundary below | Medium mutation; approval and key required | The four chat-like connector modes are chat, advanced-chat, agent-chat, and agent. At the pinned Dify revision, conversation-variable routes accept only the first three. Connector discovery still projects both variable operations for agent, so do not invoke them for that mode. The capability template is: cap:dify:: Obtain the exact capability ID from tenant discovery. A capability exposed for one app does not authorize access to another app or another end user. Partition the Action input | Input field | Connector behavior | | messageid | Renders one message route segment | | conversationid | Renders one conversation route segment or enters a provider query | | variableid | Renders one conversation-variable route segment | | user | Enters the query for user-scoped reads and JSON for mutations | | query | Supplies bounded provider query fields | | body | Supplies bounded provider JSON fields | Each rendered path value contains 1 to 512 bytes without control characters. The connector accepts a bounded string, while the pinned provider routes parse message, conversation, and variable path values as UUIDs. user contains 1 to 256 bytes without control characters. The connector inserts it into the required query or body location. A conflicting provider user value is rejected before dispatch. query has at most 128 keys. Each name contains 1 to 256 bytes, and each value is a scalar or an array of at most 256 scalars. body has at most 512 properties, and its encoded JSON cannot exceed 8 MiB. Read messages and suggestions List one user's messages by selecting message.list and passing the provider conversation ID in query: { "user": "tenant-user-0190", "query": { "conversationid": "0190c42f-2d5a-7000-8000-000000000101", "limit": 20 } } The pinned provider requires conversationid. firstid is an optional message cursor, and limit ranges from 1 to 100 with a default of 20. The first page returns the latest messages; the next request uses the first retained message ID to fetch older records. Use message.suggested.get with a UUID messageid and the same user value. The provider can reject the read when the message is absent or suggested questions are disabled. Read application feedback feedback.list reads feedback across the selected application rather than one end user. Its provider query accepts page from 1 upward and limit from 1 to 101. Both default to 1 and 20 respectively. The returned records can identify conversations, messages, end users, or accounts. Treat the result as confidential PII even though the request has no user field. Read conversations and variables conversation.list accepts optional lastid, limit, and sortby query fields. limit ranges from 1 to 100 and defaults to 20. sortby is one of createdat, -createdat, updatedat, or -updatedat. conversation.variable.list requires a UUID conversationid. Its query can carry lastid, a limit from 1 to 100, and variablename. The name contains 1 to 255 safe alphanumeric, hyphen, underscore, or period characters. Conversation and variable reads are end-user scoped. A valid app key does not permit one user value to read another user's conversation state. Apply the four mutations Every mutation requires tenant-policy approval and one non-blank Action idempotency key of at most 512 bytes. The connector sends the key to Dify and retains a tenant-scoped AIP reservation for 24 hours. This does not prove that the provider deduplicates a repeated external effect. Submit or replace message feedback with message.feedback.create: { "messageid": "0190c42f-2d5a-7000-8000-000000000102", "user": "tenant-user-0190", "body": { "rating": "like", "content": "The answer resolved the task." } } The pinned provider accepts like, dislike, or null for rating; null revokes earlier feedback. content is optional. The other mutation bodies are: | Operation | Required provider body | | conversation.delete | No field beyond the connector-inserted user | | conversation.rename | Non-blank name, or autogenerate: true | | conversation.variable.update | value matching the variable's declared type | Delete is irreversible through this connector. Rename and variable update also declare no rollback capability. Verify the exact conversation, user, and variable before approval. Interpret the result A successful JSON operation completes with the generic connector envelope: { "httpstatus": 200, "body": { "result": "success" }, "contenttype": "application/json", "providerrequestid": null } The nested body follows the selected pinned Dify route. A non-success provider status becomes a typed connector error instead of a completed envelope. All nine operations are synchronous and do not publish streaming or capability-specific cancellation. Results, query values, feedback, messages, and variables carry confidential data with PII and redaction requirements. Recover safely | Observation | Decision | | Read input is rejected before dispatch | Correct the path, user, query, or body under the same task decision | | Variable operation on agent is rejected | Do not retry; use a supported app mode or remove the unsupported call | | Message or conversation is absent | Re-establish the exact app, user, and UUID before another request | | Read fails with a verified retryable error | Retry only within the declared Action budget | | Mutation remains pending approval | Decide the same immutable Action and input | | Mutation fails before provider dispatch | Correct the rejected input without claiming an external effect | | Mutation response is lost or transport-ambiguous | Treat provider outcome as uncertain and inspect authoritative Dify state | | Delete outcome cannot be established | Escalate; do not create a replacement delete Action | | Returned data crosses an app or user boundary | Stop traffic and treat the event as an isolation incident | None of the four mutations publishes safe retry support. Preserve the original Action ID, input, key, approval, provider request identity, and final read used to settle the outcome. Related documentation • Dify capability index (README.md) • Dify connector overview (../README.md) • Dify connector configuration (../reference/configuration.md) • Authentication and credential scopes (../getting-started/authentication-and-credential-scopes.md) • Errors and retry decisions (../../../reference/errors.md)