# Web API
Public APIs for web applications including file uploads, chat interactions, and app management
## Version: 1.0
### Available authorizations
#### Bearer (HTTP, bearer)
Use the Service API key as a Bearer token in the Authorization header.
Bearer format: API_KEY
---
## web
Web application API operations
### [POST] /account/change-email
**Send an old/new-email challenge for the cookie Account; no profile changes occur**
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ChangeEmailSendPayload](#changeemailsendpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Verification challenge | **application/json**: [SimpleResultDataResponse](#simpleresultdataresponse)
|
| 400 | Bad Request | **application/json**: [AccountNotFoundError](#accountnotfounderror)
[InvalidEmailError](#invalidemailerror)
[InvalidOrExpiredTokenError](#invalidorexpiredtokenerror)
[ErrorResponse](#errorresponse)
|
| 429 | Too Many Requests | **application/json**: [EmailChangeRateLimitExceededError](#emailchangeratelimitexceedederror)
[EmailSendIpLimitError](#emailsendiplimiterror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /account/change-email/check-email-unique
**Check email availability for an admitted Account; do not mutate accounts or tokens**
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [CheckEmailUniquePayload](#checkemailuniquepayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Email available | **application/json**: [SimpleResultResponse](#simpleresultresponse)
|
| 400 | Bad Request | **application/json**: [AccountInFreezeError](#accountinfreezeerror)
[EmailAlreadyInUseError](#emailalreadyinuseerror)
[EmailDomainSuspendedError](#emaildomainsuspendederror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /account/change-email/reset
**Change only the admitted Account's verified address; failures preserve identity and memberships**
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ChangeEmailResetPayload](#changeemailresetpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Updated Account settings | **application/json**: [WebAccountResponse](#webaccountresponse)
|
| 400 | Bad Request | **application/json**: [AccountInFreezeError](#accountinfreezeerror)
[AccountNotFoundError](#accountnotfounderror)
[EmailAlreadyInUseError](#emailalreadyinuseerror)
[EmailDomainSuspendedError](#emaildomainsuspendederror)
[InvalidOrExpiredTokenError](#invalidorexpiredtokenerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /account/change-email/validity
**Verify this Account's challenge and promote its token without changing identity**
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ChangeEmailValidityPayload](#changeemailvaliditypayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Verified challenge | **application/json**: [VerificationTokenResponse](#verificationtokenresponse)
|
| 400 | Bad Request | **application/json**: [EmailCodeError](#emailcodeerror)
[InvalidEmailError](#invalidemailerror)
[InvalidOrExpiredTokenError](#invalidorexpiredtokenerror)
[ErrorResponse](#errorresponse)
|
| 429 | Too Many Requests | **application/json**: [EmailChangeLimitError](#emailchangelimiterror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /account/password
**Set or change the admitted Account's password when password login is enabled**
A same-origin Account cookie is required. Existing credentials require the
current password; confirmation and policy failures leave credentials unchanged.
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [WebAccountPasswordPayload](#webaccountpasswordpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Updated Account settings | **application/json**: [WebAccountResponse](#webaccountresponse)
|
| 400 | Bad Request | **application/json**: [CurrentPasswordIncorrectError](#currentpasswordincorrecterror)
[InvalidAccountPasswordError](#invalidaccountpassworderror)
[RepeatPasswordNotMatchError](#repeatpasswordnotmatcherror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /account/profile
**Return private settings for an admitted Account; unavailable Accounts return 401 without caching**
Get personal Account settings using the WebApp Account cookie, without App or workspace scope.
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Account profile | **application/json**: [WebAccountProfileResponse](#webaccountprofileresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [PATCH] /account/profile
**Update submitted profile fields for a same-origin Account cookie, without changing identity or membership**
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [AccountProfilePatchPayload](#accountprofilepatchpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Updated Account settings | **application/json**: [WebAccountResponse](#webaccountresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /audio-to-text
**Convert audio to text**
Convert audio file to text using speech-to-text service.
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [AudioToTextResponse](#audiototextresponse)
|
| 400 | Bad Request | **application/json**: [AppUnavailableError](#appunavailableerror)
[CompletionRequestError](#completionrequesterror)
[ModelCurrentlyNotSupportError](#modelcurrentlynotsupporterror)
[NoAudioUploadedError](#noaudiouploadederror)
[ProviderNotInitializeError](#providernotinitializeerror)
[ProviderNotSupportSpeechToTextError](#providernotsupportspeechtotexterror)
[ProviderQuotaExceededError](#providerquotaexceedederror)
[SpeechToTextDisabledError](#speechtotextdisablederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 413 | Audio file too large | **application/json**: [AudioTooLargeError](#audiotoolargeerror)
[ErrorResponse](#errorresponse)
|
| 415 | Unsupported audio type | **application/json**: [UnsupportedAudioTypeError](#unsupportedaudiotypeerror)
[ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /chat-messages
Create a chat message for conversational applications.
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ChatMessagePayload](#chatmessagepayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [GeneratedAppResponse](#generatedappresponse)
|
| 400 | Bad Request | **application/json**: [AgentNotPublishedError](#agentnotpublishederror)
[AppUnavailableError](#appunavailableerror)
[CompletionRequestError](#completionrequesterror)
[ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ConnectionCredentialsInvalidError](#connectioncredentialsinvaliderror)
[ConnectionRequiredError](#connectionrequirederror)
[ModelCurrentlyNotSupportError](#modelcurrentlynotsupporterror)
[NotChatAppError](#notchatapperror)
[ProviderNotInitializeError](#providernotinitializeerror)
[ProviderQuotaExceededError](#providerquotaexceedederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 404 | App Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionConflictError](#connectionconflicterror)
[ConnectionReauthorizationRequiredError](#connectionreauthorizationrequirederror)
[ConnectionRevisionChangedError](#connectionrevisionchangederror)
[EndUserBusyError](#enduserbusyerror)
[WebappResourcesChangedError](#webappresourceschangederror)
[ErrorResponse](#errorresponse)
|
| 429 | Too Many Requests | **application/json**: [RateLimitError](#ratelimiterror)
[ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [ConnectionCredentialsUnavailableError](#connectioncredentialsunavailableerror)
[CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /chat-messages/{task_id}/stop
Stop a running chat message task.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| task_id | path | Task ID to stop | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [SimpleResultResponse](#simpleresultresponse)
|
| 400 | Bad Request | **application/json**: [NotChatAppError](#notchatapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | Task Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /completion-messages
Create a completion message for text generation applications.
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [CompletionMessagePayload](#completionmessagepayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [GeneratedAppResponse](#generatedappresponse)
|
| 400 | Bad Request | **application/json**: [AppUnavailableError](#appunavailableerror)
[CompletionRequestError](#completionrequesterror)
[ModelCurrentlyNotSupportError](#modelcurrentlynotsupporterror)
[NotCompletionAppError](#notcompletionapperror)
[ProviderNotInitializeError](#providernotinitializeerror)
[ProviderQuotaExceededError](#providerquotaexceedederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | App Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /completion-messages/{task_id}/stop
Stop a running completion message task.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| task_id | path | Task ID to stop | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [SimpleResultResponse](#simpleresultresponse)
|
| 400 | Bad Request | **application/json**: [NotCompletionAppError](#notcompletionapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | Task Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /connections
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| cursor | query | | No | string |
| limit | query | | No | integer,
**Default:** 20 |
| provider | query | | No | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Personal connections | **application/json**: [EndUserConnectionListResponse](#enduserconnectionlistresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /connections
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [EndUserConnectionCreatePayload](#enduserconnectioncreatepayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | API-key connection created | **application/json**: [EndUserConnectionResponse](#enduserconnectionresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ConnectionCredentialsInvalidError](#connectioncredentialsinvaliderror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionRevisionChangedError](#connectionrevisionchangederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [ConnectionCredentialsUnavailableError](#connectioncredentialsunavailableerror)
[CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /connections/asset
Read a plugin README asset for a published personal Connection requirement.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| file_name | query | Asset filename relative to the plugin's _assets directory | Yes | string |
| plugin_unique_identifier | query | Exact plugin artifact from connection_requirements | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Plugin asset | **application/octet-stream**: binary
|
| 400 | Bad Request | **application/json**: [AgentNotPublishedError](#agentnotpublishederror)
[AppUnavailableError](#appunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /connections/configuration
Read saved choices and whether authorization must be renewed, without checking credentials.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| conversation_id | query | Existing Chatflow Conversation whose choices to read, including an empty set. Omit for App defaults when initializing a new conversation or plain Workflow. | No | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Saved Connection configuration | **application/json**: [ConnectionConfigurationResponse](#connectionconfigurationresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [PUT] /connections/configuration
Replace saved choices and explicitly approve their authorization contract atomically.
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ConnectionConfigurationPayload](#connectionconfigurationpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Connection configuration saved | **application/json**: [ConnectionConfigurationResponse](#connectionconfigurationresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 404 | Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionConflictError](#connectionconflicterror)
[ConnectionReauthorizationRequiredError](#connectionreauthorizationrequirederror)
[ConnectionRevisionChangedError](#connectionrevisionchangederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /connections/credential-schema
Read API-key form fields for an authorized published tool node; no credential values.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| connection_revision | query | Opaque revision issued for the current Web App. Use App parameters for tool-node operations or the owned Connection revision endpoint for Provider management. | Yes | string (uuid) |
| node_id | query | | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | API-key form schema | **application/json**: [ConnectionCredentialSchemaResponse](#connectioncredentialschemaresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionRevisionChangedError](#connectionrevisionchangederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /connections/oauth/authorization-url
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [EndUserConnectionOAuthPayload](#enduserconnectionoauthpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OAuth authorization URL | **application/json**: [EndUserConnectionOAuthResponse](#enduserconnectionoauthresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ConnectionOauthFailedError](#connectionoauthfailederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionReauthorizationRequiredError](#connectionreauthorizationrequirederror)
[ConnectionRevisionChangedError](#connectionrevisionchangederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [ConnectionCredentialsUnavailableError](#connectioncredentialsunavailableerror)
[CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /connections/oauth/{provider}/callback
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| provider | path | | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 302 | Redirect to OAuth completion page | |
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ConnectionOauthFailedError](#connectionoauthfailederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 404 | Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionConflictError](#connectionconflicterror)
[ConnectionReauthorizationRequiredError](#connectionreauthorizationrequirederror)
[ConnectionRevisionChangedError](#connectionrevisionchangederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [ConnectionCredentialsUnavailableError](#connectioncredentialsunavailableerror)
[CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /connections/preflight
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [EndUserConnectionPreflightPayload](#enduserconnectionpreflightpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Connection statuses and preflight readiness | **application/json**: [EndUserConnectionPreflightResponse](#enduserconnectionpreflightresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionConflictError](#connectionconflicterror)
[ConnectionReauthorizationRequiredError](#connectionreauthorizationrequirederror)
[ConnectionRevisionChangedError](#connectionrevisionchangederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [ConnectionCredentialsUnavailableError](#connectioncredentialsunavailableerror)
[CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /connections/readme
Read plugin documentation for a published personal Connection requirement.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| language | query | README language, as in the Console plugin API | No | string,
**Default:** en-US |
| plugin_unique_identifier | query | Exact plugin artifact from connection_requirements | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Plugin README | **application/json**: [ConnectionReadmeResponse](#connectionreadmeresponse)
|
| 400 | Bad Request | **application/json**: [AgentNotPublishedError](#agentnotpublishederror)
[AppUnavailableError](#appunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [DELETE] /connections/{connection_id}
Disconnect locally and remove live selections, then attempt OAuth revocation against the original plugin artifact and Client. Remote failures never undo local deletion or fall back to installed versions.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| connection_id | path | | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 204 | Connection deleted | |
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 404 | Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionConflictError](#connectionconflicterror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /connections/{connection_id}
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| connection_id | path | | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Personal connection | **application/json**: [EndUserConnectionResponse](#enduserconnectionresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 404 | Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [PATCH] /connections/{connection_id}
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| connection_id | path | | Yes | string (uuid) |
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [EndUserConnectionUpdatePayload](#enduserconnectionupdatepayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Connection updated | **application/json**: [EndUserConnectionResponse](#enduserconnectionresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ConnectionCredentialsInvalidError](#connectioncredentialsinvaliderror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 404 | Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionConflictError](#connectionconflicterror)
[ConnectionRevisionChangedError](#connectionrevisionchangederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [ConnectionCredentialsUnavailableError](#connectioncredentialsunavailableerror)
[CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /connections/{connection_id}/reauthorize
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| connection_id | path | | Yes | string (uuid) |
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [EndUserConnectionReauthorizePayload](#enduserconnectionreauthorizepayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OAuth reauthorization URL | **application/json**: [EndUserConnectionOAuthResponse](#enduserconnectionoauthresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ConnectionOauthFailedError](#connectionoauthfailederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 404 | Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionReauthorizationRequiredError](#connectionreauthorizationrequirederror)
[ConnectionRevisionChangedError](#connectionrevisionchangederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [ConnectionCredentialsUnavailableError](#connectioncredentialsunavailableerror)
[CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /connections/{connection_id}/revision
Read a Provider revision for an owned Connection, independently of published tool nodes.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| connection_id | path | | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Current Provider revision | **application/json**: [EndUserConnectionRevisionResponse](#enduserconnectionrevisionresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 404 | Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /conversations
Retrieve paginated list of conversations for a chat application.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| last_id | query | | No | string |
| limit | query | | No | integer,
**Default:** 20 |
| pinned | query | | No | boolean |
| sort_by | query | | No | string,
**Available values:** "-created_at", "-updated_at", "created_at", "updated_at",
**Default:** -updated_at |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [ConversationInfiniteScrollPagination](#conversationinfinitescrollpagination)
|
| 400 | Invalid conversation list query or app mode does not match the API route. | **application/json**: [NotChatAppError](#notchatapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | `conversation_cursor_not_found`: Cursor is outside the current list. `conversation_not_found`: The app or user is no longer available. | **application/json**: [ConversationCursorNotFoundError](#conversationcursornotfounderror)
[ConversationNotFoundError](#conversationnotfounderror)
[ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [DELETE] /conversations/{c_id}
Delete a specific conversation.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| c_id | path | Conversation UUID | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 204 | Conversation deleted successfully | |
| 400 | Bad Request | **application/json**: [NotChatAppError](#notchatapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | `conversation_not_found`: Conversation does not exist for this user and app. | **application/json**: [ConversationNotFoundError](#conversationnotfounderror)
[ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /conversations/{c_id}/name
Rename a specific conversation with a custom name or auto-generate one.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| c_id | path | Conversation UUID | Yes | string (uuid) |
| auto_generate | query | Auto-generate conversation name | No | boolean |
| name | query | New conversation name | No | string |
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ConversationRenamePayload](#conversationrenamepayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Conversation renamed successfully; model failure preserves the existing name. | **application/json**: [SimpleConversation](#simpleconversation)
|
| 400 | Bad Request | **application/json**: [NotChatAppError](#notchatapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | `conversation_not_found`: Conversation does not exist. `conversation_first_message_not_found`: No first message is available for automatic naming. | **application/json**: [ConversationFirstMessageNotFoundError](#conversationfirstmessagenotfounderror)
[ConversationNotFoundError](#conversationnotfounderror)
[ErrorResponse](#errorresponse)
|
| 422 | Invalid conversation rename payload. | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [PATCH] /conversations/{c_id}/pin
Pin a specific conversation to keep it at the top of the list.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| c_id | path | Conversation UUID | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Conversation pinned successfully | **application/json**: [ResultResponse](#resultresponse)
|
| 400 | Bad Request | **application/json**: [NotChatAppError](#notchatapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | `conversation_not_found`: Conversation does not exist for this user and app. | **application/json**: [ConversationNotFoundError](#conversationnotfounderror)
[ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [PATCH] /conversations/{c_id}/unpin
Remove the current user's pin. Succeeds when the conversation is already unpinned.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| c_id | path | Conversation UUID | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Conversation unpinned successfully | **application/json**: [ResultResponse](#resultresponse)
|
| 400 | Bad Request | **application/json**: [NotChatAppError](#notchatapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | `conversation_not_found`: The app or user is no longer available. | **application/json**: [ConversationNotFoundError](#conversationnotfounderror)
[ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /email-code-login
Send email verification code for login
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [EmailCodeLoginSendPayload](#emailcodeloginsendpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Email code sent successfully | **application/json**: [SimpleResultDataResponse](#simpleresultdataresponse)
|
| 400 | Bad request - invalid email format | **application/json**: [ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [AuthenticationFailedError](#authenticationfailederror)
[ErrorResponse](#errorresponse)
|
| 404 | Account not found | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /email-code-login/validity
Verify email code and complete login
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [EmailCodeLoginVerifyPayload](#emailcodeloginverifypayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Email code verified and login successful | **application/json**: [AccessTokenResultResponse](#accesstokenresultresponse)
|
| 400 | Bad request - invalid code or token | **application/json**: [AccountBannedError](#accountbannederror)
[EmailCodeError](#emailcodeerror)
[InvalidEmailError](#invalidemailerror)
[ErrorResponse](#errorresponse)
|
| 401 | Invalid token or expired code | **application/json**: [AuthenticationFailedError](#authenticationfailederror)
[ErrorResponse](#errorresponse)
|
| 404 | Account not found | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /files/upload
**Upload a file for use in web applications**
Upload a file for use in web applications
Accepts file uploads for use within web applications, supporting
multiple file types with automatic validation and storage.
Args:
app_model: The associated application model
end_user: The end user uploading the file
Form Parameters:
file: The file to upload (required)
source: Optional source type (datasets or None)
Returns:
dict: File information including ID, URL, and metadata
int: HTTP status code 201 for success
Raises:
NoFileUploadedError: No file provided in request
TooManyFilesError: Multiple files provided (only one allowed)
FilenameNotExistsError: File has no filename
FileTooLargeError: File exceeds size limit
UnsupportedFileTypeError: File type not supported
BlockedFileExtensionError: File extension is blocked
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | File uploaded successfully | **application/json**: [FileResponse](#fileresponse)
|
| 400 | - `no_file_uploaded` : No file was provided in the request. - `too_many_files` : Only one file is allowed per request. - `filename_not_exists_error` : The uploaded file has no filename. - `file_extension_blocked` : The file extension is blocked for security reasons. | **application/json**: [FileExtensionBlockedError](#fileextensionblockederror)
[FilenameNotExistsError](#filenamenotexistserror)
[NoFileUploadedError](#nofileuploadederror)
[TooManyFilesError](#toomanyfileserror)
[ErrorResponse](#errorresponse)
|
| 413 | `file_too_large` : File size exceeded. | **application/json**: [FileTooLargeError](#filetoolargeerror)
[ErrorResponse](#errorresponse)
|
| 415 | `unsupported_file_type` : File type not allowed. | **application/json**: [UnsupportedFileTypeError](#unsupportedfiletypeerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /forgot-password
Send password reset email
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ForgotPasswordSendPayload](#forgotpasswordsendpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Password reset email sent successfully | **application/json**: [SimpleResultDataResponse](#simpleresultdataresponse)
|
| 400 | Bad request - invalid email format | **application/json**: [ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [AuthenticationFailedError](#authenticationfailederror)
[ErrorResponse](#errorresponse)
|
| 404 | Account not found | **application/json**: [ErrorResponse](#errorresponse)
|
| 429 | Too many requests - rate limit exceeded | **application/json**: [EmailSendIpLimitError](#emailsendiplimiterror)
[PasswordResetRateLimitExceededError](#passwordresetratelimitexceedederror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /forgot-password/resets
Reset user password with verification token
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ForgotPasswordResetPayload](#forgotpasswordresetpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Password reset successfully | **application/json**: [SimpleResultResponse](#simpleresultresponse)
|
| 400 | Bad request - invalid parameters or password mismatch | **application/json**: [InvalidOrExpiredTokenError](#invalidorexpiredtokenerror)
[PasswordMismatchError](#passwordmismatcherror)
[ErrorResponse](#errorresponse)
|
| 401 | Invalid or expired token | **application/json**: [AuthenticationFailedError](#authenticationfailederror)
[ErrorResponse](#errorresponse)
|
| 404 | Account not found | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /forgot-password/validity
Verify password reset token validity
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ForgotPasswordCheckPayload](#forgotpasswordcheckpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Token is valid | **application/json**: [VerificationTokenResponse](#verificationtokenresponse)
|
| 400 | Bad request - invalid token format | **application/json**: [EmailCodeError](#emailcodeerror)
[InvalidEmailError](#invalidemailerror)
[InvalidOrExpiredTokenError](#invalidorexpiredtokenerror)
[ErrorResponse](#errorresponse)
|
| 401 | Invalid or expired token | **application/json**: [ErrorResponse](#errorresponse)
|
| 429 | Too Many Requests | **application/json**: [EmailPasswordResetLimitError](#emailpasswordresetlimiterror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /form/human-input/v2/public/{form_token}
Read a public v2 form definition by delivery token without an OTP or login session.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| form_token | path | | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Form definition | **application/json**: [FormDefinitionResponse](#formdefinitionresponse)
|
| 404 | Form not found | **application/json**: [HumanInputFormNotFoundError](#humaninputformnotfounderror)
[ErrorResponse](#errorresponse)
|
| 412 | Form already submitted or expired | **application/json**: [HumanInputFormExpiredError](#humaninputformexpirederror)
[HumanInputFormSubmittedError](#humaninputformsubmittederror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /form/human-input/v2/public/{form_token}
Submit a form with inputs, an action, and email verification proof.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| form_token | path | | Yes | string |
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [HumanInputV2FormSubmitRequest](#humaninputv2formsubmitrequest)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Form submitted | **application/json**: [FormSubmitResponse](#formsubmitresponse)
|
| 400 | Invalid form or email proof | **application/json**: [HumanInputChallengeExpiredError](#humaninputchallengeexpirederror)
[HumanInputChallengeStaleError](#humaninputchallengestaleerror)
[HumanInputInvalidOtpError](#humaninputinvalidotperror)
[InvalidInputError](#invalidinputerror)
[ErrorResponse](#errorresponse)
|
| 404 | Form not found | **application/json**: [HumanInputFormNotFoundError](#humaninputformnotfounderror)
[ErrorResponse](#errorresponse)
|
| 409 | Workflow not active | **application/json**: [WorkflowNotActiveError](#workflownotactiveerror)
[ErrorResponse](#errorresponse)
|
| 412 | Already submitted or expired | **application/json**: [HumanInputFormExpiredError](#humaninputformexpirederror)
[HumanInputFormSubmittedError](#humaninputformsubmittederror)
[ErrorResponse](#errorresponse)
|
| 422 | Invalid request body | **application/json**: [ErrorResponse](#errorresponse)
|
| 503 | Email verification unavailable | **application/json**: [HumanInputV2UnavailableError](#humaninputv2unavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /form/human-input/v2/public/{form_token}/access-request
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| form_token | path | | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [FormAccessRequestResponse](#formaccessrequestresponse)
|
| 404 | Not Found | **application/json**: [HumanInputFormNotFoundError](#humaninputformnotfounderror)
[ErrorResponse](#errorresponse)
|
| 412 | Precondition Failed | **application/json**: [HumanInputFormExpiredError](#humaninputformexpirederror)
[HumanInputFormSubmittedError](#humaninputformsubmittederror)
[ErrorResponse](#errorresponse)
|
| 429 | Too Many Requests | **application/json**: [HumanInputAccessRateLimitExceededError](#humaninputaccessratelimitexceedederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [HumanInputAccessDeliveryFailedError](#humaninputaccessdeliveryfailederror)
[HumanInputV2UnavailableError](#humaninputv2unavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /form/human-input/v2/public/{form_token}/upload-token
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| form_token | path | | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [FormUploadTokenResponse](#formuploadtokenresponse)
|
| 403 | Forbidden | **application/json**: [InvalidUploadTokenError](#invaliduploadtokenerror)
[ErrorResponse](#errorresponse)
|
| 404 | Form not found | **application/json**: [HumanInputFormNotFoundError](#humaninputformnotfounderror)
[ErrorResponse](#errorresponse)
|
| 412 | Already submitted or expired | **application/json**: [HumanInputFormExpiredError](#humaninputformexpirederror)
[HumanInputFormSubmittedError](#humaninputformsubmittederror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /form/human-input/v2/{form_token}
Read a v2 form using the original EndUser's Web App passport.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| form_token | path | | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Form retrieved | **application/json**: [WebAppHumanInputV2FormDefinitionResponse](#webapphumaninputv2formdefinitionresponse)
|
| 401 | Invalid passport | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | Form not found | **application/json**: [ErrorResponse](#errorresponse)
|
| 409 | Already submitted | **application/json**: [AlreadySubmittedError](#alreadysubmittederror)
[ErrorResponse](#errorresponse)
|
| 410 | Expired | **application/json**: [ExpiredError](#expirederror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /form/human-input/v2/{form_token}
Submit a v2 form using the original EndUser's Web App passport.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| form_token | path | | Yes | string |
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [WebAppHumanInputV2SubmitPayload](#webapphumaninputv2submitpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Approval accepted | **application/json**: [WebAppHumanInputV2SubmitResponse](#webapphumaninputv2submitresponse)
|
| 400 | Invalid inputs | **application/json**: [InvalidInputError](#invalidinputerror)
[ErrorResponse](#errorresponse)
|
| 401 | Invalid passport | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | Form not found | **application/json**: [ErrorResponse](#errorresponse)
|
| 409 | Already submitted or workflow not active | **application/json**: [AlreadySubmittedError](#alreadysubmittederror)
[WorkflowNotActiveError](#workflownotactiveerror)
[ErrorResponse](#errorresponse)
|
| 410 | Expired | **application/json**: [ExpiredError](#expirederror)
[ErrorResponse](#errorresponse)
|
| 422 | Invalid request body | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /form/human_input/{form_token}
**Get human input form definition by token**
Get a human input form definition by token
GET /api/form/human_input/
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| form_token | path | Human input form token | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Form retrieved successfully | **application/json**: [HumanInputFormDefinitionResponse](#humaninputformdefinitionresponse)
|
| 403 | Forbidden | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | Form not found | **application/json**: [ErrorResponse](#errorresponse)
|
| 412 | Form already submitted or expired | **application/json**: [HumanInputFormExpiredError](#humaninputformexpirederror)
[HumanInputFormSubmittedError](#humaninputformsubmittederror)
[ErrorResponse](#errorresponse)
|
| 429 | Too many requests | **application/json**: [WebFormRateLimitExceededError](#webformratelimitexceedederror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /form/human_input/{form_token}
**Submit human input form by token**
Submit a human input form by token
POST /api/form/human_input/
Request body:
{
"inputs": {
"content": "User input content"
},
"action": "Approve"
}
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| form_token | path | Human input form token | Yes | string |
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [HumanInputFormSubmitPayload](#humaninputformsubmitpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Form submitted successfully | **application/json**: [HumanInputFormSubmitResponse](#humaninputformsubmitresponse)
|
| 400 | Bad request - invalid submission data | **application/json**: [InvalidFormDataError](#invalidformdataerror)
[ErrorResponse](#errorresponse)
|
| 404 | Form not found | **application/json**: [ErrorResponse](#errorresponse)
|
| 412 | Form already submitted or expired | **application/json**: [HumanInputFormExpiredError](#humaninputformexpirederror)
[HumanInputFormSubmittedError](#humaninputformsubmittederror)
[ErrorResponse](#errorresponse)
|
| 429 | Too many requests | **application/json**: [WebFormRateLimitExceededError](#webformratelimitexceedederror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /form/human_input/{form_token}/upload-token
**Issue an upload token for a human input form**
Issue an upload token for an active human input form
POST /api/form/human_input//upload-token
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| form_token | path | Human input form token | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Upload token issued successfully | **application/json**: [HumanInputUploadTokenResponse](#humaninputuploadtokenresponse)
|
| 404 | Form not found | **application/json**: [ErrorResponse](#errorresponse)
|
| 412 | Form already submitted or expired | **application/json**: [HumanInputFormExpiredError](#humaninputformexpirederror)
[HumanInputFormSubmittedError](#humaninputformsubmittederror)
[ErrorResponse](#errorresponse)
|
| 429 | Too many requests | **application/json**: [WebFormRateLimitExceededError](#webformratelimitexceedederror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /human-input-forms/files
**Upload one local file or remote URL file for a HITL human input form**
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | File uploaded successfully | **application/json**: [FileResponse](#fileresponse)
|
| 400 | Bad Request | **application/json**: [FileExtensionBlockedError](#fileextensionblockederror)
[FilenameNotExistsError](#filenamenotexistserror)
[MalformedUploadTokenError](#malformeduploadtokenerror)
[NoFileUploadedError](#nofileuploadederror)
[RemoteFileAccessDeniedError](#remotefileaccessdeniederror)
[RemoteFileInvalidUrlError](#remotefileinvalidurlerror)
[RemoteFileUrlBlockedError](#remotefileurlblockederror)
[TooManyFilesError](#toomanyfileserror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [UploadTokenRequiredError](#uploadtokenrequirederror)
[ErrorResponse](#errorresponse)
|
| 403 | Forbidden | **application/json**: [InvalidUploadTokenError](#invaliduploadtokenerror)
[ErrorResponse](#errorresponse)
|
| 404 | Not Found | **application/json**: [RemoteFileNotFoundError](#remotefilenotfounderror)
[ErrorResponse](#errorresponse)
|
| 412 | Precondition Failed | **application/json**: [HumanInputFormExpiredError](#humaninputformexpirederror)
[HumanInputFormSubmittedError](#humaninputformsubmittederror)
[ErrorResponse](#errorresponse)
|
| 413 | Request Entity Too Large | **application/json**: [FileTooLargeError](#filetoolargeerror)
[ErrorResponse](#errorresponse)
|
| 415 | Unsupported Media Type | **application/json**: [UnsupportedFileTypeError](#unsupportedfiletypeerror)
[ErrorResponse](#errorresponse)
|
| 502 | Bad Gateway | **application/json**: [RemoteFileInvalidResponseError](#remotefileinvalidresponseerror)
[RemoteFileUnavailableError](#remotefileunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /human-input/v2/files
Upload a file or a remote URL using a v2 upload grant.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| Authorization | header | Bearer v2 upload grant | Yes | string |
#### Request Body
| Required | Schema |
| -------- | ------ |
| No | **multipart/form-data**: { **"file"**: binary, **"url"**: string }
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | File uploaded | **application/json**: [FileWithSignedUrl](#filewithsignedurl)
|
| 400 | Invalid upload | **application/json**: [FileExtensionBlockedError](#fileextensionblockederror)
[FilenameNotExistsError](#filenamenotexistserror)
[MalformedUploadTokenError](#malformeduploadtokenerror)
[NoFileUploadedError](#nofileuploadederror)
[RemoteFileAccessDeniedError](#remotefileaccessdeniederror)
[RemoteFileInvalidUrlError](#remotefileinvalidurlerror)
[RemoteFileUrlBlockedError](#remotefileurlblockederror)
[TooManyFilesError](#toomanyfileserror)
[ErrorResponse](#errorresponse)
|
| 401 | Grant required | **application/json**: [UploadTokenRequiredError](#uploadtokenrequirederror)
[ErrorResponse](#errorresponse)
|
| 403 | Invalid grant | **application/json**: [InvalidUploadTokenError](#invaliduploadtokenerror)
[ErrorResponse](#errorresponse)
|
| 404 | Form not found | **application/json**: [HumanInputFormNotFoundError](#humaninputformnotfounderror)
[RemoteFileNotFoundError](#remotefilenotfounderror)
[ErrorResponse](#errorresponse)
|
| 412 | Form inactive | **application/json**: [HumanInputFormExpiredError](#humaninputformexpirederror)
[HumanInputFormSubmittedError](#humaninputformsubmittederror)
[ErrorResponse](#errorresponse)
|
| 413 | Request Entity Too Large | **application/json**: [FileTooLargeError](#filetoolargeerror)
[ErrorResponse](#errorresponse)
|
| 415 | Unsupported Media Type | **application/json**: [UnsupportedFileTypeError](#unsupportedfiletypeerror)
[ErrorResponse](#errorresponse)
|
| 502 | Bad Gateway | **application/json**: [RemoteFileInvalidResponseError](#remotefileinvalidresponseerror)
[RemoteFileUnavailableError](#remotefileunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /human-input/v2/files/remote
Fetch a remote file using a v2 upload grant.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| Authorization | header | | Yes | string |
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [HumanInputV2RemoteUploadPayload](#humaninputv2remoteuploadpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | File uploaded | **application/json**: [FileWithSignedUrl](#filewithsignedurl)
|
| 400 | Invalid upload | **application/json**: [FileExtensionBlockedError](#fileextensionblockederror)
[FilenameNotExistsError](#filenamenotexistserror)
[MalformedUploadTokenError](#malformeduploadtokenerror)
[NoFileUploadedError](#nofileuploadederror)
[RemoteFileAccessDeniedError](#remotefileaccessdeniederror)
[RemoteFileInvalidUrlError](#remotefileinvalidurlerror)
[RemoteFileUrlBlockedError](#remotefileurlblockederror)
[TooManyFilesError](#toomanyfileserror)
[ErrorResponse](#errorresponse)
|
| 401 | Grant required | **application/json**: [UploadTokenRequiredError](#uploadtokenrequirederror)
[ErrorResponse](#errorresponse)
|
| 403 | Invalid grant | **application/json**: [InvalidUploadTokenError](#invaliduploadtokenerror)
[ErrorResponse](#errorresponse)
|
| 404 | Form not found | **application/json**: [HumanInputFormNotFoundError](#humaninputformnotfounderror)
[RemoteFileNotFoundError](#remotefilenotfounderror)
[ErrorResponse](#errorresponse)
|
| 412 | Form inactive | **application/json**: [HumanInputFormExpiredError](#humaninputformexpirederror)
[HumanInputFormSubmittedError](#humaninputformsubmittederror)
[ErrorResponse](#errorresponse)
|
| 413 | Request Entity Too Large | **application/json**: [FileTooLargeError](#filetoolargeerror)
[ErrorResponse](#errorresponse)
|
| 415 | Unsupported Media Type | **application/json**: [UnsupportedFileTypeError](#unsupportedfiletypeerror)
[ErrorResponse](#errorresponse)
|
| 502 | Bad Gateway | **application/json**: [RemoteFileInvalidResponseError](#remotefileinvalidresponseerror)
[RemoteFileUnavailableError](#remotefileunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /login
**Authenticate user and login**
Authenticate user for web application access
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [LoginPayload](#loginpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Authentication successful | **application/json**: [AccessTokenResultResponse](#accesstokenresultresponse)
|
| 400 | Bad request - invalid email or password format | **application/json**: [AccountBannedError](#accountbannederror)
[ErrorResponse](#errorresponse)
|
| 401 | Authentication failed - email or password mismatch | **application/json**: [AuthenticationFailedError](#authenticationfailederror)
[ErrorResponse](#errorresponse)
|
| 404 | Account not found | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /login/status
Check login status
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| app_code | query | Web app code | No | string |
| mode | query | end_user reports actual Account authentication instead of Public App access | No | string,
**Available values:** "console", "end_user",
**Default:** console |
| user_id | query | End user session ID | No | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Login status | **application/json**: [LoginStatusResponse](#loginstatusresponse)
|
| 401 | Login status | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | App not found | **application/json**: [ErrorResponse](#errorresponse)
|
| 503 | Web app access service unavailable | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /logout
Logout user from web application
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Logout successful | **application/json**: [SimpleResultResponse](#simpleresultresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /me/apps
List accessible Chat, Completion, legacy Agent, Chatflow, Workflow and Agent WebApps using the WebApp Account login cookie. Recent use and favorites are personal WebApp preferences independent of Console stars. No App Passport or workspace membership is required.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| cursor | query | | No | string |
| limit | query | | No | integer,
**Default:** 20 |
| name | query | | No | string |
| view | query | | No | string,
**Available values:** "favorites", "recent", "shared",
**Default:** recent |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Accessible personal Apps | **application/json**: [ConsumerAppsResponse](#consumerappsresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [DELETE] /me/apps/{app_id}
Remove an App from personal recent and favorite lists without deleting its data. A new accepted execution restores the recent entry. Shared discovery remains available.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| app_id | path | | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 204 | App removed from personal lists | |
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [DELETE] /me/apps/{app_id}/favorite
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| app_id | path | | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 204 | App unfavorited | |
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [PUT] /me/apps/{app_id}/favorite
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| app_id | path | | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 204 | App favorited | |
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /me/connections
List personal Connection Providers with localized labels, descriptions, public icons and Connection-group counts across owned tenants. Guests are excluded. Unavailable Providers retain their counts with a Provider-ID label, an empty description and null icons. No App associations are loaded.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| cursor | query | | No | string |
| limit | query | | No | integer,
**Default:** 20 |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Account Connection Providers | **application/json**: [ConsumerConnectionProvidersResponse](#consumerconnectionprovidersresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /me/connections/providers/{provider}/connections
List personal Connections grouped by Provider, account label and Connection type. Connections without an account label form individual groups. WebApp counts include only accessible Apps.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| cursor | query | | No | string |
| limit | query | | No | integer,
**Default:** 20 |
| provider | path | | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Account Connections | **application/json**: [ConsumerConnectionsResponse](#consumerconnectionsresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [DELETE] /me/connections/{connection_key}
Disconnect all owned Connections matching a group key from a Provider's list. Cookie-authenticated browser mutations require the configured WebApp Origin.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| connection_key | path | | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 204 | Connection group disconnected | |
| 404 | Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionConflictError](#connectionconflicterror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /me/connections/{connection_key}/apps
List accessible WebApps associated with a Connection group from a Provider's list.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| cursor | query | | No | string (uuid) |
| limit | query | | No | integer,
**Default:** 20 |
| connection_key | path | | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Associated WebApps | **application/json**: [ConsumerAppsResponse](#consumerappsresponse)
|
| 404 | Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /messages
Retrieve paginated list of messages from a conversation in a chat application.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| conversation_id | query | Conversation ID. | Yes | string |
| first_id | query | The ID of the first chat record on the current page. Omit this value to fetch the latest messages; for subsequent pages, use the first message ID from the current list to fetch older messages. | No | string |
| limit | query | Number of chat history messages to return per request. | No | integer,
**Default:** 20 |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [WebMessageInfiniteScrollPagination](#webmessageinfinitescrollpagination)
|
| 400 | Bad Request - Not a chat app or app unavailable | **application/json**: [AppUnavailableError](#appunavailableerror)
[NotChatAppError](#notchatapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | Conversation, First Message, or End User Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /messages/{message_id}/feedbacks
Submit feedback (like/dislike) for a specific message.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| message_id | path | Message UUID | Yes | string (uuid) |
| content | query | Feedback content | No | string |
| rating | query | Feedback rating | No | string,
**Available values:** "dislike", "like" |
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [MessageFeedbackPayload](#messagefeedbackpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Feedback submitted successfully | **application/json**: [ResultResponse](#resultresponse)
|
| 400 | `message_feedback_rating_required`: Cannot revoke feedback that does not exist. `app_unavailable`: App is no longer available. | **application/json**: [AppUnavailableError](#appunavailableerror)
[MessageFeedbackRatingRequiredError](#messagefeedbackratingrequirederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 403 | Forbidden | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | Message Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /messages/{message_id}/more-like-this
Generate a new completion similar to an existing message (completion apps only).
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| response_mode | query | Response mode | Yes | string,
**Available values:** "blocking", "streaming" |
| message_id | path | | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [GeneratedAppResponse](#generatedappresponse)
|
| 400 | Bad Request - Not a completion app, app unavailable, or model invocation failed | **application/json**: [AppUnavailableError](#appunavailableerror)
[CompletionRequestError](#completionrequesterror)
[ModelCurrentlyNotSupportError](#modelcurrentlynotsupporterror)
[NotCompletionAppError](#notcompletionapperror)
[ProviderNotInitializeError](#providernotinitializeerror)
[ProviderQuotaExceededError](#providerquotaexceedederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 403 | Forbidden - Access denied or more-like-this disabled | **application/json**: [AppMoreLikeThisDisabledError](#appmorelikethisdisablederror)
[ErrorResponse](#errorresponse)
|
| 404 | Message Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /messages/{message_id}/suggested-questions
Get suggested follow-up questions after a message (chat apps only). If no usable model can be resolved or the model call to generate questions fails, the response is HTTP 200 with an empty data list. Model invocation failures during history token counting instead return HTTP 400 with `completion_request_error`.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| message_id | path | Message UUID | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [SuggestedQuestionsResponse](#suggestedquestionsresponse)
|
| 400 | Bad Request - Not a chat app or app unavailable; `completion_request_error` when model invocation fails while counting history tokens. | **application/json**: [AppUnavailableError](#appunavailableerror)
[CompletionRequestError](#completionrequesterror)
[ModelCurrentlyNotSupportError](#modelcurrentlynotsupporterror)
[NotChatAppError](#notchatapperror)
[ProviderNotInitializeError](#providernotinitializeerror)
[ProviderQuotaExceededError](#providerquotaexceedederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 403 | Forbidden - Access denied or suggested questions disabled | **application/json**: [AppSuggestedQuestionsAfterAnswerDisabledError](#appsuggestedquestionsafteranswerdisablederror)
[ErrorResponse](#errorresponse)
|
| 404 | App, End User, Message, or Conversation Not Found | **application/json**: [AgentVersionNotFoundError](#agentversionnotfounderror)
[ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /meta
**Get app meta**
Retrieve the metadata for a specific app.
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [AppMetaResponse](#appmetaresponse)
|
| 400 | Bad Request | **application/json**: [AppUnavailableError](#appunavailableerror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | App Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /migration/claim
Claim up to 50 anonymous browser Passports across Web Apps for one authenticated Account. Submit Guest Passports in passports, with one Account Web login proof in its HttpOnly cookie or Authorization. Complete the login handoff through /api/passport before asking the user to confirm Claim. Validate every source Passport and Account App admission before any transfer or identity creation. Preflight failures return 400 connection_claim_preflight_failed with details.failures indexed by input. An unavailable preflight dependency returns 503; neither failure starts a transfer. Items run in input order with independent transactions; every item returns its index and success or failure. Before transfer, request cancellation of persisted unfinished Guest Workflow/Chatflow Runs through the existing stop flow, then poll until no unfinished Guest Runs remain. The batch shares a five-second readiness window with 100ms polling outside migration transactions. Timeout returns migration_not_ready (nested status 409) for that item without transferring its resources. Stop failure also prevents that Passport from transferring resources. Each Passport atomically transfers Connections, files and all conversations with their personal state. Run terminal status is checked again inside each transfer transaction. Ordinary Chatbot Apps transfer committed history without stopping or waiting for generation. In-flight Chatbot requests may fail after transfer; uncommitted answers may be lost. Their history reads and writes recheck the original caller's current conversation ownership. Existing model calls or streams are not guaranteed to stop immediately. Legacy agent configurations and non-Chatbot Guest history remain unsupported for Chatbot Claim. Concurrent migration or identity updates may report end_user_busy without waiting. Web execution registers each Run under the shared identity fence before launch. Transfer takes the exclusive fence and rechecks unfinished Runs before changing ownership. Success includes the App code, Account App Passport, transferred counts and accepted stop count. Cancellation is not rolled back if the subsequent migration fails. Keep the Guest Passport to retry remaining resources with the same Account. The Guest Passport is not bound to the Account by migration. Retries transfer only resources still owned by the Guest; empty resource categories report zero. New Guest resources are included. Account defaults take precedence; Conversation IDs, history and execution provenance are preserved. Resubmit the same batch or retry failed items separately; no cross-App atomicity is provided.
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ConnectionClaimPayload](#connectionclaimpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Whole Guest migration results | **application/json**: [ConnectionClaimResponse](#connectionclaimresponse)
|
| 400 | Bad Request | **application/json**: [ConnectionClaimPreflightFailedError](#connectionclaimpreflightfailederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [ConnectionClaimUnavailableError](#connectionclaimunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /migration/claimable-passports
Check anonymous Passports held by this browser across Web Apps without changing identity or data. Submit local candidates; return request indices, App names/codes and current Connection/conversation counts. Invalid, expired, duplicate, Account and SSO candidates are omitted. No Account login is required. Unavailable, disabled and unpublished Web Apps are filtered out. Zero-Connection Guest Passports are included. Supports Workflow, Chatflow and ordinary Chatbot Apps; other App modes are omitted. Chatbot Apps with legacy agent configurations or non-Chatbot Guest history are omitted. conversation_count counts Chatflow/Chatbot history; Workflow normally has none. connection_count counts all currently Guest-owned Connections, including ones needing reconnection. This is advisory: actual Claim rechecks ownership and Account App admission.
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [ClaimablePassportsPayload](#claimablepassportspayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Claimable browser Passports | **application/json**: [ClaimablePassportsResponse](#claimablepassportsresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /parameters
**Retrieve app parameters**
Retrieve the parameters for a specific app.
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [WebAppParametersResponse](#webappparametersresponse)
|
| 400 | Bad Request | **application/json**: [AgentNotPublishedError](#agentnotpublishederror)
[AppUnavailableError](#appunavailableerror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | App Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /passport
Get authentication passport for web application access
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| mode | query | end_user reuses Account login; console preserves legacy Web App authentication | No | string,
**Available values:** "console", "end_user",
**Default:** console |
| user_id | query | End user session ID | No | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Passport retrieved successfully | **application/json**: [PassportAccessTokenResponse](#passportaccesstokenresponse)
|
| 401 | Unauthorized - missing app code or invalid authentication | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 404 | Application or user not found | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /passport
Redeem a one-use S256 PKCE login code after returning to /webapp-signin. Returns the App Passport and sets the Web-only Account login proof in an HttpOnly cookie. Account Passports require the matching WebApp login cookie on subsequent requests.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| X-App-Code | header | Web app code | Yes | string |
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [PassportLoginPayload](#passportloginpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Web login completed | **application/json**: [PassportAccessTokenResponse](#passportaccesstokenresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [WebLoginUnavailableError](#webloginunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /remote-files/upload
**Upload a file from a remote URL**
Upload a file from a remote URL
Downloads a file from the provided remote URL and uploads it
to the platform storage for use in web applications.
Args:
app_model: The associated application model
end_user: The end user making the request
JSON Parameters:
url: The remote URL to download the file from (required)
Returns:
dict: File information including ID, signed URL, and metadata
int: HTTP status code 201 for success
Raises:
RemoteFileInvalidUrlError: Remote file URL is invalid
RemoteFileUrlBlockedError: Remote file URL is blocked
RemoteFileNotFoundError: Remote file does not exist
RemoteFileAccessDeniedError: Remote file requires authorization
RemoteFileUnavailableError: Remote file is unavailable
RemoteFileInvalidResponseError: Remote file response is invalid
FileTooLargeError: File exceeds size limit
UnsupportedFileTypeError: File type not supported
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [RemoteFileUploadPayload](#remotefileuploadpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | Remote file uploaded successfully | **application/json**: [FileWithSignedUrl](#filewithsignedurl)
|
| 400 | Invalid, blocked, or inaccessible remote file URL | **application/json**: [FileExtensionBlockedError](#fileextensionblockederror)
[RemoteFileAccessDeniedError](#remotefileaccessdeniederror)
[RemoteFileInvalidUrlError](#remotefileinvalidurlerror)
[RemoteFileUrlBlockedError](#remotefileurlblockederror)
[ErrorResponse](#errorresponse)
|
| 404 | Remote file not found | **application/json**: [RemoteFileNotFoundError](#remotefilenotfounderror)
[ErrorResponse](#errorresponse)
|
| 413 | File too large | **application/json**: [FileTooLargeError](#filetoolargeerror)
[ErrorResponse](#errorresponse)
|
| 415 | Unsupported file type | **application/json**: [UnsupportedFileTypeError](#unsupportedfiletypeerror)
[ErrorResponse](#errorresponse)
|
| 422 | Request payload validation failed | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal server error | **application/json**: [ErrorResponse](#errorresponse)
|
| 502 | Remote file unavailable or returned an invalid response | **application/json**: [RemoteFileInvalidResponseError](#remotefileinvalidresponseerror)
[RemoteFileUnavailableError](#remotefileunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /remote-files/{url}
**Get information about a remote file**
Get information about a remote file
Retrieves basic information about a file located at a remote URL,
including content type and content length.
Args:
app_model: The associated application model
end_user: The end user making the request
url: URL-encoded path to the remote file
Returns:
dict: Remote file information including type and length
Raises:
HTTPException: If the remote file cannot be accessed
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| url | path | | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Remote file information retrieved successfully | **application/json**: [RemoteFileInfo](#remotefileinfo)
|
| 400 | Invalid, blocked, or inaccessible remote file URL | **application/json**: [RemoteFileAccessDeniedError](#remotefileaccessdeniederror)
[RemoteFileInvalidUrlError](#remotefileinvalidurlerror)
[RemoteFileUrlBlockedError](#remotefileurlblockederror)
[ErrorResponse](#errorresponse)
|
| 404 | Remote file not found | **application/json**: [RemoteFileNotFoundError](#remotefilenotfounderror)
[ErrorResponse](#errorresponse)
|
| 500 | Internal server error | **application/json**: [ErrorResponse](#errorresponse)
|
| 502 | Remote file unavailable or returned an invalid response | **application/json**: [RemoteFileInvalidResponseError](#remotefileinvalidresponseerror)
[RemoteFileUnavailableError](#remotefileunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /saved-messages
Retrieve paginated list of saved messages for a completion application.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| last_id | query | | No | string |
| limit | query | | No | integer,
**Default:** 20 |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [SavedMessageInfiniteScrollPagination](#savedmessageinfinitescrollpagination)
|
| 400 | Bad Request - Not a completion app | **application/json**: [NotCompletionAppError](#notcompletionapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | App Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /saved-messages
Save a specific message for later reference.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| message_id | query | Message UUID to save | Yes | string |
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [SavedMessageCreatePayload](#savedmessagecreatepayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Message saved successfully | **application/json**: [ResultResponse](#resultresponse)
|
| 400 | Bad Request - Not a completion app | **application/json**: [NotCompletionAppError](#notcompletionapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | Message Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [DELETE] /saved-messages/{message_id}
Remove a message from saved messages.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| message_id | path | Message UUID to delete | Yes | string (uuid) |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 204 | Message removed successfully | |
| 400 | Bad Request - Not a completion app | **application/json**: [NotCompletionAppError](#notcompletionapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | Message Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /site
**Retrieve app site info**
Retrieve app site information and configuration.
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [WebAppSiteResponse](#webappsiteresponse)
|
| 400 | Bad Request | **application/json**: [ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 403 | Forbidden | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | App Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /system-features
**Get the non-sensitive bootstrap snapshot exposed before authentication**
Get the non-sensitive bootstrap snapshot exposed before Console or Web authentication. This is not a general feature registry.
This endpoint is akin to the `SystemFeatureApi` endpoint in api/controllers/console/feature.py,
except it is intended for use by the web app, instead of the console dashboard.
Authentication configuration must be available before the authentication flow can be selected.
No Account, App Passport, or app code is required. Return the configured
Account sign-in URL, preserving its base path, or null when disabled.
Read deployment settings without issuing credentials or changing state;
feature-query failures propagate unchanged.
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | System features retrieved successfully | **application/json**: [WebSystemFeatureResponse](#websystemfeatureresponse)
|
| 500 | Internal server error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /text-to-audio
**Convert text to audio**
Convert text to audio using text-to-speech service.
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [TextToAudioPayload](#texttoaudiopayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | |
| 400 | Bad Request | **application/json**: [AppUnavailableError](#appunavailableerror)
[CompletionRequestError](#completionrequesterror)
[ModelCurrentlyNotSupportError](#modelcurrentlynotsupporterror)
[ProviderNotInitializeError](#providernotinitializeerror)
[ProviderQuotaExceededError](#providerquotaexceedederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /webapp/access-mode
Retrieve the access mode for a web application (public or restricted).
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| appCode | query | Application code | No | string |
| appId | query | Application ID | No | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [AccessModeResponse](#accessmoderesponse)
|
| 400 | Bad Request | **application/json**: [InvalidParamError](#invalidparamerror)
[ErrorResponse](#errorresponse)
|
| 404 | App Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| 503 | Web App Access Service Unavailable | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [GET] /webapp/permission
Check if user has permission to access a web application.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| appId | query | Application ID | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [BooleanResultResponse](#booleanresultresponse)
|
| 400 | Bad Request | **application/json**: [ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| 503 | Web App Access Service Unavailable | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /workflows/run
**Run workflow**
Execute a workflow with provided inputs and files. With Account Passport enabled, current resource ownership is rechecked and the Run is registered before execution. Admission can reject identity contention or resources changed since preparation. Queued failures use the existing event stream; synchronous conflicts return 409. Refresh and retry.
#### Request Body
| Required | Schema |
| -------- | ------ |
| Yes | **application/json**: [WorkflowRunPayload](#workflowrunpayload)
|
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [GeneratedAppResponse](#generatedappresponse)
|
| 400 | Bad Request | **application/json**: [CompletionRequestError](#completionrequesterror)
[ConnectionConfigurationInvalidError](#connectionconfigurationinvaliderror)
[ConnectionCredentialsInvalidError](#connectioncredentialsinvaliderror)
[ConnectionRequiredError](#connectionrequirederror)
[ModelCurrentlyNotSupportError](#modelcurrentlynotsupporterror)
[NotWorkflowAppError](#notworkflowapperror)
[ProviderNotInitializeError](#providernotinitializeerror)
[ProviderQuotaExceededError](#providerquotaexceedederror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [EndUserLoginRequiredError](#enduserloginrequirederror)
[ErrorResponse](#errorresponse)
|
| 403 | Forbidden | **application/json**: [TriggerWorkflowServiceModeUnavailableError](#triggerworkflowservicemodeunavailableerror)
[ErrorResponse](#errorresponse)
|
| 404 | App Not Found | **application/json**: [ConnectionNotFoundError](#connectionnotfounderror)
[ErrorResponse](#errorresponse)
|
| 409 | Conflict | **application/json**: [ConnectionConflictError](#connectionconflicterror)
[ConnectionReauthorizationRequiredError](#connectionreauthorizationrequirederror)
[ConnectionRevisionChangedError](#connectionrevisionchangederror)
[EndUserBusyError](#enduserbusyerror)
[WebappResourcesChangedError](#webappresourceschangederror)
[ErrorResponse](#errorresponse)
|
| 429 | Too Many Requests | **application/json**: [RateLimitError](#ratelimiterror)
[ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| 503 | Service Unavailable | **application/json**: [ConnectionCredentialsUnavailableError](#connectioncredentialsunavailableerror)
[CredentialCheckUnavailableError](#credentialcheckunavailableerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
### [POST] /workflows/tasks/{task_id}/stop
**Stop workflow task**
Stop a running workflow task.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| task_id | path | Task ID to stop | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: [SimpleResultResponse](#simpleresultresponse)
|
| 400 | Bad Request | **application/json**: [NotWorkflowAppError](#notworkflowapperror)
[ErrorResponse](#errorresponse)
|
| 401 | Unauthorized | **application/json**: [ErrorResponse](#errorresponse)
|
| 404 | Task Not Found | **application/json**: [ErrorResponse](#errorresponse)
|
| 500 | Internal Server Error | **application/json**: [ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
---
## default
Default namespace
### [GET] /workflow/{task_id}/events
**Get workflow execution events stream after resume**
GET /api/workflow//events
Returns Server-Sent Events stream.
#### Parameters
| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| task_id | path | | Yes | string |
#### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | SSE event stream | **application/json**: [EventStreamResponse](#eventstreamresponse)
|
| 400 | Bad Request | **application/json**: [InvalidParamError](#invalidparamerror)
[ErrorResponse](#errorresponse)
|
| default | Error | **application/json**: [ErrorResponse](#errorresponse)
|
---
### Schemas
#### AccessModeResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accessMode | string | | Yes |
#### AccessTokenData
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| access_token | string | | Yes |
#### AccessTokenResultResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [AccessTokenData](#accesstokendata) | | Yes |
| result | string | | Yes |
#### AccountBannedError
Account is banned.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AccountBannedError | | Account is banned. | |
#### AccountInFreezeError
This email account has been deleted within the past 30 days and is temporarily unavailable for new account registration.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AccountInFreezeError | | This email account has been deleted within the past 30 days and is temporarily unavailable for new account registration. | |
#### AccountNotFoundError
Account not found.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AccountNotFoundError | | Account not found. | |
#### AccountProfilePatchPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| avatar | string | | No |
| interface_language | string | | No |
| interface_theme | string,
**Available values:** "dark", "light" | *Enum:* `"dark"`, `"light"` | No |
| name | string | | No |
| timezone | string | | No |
#### AgentNotPublishedError
Agent has not been published. Please publish the Agent before using the web app.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AgentNotPublishedError | | Agent has not been published. Please publish the Agent before using the web app. | |
#### AgentThought
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| answer | string | | No |
| chain_id | string | | No |
| created_at | integer | | No |
| files | [ string ] | | Yes |
| id | string | | Yes |
| message_id | string | | Yes |
| observation | string | | No |
| position | integer | | Yes |
| thought | string | | No |
| tool | string | | No |
| tool_input | string | | No |
| tool_labels | [AnyJSONValue](#anyjsonvalue) | Labels for tools used. | Yes |
#### AgentVersionNotFoundError
Agent config version not found.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AgentVersionNotFoundError | | Agent config version not found. | |
#### AlreadySubmittedError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AlreadySubmittedError | | | |
#### AnyJSONValue
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AnyJSONValue | | | |
#### AppAccessModeQuery
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| appCode | string | Application code | No |
| appId | string | Application ID | No |
#### AppMetaResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| tool_icons | object | Tool icon metadata keyed by tool name | No |
#### AppMode
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AppMode | string | | |
#### AppMoreLikeThisDisabledError
The 'More like this' feature is disabled. Please refresh your page.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AppMoreLikeThisDisabledError | | The 'More like this' feature is disabled. Please refresh your page. | |
#### AppPermissionQuery
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| appId | string | Application ID | Yes |
#### AppSelectorScope
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AppSelectorScope | string | | |
#### AppSuggestedQuestionsAfterAnswerDisabledError
The 'Suggested Questions After Answer' feature is disabled. Please refresh your page.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AppSuggestedQuestionsAfterAnswerDisabledError | | The 'Suggested Questions After Answer' feature is disabled. Please refresh your page. | |
#### AppUnavailableError
App unavailable, please check your app configurations.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AppUnavailableError | | App unavailable, please check your app configurations. | |
#### AudioToTextResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| text | string | | Yes |
#### AudioTooLargeError
Audio size exceeded. {message}
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AudioTooLargeError | | Audio size exceeded. {message} | |
#### AuthenticationFailedError
Invalid email or password.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AuthenticationFailedError | | Invalid email or password. | |
#### BinaryFileResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| BinaryFileResponse | string | | |
#### BooleanResultResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| result | boolean | | Yes |
#### BrandingModel
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| application_title | string | | Yes |
| enabled | boolean | | Yes |
| favicon | string | | Yes |
| login_page_logo | string | | Yes |
| workspace_logo | string | | Yes |
#### ButtonStyle
Button styles for user actions.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ButtonStyle | string | Button styles for user actions. | |
#### ChangeEmailResetPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| new_email | string | | Yes |
| token | string | | Yes |
#### ChangeEmailSendPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| email | string | | Yes |
| language | string | | No |
| phase | string | | No |
| token | string | | No |
#### ChangeEmailValidityPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| code | string | | Yes |
| email | string | | Yes |
| token | string | | Yes |
#### ChatMessagePayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string | Opaque connection contract revision from Web App parameters. Required for EndUser tool authentication; must match current authorization requirements; verified plugin upgrades may inherit consent. | No |
| connections | object | Chatflow choices keyed by independent authorization node ID. Omit on an existing conversation to reuse its last accepted choices. Explicit choices replace the saved configuration after validation. An explicit null, empty map, or missing node does not inherit saved choices. Required for a new conversation with EndUser tool authentication. | No |
| conversation_id | string | Conversation ID | No |
| files | [ object ] | Files to be processed | No |
| inputs | object | Input variables for the chat | Yes |
| parent_message_id | string | Parent message ID | No |
| query | string | User query/message | Yes |
| response_mode | string,
**Available values:** "blocking", "streaming" | Response mode: blocking or streaming | No |
| retriever_from | string,
**Default:** web_app | Source of retriever | No |
#### CheckEmailUniquePayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| email | string | | Yes |
#### ClaimablePassportResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| app_code | string | | Yes |
| app_name | string | | Yes |
| connection_count | integer | Current Guest Connection count; does not determine Passport eligibility | Yes |
| conversation_count | integer | Remaining Chatflow/Chatbot conversations; Workflow normally has zero | Yes |
| index | integer | Index of the candidate in the request's passports list | Yes |
#### ClaimablePassportsPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| passports | [ string ] | | Yes |
#### ClaimablePassportsResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ [ClaimablePassportResponse](#claimablepassportresponse) ] | | Yes |
#### CompletionMessagePayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| files | [ object ] | Files to be processed | No |
| inputs | object | Input variables for the completion | Yes |
| query | string | Query text for completion | No |
| response_mode | string,
**Available values:** "blocking", "streaming" | Response mode: blocking or streaming | No |
| retriever_from | string,
**Default:** web_app | Source of retriever | No |
#### CompletionRequestError
Completion request failed.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| CompletionRequestError | | Completion request failed. | |
#### ConnectionClaimErrorResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| code | string,
**Available values:** "app_not_found", "connection_claim_unavailable", "connection_conflict", "end_user_busy", "end_user_login_required", "migration_not_ready", "unauthorized", "web_app_access_denied" | *Enum:* `"app_not_found"`, `"connection_claim_unavailable"`, `"connection_conflict"`, `"end_user_busy"`, `"end_user_login_required"`, `"migration_not_ready"`, `"unauthorized"`, `"web_app_access_denied"` | Yes |
| message | string | | Yes |
| status | integer | | Yes |
#### ConnectionClaimFailureResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| error | [ConnectionClaimErrorResponse](#connectionclaimerrorresponse) | | Yes |
| index | integer | | Yes |
| status | string | | Yes |
#### ConnectionClaimPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| passports | [ string ] | | Yes |
#### ConnectionClaimPreflightDetails
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| failures | [ [ConnectionClaimFailureResponse](#connectionclaimfailureresponse) ] | | Yes |
#### ConnectionClaimPreflightFailedError
Guest migration preflight failed. No resources were transferred.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionClaimPreflightFailedError | | Guest migration preflight failed. No resources were transferred. | |
#### ConnectionClaimResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ [ConnectionClaimSuccessResponse](#connectionclaimsuccessresponse)
[ConnectionClaimFailureResponse](#connectionclaimfailureresponse) ] | | Yes |
#### ConnectionClaimSuccessResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| access_token | string | | Yes |
| app_code | string | | Yes |
| claimed_connections | integer | Number transferred by this item; zero when no Guest Connections remain | Yes |
| claimed_conversations | integer | Chat conversations transferred for supported Workflow/Chatflow/Chatbot Apps | Yes |
| index | integer | | Yes |
| status | string | | Yes |
| stop_requested_run_count | integer | Guest Runs with accepted stop requests; transfer waits until Guest Runs are terminal | Yes |
#### ConnectionClaimUnavailableError
Guest migration is temporarily unavailable. Please retry.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionClaimUnavailableError | | Guest migration is temporarily unavailable. Please retry. | |
#### ConnectionConfigurationInvalidError
The connection is not compatible with this tool configuration.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionConfigurationInvalidError | | The connection is not compatible with this tool configuration. | |
#### ConnectionConfigurationPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string (uuid) | Opaque revision issued for the current Web App. Use App parameters for tool-node operations or the owned Connection revision endpoint for Provider management. | Yes |
| connections | object | Complete choices keyed by independent authorization node ID. Missing/null nodes are unselected; an empty map clears the configuration. Saving explicitly approves the submitted authorization contract. | Yes |
| conversation_id | string | Existing Chatflow conversation. Omit for a new conversation or plain Workflow. | No |
#### ConnectionConfigurationResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connections | object | Saved Connection details keyed by authorization node ID, not a readiness result. Inaccessible Connection references are returned as null. | Yes |
| reauthorization_required | boolean | Whether this App user must renew authorization for the current requirements; not credential readiness. | Yes |
#### ConnectionConflictError
Connection changed during the operation.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionConflictError | | Connection changed during the operation. | |
#### ConnectionCredentialSchemaResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionCredentialSchemaResponse | array | | |
#### ConnectionCredentialStatus
Last known credential lifecycle state, not readiness for a particular node.
Keep the existing storage values. App-specific Client mismatches and unbinding
must never be written back as a global credential state change.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionCredentialStatus | string | Last known credential lifecycle state, not readiness for a particular node. Keep the existing storage values. App-specific Client mismatches and unbinding must never be written back as a global credential state change. | |
#### ConnectionCredentialType
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionCredentialType | string | | |
#### ConnectionCredentialsInvalidError
Invalid credentials for this provider.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionCredentialsInvalidError | | Invalid credentials for this provider. | |
#### ConnectionCredentialsUnavailableError
Connection credentials are temporarily unavailable.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionCredentialsUnavailableError | | Connection credentials are temporarily unavailable. | |
#### ConnectionNotFoundError
Connection not found.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionNotFoundError | | Connection not found. | |
#### ConnectionOauthFailedError
OAuth authorization could not be completed. Start authorization again.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionOauthFailedError | | OAuth authorization could not be completed. Start authorization again. | |
#### ConnectionPreflightStatus
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| check | [CredentialCheckResult](#credentialcheckresult) | | Yes |
| connection_id | string | | Yes |
| node_id | string | Independent authorization node ID to use as the selection key. | Yes |
| status | [NodeConnectionStatus](#nodeconnectionstatus) | Effective node status; null when availability cannot be determined. | Yes |
#### ConnectionReadmeResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| readme | string | | Yes |
#### ConnectionReauthorizationRequiredError
The OAuth client changed or is unavailable. Start authorization again.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionReauthorizationRequiredError | | The OAuth client changed or is unavailable. Start authorization again. | |
#### ConnectionRequiredError
Select a connection for every required tool before running.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionRequiredError | | Select a connection for every required tool before running. | |
#### ConnectionRevisionChangeDetails
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string | | Yes |
#### ConnectionRevisionChangedError
The connection requirements changed. Refresh and confirm again.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConnectionRevisionChangedError | | The connection requirements changed. Refresh and confirm again. | |
#### ConsumerAppResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| app_code | string | | Yes |
| connection_status | string | App-level personal Connection status. not_configured means required End User tool nodes lack saved Connections; null means this action is not required. | No |
| description | string | | Yes |
| icon | string | | Yes |
| icon_background | string | | Yes |
| icon_type | string | | Yes |
| id | string | | Yes |
| is_favorite | boolean | | Yes |
| last_used_at | integer | Time of the Account's latest accepted WebApp execution, independent of retained execution logs. | Yes |
| mode | string | | Yes |
| name | string | | Yes |
#### ConsumerAppsResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ [ConsumerAppResponse](#consumerappresponse) ] | | Yes |
| has_more | boolean | | Yes |
| next_cursor | string | | Yes |
#### ConsumerConnectionProviderResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connections_count | integer | Number of personal Connection groups under this Provider. | Yes |
| description | object | | Yes |
| icon | string | Public plugin icon URL; null if the Provider is unavailable. | Yes |
| icon_dark | string | Public dark icon URL; null if unavailable or not declared. | Yes |
| label | object | | Yes |
| provider | string | | Yes |
#### ConsumerConnectionProvidersResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ [ConsumerConnectionProviderResponse](#consumerconnectionproviderresponse) ] | | Yes |
| has_more | boolean | | Yes |
| next_cursor | string | | Yes |
#### ConsumerConnectionResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| account_label | string | | Yes |
| connection_type | [ConnectionCredentialType](#connectioncredentialtype) | | Yes |
| key | string (uuid) | Representative Connection ID for associated WebApp queries and disconnect. | Yes |
| name | string | Name of the group member with the smallest Connection ID. | Yes |
| provider | string | | Yes |
| webapps_count | integer | Number of distinct accessible WebApps associated with this group. | Yes |
#### ConsumerConnectionsResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ [ConsumerConnectionResponse](#consumerconnectionresponse) ] | | Yes |
| has_more | boolean | | Yes |
| next_cursor | string | | Yes |
#### ConversationCursorNotFoundError
The conversation cursor is not in the current list. Refresh the list and try again.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConversationCursorNotFoundError | | The conversation cursor is not in the current list. Refresh the list and try again. | |
#### ConversationFirstMessageNotFoundError
The conversation has no message from which to generate a name.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConversationFirstMessageNotFoundError | | The conversation has no message from which to generate a name. | |
#### ConversationInfiniteScrollPagination
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ [SimpleConversation](#simpleconversation) ] | | Yes |
| has_more | boolean | | Yes |
| limit | integer | | Yes |
#### ConversationListQuery
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| last_id | string | | No |
| limit | integer,
**Default:** 20 | | No |
| pinned | boolean | | No |
| sort_by | string,
**Available values:** "-created_at", "-updated_at", "created_at", "updated_at",
**Default:** -updated_at | *Enum:* `"-created_at"`, `"-updated_at"`, `"created_at"`, `"updated_at"` | No |
#### ConversationNotFoundError
The conversation was not found for this user and app.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConversationNotFoundError | | The conversation was not found for this user and app. | |
#### ConversationRenamePayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| auto_generate | boolean | Automatically generate the conversation name. When `true`, the `name` field is ignored. | No |
| name | string | Conversation name. Required when `auto_generate` is `false`. | No |
#### CredentialCheckResult
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| checked_at | integer | | Yes |
| reason_code | string,
**Available values:** "credential_expired", "credential_invalid", "credential_revoked", "provider_network_error", "provider_rate_limited", "provider_timeout", "provider_unavailable" | | Yes |
| retryable | boolean | | Yes |
| status | string,
**Available values:** "invalid", "temporarily_unavailable", "unsupported", "valid" | *Enum:* `"invalid"`, `"temporarily_unavailable"`, `"unsupported"`, `"valid"` | Yes |
#### CredentialCheckUnavailableError
Credential validation is temporarily unavailable.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| CredentialCheckUnavailableError | | Credential validation is temporarily unavailable. | |
#### CurrentPasswordIncorrectError
Current password is incorrect.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| CurrentPasswordIncorrectError | | Current password is incorrect. | |
#### DeploymentEdition
Enum representing the deployment edition of the platform.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| DeploymentEdition | string | Enum representing the deployment edition of the platform. | |
#### EmailAlreadyInUseError
A user with this email already exists.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EmailAlreadyInUseError | | A user with this email already exists. | |
#### EmailChangeLimitError
Too many failed email change attempts. Please try again in 24 hours.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EmailChangeLimitError | | Too many failed email change attempts. Please try again in 24 hours. | |
#### EmailChangeRateLimitExceededError
Too many email change emails have been sent. Please try again in {minutes} minutes.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EmailChangeRateLimitExceededError | | Too many email change emails have been sent. Please try again in {minutes} minutes. | |
#### EmailCodeError
Email code is invalid or expired.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EmailCodeError | | Email code is invalid or expired. | |
#### EmailCodeLoginSendPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| email | string | | Yes |
| language | string | | No |
#### EmailCodeLoginVerifyPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| code | string | | Yes |
| email | string | | Yes |
| token | string | | Yes |
#### EmailDomainSuspendedError
This email domain has been suspended.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EmailDomainSuspendedError | | This email domain has been suspended. | |
#### EmailPasswordResetLimitError
Too many failed password reset attempts. Please try again in 24 hours.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EmailPasswordResetLimitError | | Too many failed password reset attempts. Please try again in 24 hours. | |
#### EmailSendIpLimitError
Too many emails have been sent from this IP address recently. Please try again later.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EmailSendIpLimitError | | Too many emails have been sent from this IP address recently. Please try again later. | |
#### EndUserBusyError
This Web App identity is being updated. Please retry.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EndUserBusyError | | This Web App identity is being updated. Please retry. | |
#### EndUserConnectionCreatePayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string (uuid) | Opaque revision issued for the current Web App. Use App parameters for tool-node operations or the owned Connection revision endpoint for Provider management. | Yes |
| credentials | object | | Yes |
| name | string | Omit or leave empty to generate an incremental API KEY name. | No |
| node_id | string | | Yes |
#### EndUserConnectionListQuery
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| cursor | string | | No |
| limit | integer,
**Default:** 20 | | No |
| provider | string | | No |
#### EndUserConnectionListResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ [EndUserConnectionResponse](#enduserconnectionresponse) ] | | Yes |
| has_more | boolean | | Yes |
| next_cursor | string | | Yes |
#### EndUserConnectionOAuthPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string (uuid) | Opaque revision issued for the current Web App. Use App parameters for tool-node operations or the owned Connection revision endpoint for Provider management. | Yes |
| name | string | Omit or leave empty to generate an incremental AUTH name. | No |
| node_id | string | | Yes |
#### EndUserConnectionOAuthResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| authorization_url | string | | Yes |
#### EndUserConnectionPreflightPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string (uuid) | Opaque revision issued for the current Web App. Use App parameters for tool-node operations or the owned Connection revision endpoint for Provider management. | Yes |
| connections | object | Explicit choices keyed by independent authorization node ID. Missing/null choices remain disconnected; saved choices are never inferred. | Yes |
| conversation_id | string | Existing Chatflow conversation. Omit for a new conversation or plain Workflow. | No |
#### EndUserConnectionPreflightResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string | Connection contract revision evaluated by this preflight. | Yes |
| connections | [ [ConnectionPreflightStatus](#connectionpreflightstatus) ] | | Yes |
| ready | boolean | | Yes |
#### EndUserConnectionReauthorizePayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string (uuid) | Opaque revision issued for the current Web App. Use App parameters for tool-node operations or the owned Connection revision endpoint for Provider management. | Yes |
#### EndUserConnectionResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| account_label | string | | Yes |
| created_at | integer | | Yes |
| credential_status | [ConnectionCredentialStatus](#connectioncredentialstatus) | | Yes |
| credential_type | [ConnectionCredentialType](#connectioncredentialtype) | | Yes |
| expires_at | integer | | Yes |
| id | string | | Yes |
| last_active_at | integer | | Yes |
| name | string | | Yes |
| provider | string | | Yes |
| updated_at | integer | | Yes |
#### EndUserConnectionRevisionResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string (uuid) | Provider revision scoped to this Web App, for operations on the owned Connection. | Yes |
#### EndUserConnectionUpdatePayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string (uuid) | Provider revision required when replacing credentials. | No |
| credentials | object | | No |
| name | string | | No |
#### EndUserLoginRequiredError
Sign in to use personal connections.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EndUserLoginRequiredError | | Sign in to use personal connections. | |
#### ErrorResponse
Documented non-2xx body emitted by ``register_external_error_handlers``.
``params`` and ``details`` appear only on the errors that set them. The schema
stays open because ``HTTPException.data`` may carry extra keys.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| code | string | | Yes |
| details | object | | No |
| message | string | | Yes |
| params | string | | No |
| status | integer | | Yes |
#### EventStreamResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EventStreamResponse | string | | |
#### ExecutionContentType
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ExecutionContentType | string | | |
#### ExpiredError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ExpiredError | | | |
#### FileExtensionBlockedError
The file extension is blocked for security reasons.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FileExtensionBlockedError | | The file extension is blocked for security reasons. | |
#### FileInput
Resolved single-file input constraints.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| allowed_file_extensions | [ string ] | | Yes |
| allowed_file_types | [ [FileType](#filetype) ] | | Yes |
| allowed_file_upload_methods | [ [FileTransferMethod](#filetransfermethod) ] | | Yes |
| output_variable_name | string | | Yes |
| type | string | | No |
#### FileInputConfig
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| allowed_file_extensions | [ string ] | | No |
| allowed_file_types | [ [FileType](#filetype) ] | | No |
| allowed_file_upload_methods | [ [FileTransferMethod](#filetransfermethod) ] | | No |
| output_variable_name | string | | Yes |
| type | string | | No |
#### FileListInput
Resolved multi-file input constraints and effective number limit.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| allowed_file_extensions | [ string ] | | Yes |
| allowed_file_types | [ [FileType](#filetype) ] | | Yes |
| allowed_file_upload_methods | [ [FileTransferMethod](#filetransfermethod) ] | | Yes |
| number_limits | integer | | Yes |
| output_variable_name | string | | Yes |
| type | string | | No |
#### FileListInputConfig
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| allowed_file_extensions | [ string ] | | No |
| allowed_file_types | [ [FileType](#filetype) ] | | No |
| allowed_file_upload_methods | [ [FileTransferMethod](#filetransfermethod) ] | | No |
| number_limits | integer | | No |
| output_variable_name | string | | Yes |
| type | string | | No |
#### FileResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| conversation_id | string | | No |
| created_at | integer | | No |
| created_by | string | | No |
| extension | string | | No |
| file_key | string | | No |
| id | string (uuid) | | Yes |
| mime_type | string | | No |
| name | string | | Yes |
| original_url | string | | No |
| preview_url | string | | No |
| reference | string | | No |
| size | integer | | Yes |
| source_url | string | | No |
| tenant_id | string | | No |
| user_id | string | | No |
#### FileTooLargeError
File size exceeded. {message}
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FileTooLargeError | | File size exceeded. {message} | |
#### FileTransferMethod
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FileTransferMethod | string | | |
#### FileType
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FileType | string | | |
#### FileWithSignedUrl
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| created_at | integer | | Yes |
| created_by | string | | Yes |
| extension | string | | Yes |
| id | string | | Yes |
| mime_type | string | | Yes |
| name | string | | Yes |
| size | integer | | Yes |
| url | string | | Yes |
#### FilenameNotExistsError
The specified filename does not exist.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FilenameNotExistsError | | The specified filename does not exist. | |
#### ForgotPasswordCheckPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| code | string | | Yes |
| email | string | | Yes |
| token | string | | Yes |
#### ForgotPasswordResetPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| new_password | string | | Yes |
| password_confirm | string | | Yes |
| token | string | | Yes |
#### ForgotPasswordSendPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| email | string | | Yes |
| language | string | | No |
#### FormAccessRequestResponse
Response body returned after creating one OTP challenge.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| challenge_token | string | The token used to complete the OTP challenge. | Yes |
| expires_in_seconds | integer | Seconds until the current OTP challenge expires. | Yes |
| resend_after_seconds | integer | Seconds until another OTP challenge may be requested. | Yes |
#### FormDefinitionResponse
Response body containing a resolved human-input form definition.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| expiration_time | integer | Unix timestamp when the current form expires. | Yes |
| form_content | string | Rendered form body shown to the approver. | No |
| inputs | [ [FormInputConfig](#forminputconfig) ] | Resolved form input definitions. | No |
| resolved_default_values | object | Default values after variable resolution and stringification. | No |
| user_actions | [ [UserActionConfig](#useractionconfig) ] | Action buttons that can complete the form. | No |
#### FormInputConfig
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FormInputConfig | [ParagraphInputConfig](#paragraphinputconfig)
[SelectInputConfig](#selectinputconfig)
[FileInputConfig](#fileinputconfig)
[FileListInputConfig](#filelistinputconfig) | | |
#### FormPart
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FormPart | [MarkdownFragment](#markdownfragment)
[ParagraphInput](#paragraphinput)
[SelectInput](#selectinput)
[FileInput](#fileinput)
[FileListInput](#filelistinput) | | |
#### FormSubmitResponse
Empty response body returned after a Human Input v2 form submission.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
#### FormUploadTokenResponse
Response body returned when issuing a Human Input v2 upload token.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| expires_at | integer | | Yes |
| upload_token | string | | Yes |
#### GeneratedAppResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| GeneratedAppResponse | | | |
#### HumanInputAccessDeliveryFailedError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| HumanInputAccessDeliveryFailedError | | | |
#### HumanInputAccessRateLimitExceededError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| HumanInputAccessRateLimitExceededError | | | |
#### HumanInputChallengeExpiredError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| HumanInputChallengeExpiredError | | | |
#### HumanInputChallengeStaleError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| HumanInputChallengeStaleError | | | |
#### HumanInputContent
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| form_definition | [HumanInputFormDefinition](#humaninputformdefinition) | | No |
| form_submission_data | [HumanInputFormSubmissionData](#humaninputformsubmissiondata) | | No |
| submitted | boolean | | Yes |
| type | [ExecutionContentType](#executioncontenttype) | | No |
| workflow_run_id | string | | Yes |
#### HumanInputFileUploadFormPayload
Parsed multipart form fields for HITL uploads.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| url | string | Remote file URL | No |
#### HumanInputFormDefinition
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| actions | [ [UserActionConfig](#useractionconfig) ] | | No |
| display_in_ui | boolean | | No |
| expiration_time | integer | | Yes |
| form_content | string | | Yes |
| form_id | string | | Yes |
| form_token | string | | No |
| form_version | string,
**Available values:** "1", "2",
**Default:** 1 | *Enum:* `"1"`, `"2"` | No |
| inputs | [ [FormInputConfig](#forminputconfig) ] | | No |
| node_id | string | | Yes |
| node_title | string | | Yes |
| resolved_default_values | object | | No |
#### HumanInputFormDefinitionResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| expiration_time | integer | | Yes |
| form_content | string | | Yes |
| inputs | [ [FormInputConfig](#forminputconfig) ] | | Yes |
| resolved_default_values | object | | Yes |
| site | [WebAppSiteResponse](#webappsiteresponse) | | No |
| user_actions | [ [UserActionConfig](#useractionconfig) ] | | Yes |
#### HumanInputFormExpiredError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| HumanInputFormExpiredError | | | |
#### HumanInputFormNotFoundError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| HumanInputFormNotFoundError | | | |
#### HumanInputFormSubmissionData
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| action_id | string | | Yes |
| action_text | string | | Yes |
| node_id | string | | Yes |
| node_title | string | | Yes |
| rendered_content | string | | Yes |
| submitted_data | object | | No |
#### HumanInputFormSubmitPayload
Legacy Human Input v1 submit payload shared by existing runtime surfaces.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| action | string | ID of the action button the recipient selected. Must match one of the `id` values from the form's `user_actions` list. | Yes |
| inputs | object | Submitted human input values keyed by output variable name. Use a string for paragraph or select input values, a file mapping for file inputs, and a list of file mappings for file-list inputs. Local file mappings use `transfer_method=local_file` with `upload_file_id`; remote file mappings use `transfer_method=remote_url` with `url` or `remote_url`. | Yes |
#### HumanInputFormSubmitResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
#### HumanInputFormSubmittedError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| HumanInputFormSubmittedError | | | |
#### HumanInputInvalidOtpError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| HumanInputInvalidOtpError | | | |
#### HumanInputUploadTokenResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| expires_at | integer | | Yes |
| upload_token | string | | Yes |
#### HumanInputV2FormSubmitRequest
Public Human Input v2 submit payload, independent from the v1 form contract.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| action | string | Identifier of the selected Human Input v2 action. | Yes |
| challenge_token | string | OTP challenge token returned by the Human Input v2 access-request endpoint. | No |
| inputs | object | Submitted form values keyed by output variable name. | Yes |
| otp_code | string | OTP code required when the current Human Input v2 approver uses email proof. | No |
#### HumanInputV2RemoteUploadPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| url | string (uri) | | Yes |
#### HumanInputV2UnavailableError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| HumanInputV2UnavailableError | | | |
#### I18nObject
Model class for i18n object.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| en_US | string | | Yes |
| ja_JP | string | | No |
| pt_BR | string | | No |
| zh_Hans | string | | No |
#### InvalidAccountPasswordError
The password does not satisfy the account password policy.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InvalidAccountPasswordError | | The password does not satisfy the account password policy. | |
#### InvalidEmailError
The email address is not valid.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InvalidEmailError | | The email address is not valid. | |
#### InvalidFormDataError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InvalidFormDataError | | | |
#### InvalidInputError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InvalidInputError | | | |
#### InvalidOrExpiredTokenError
The token is invalid or has expired.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InvalidOrExpiredTokenError | | The token is invalid or has expired. | |
#### InvalidParamError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InvalidParamError | | | |
#### InvalidUploadTokenError
Upload token is invalid or expired.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InvalidUploadTokenError | | Upload token is invalid or expired. | |
#### JSONValueType
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| JSONValueType | | | |
#### JsonValue
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| JsonValue | | | |
#### KnowledgeFsCitation
Immutable evidence identity; no signed URLs, tokens or storage keys.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| artifact_hash | string | | Yes |
| control_space_id | string | | Yes |
| document_asset_id | string | | Yes |
| document_title | string | | No |
| document_version | integer | | No |
| end_offset | integer | | No |
| id | string | | Yes |
| node_id | string | | Yes |
| page_number | integer | | No |
| parse_artifact_id | string | | No |
| section_path | [ string ] | | No |
| space_name | string | | Yes |
| start_offset | integer | | No |
#### LicenseStatus
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| LicenseStatus | string | | |
#### LicenseStatusModel
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | [LicenseStatus](#licensestatus) | | Yes |
#### LoginMode
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| LoginMode | string | | |
#### LoginPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| email | string | | Yes |
| password | string | | Yes |
#### LoginStatusQuery
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| app_code | string | Web app code | No |
| mode | [LoginMode](#loginmode) | end_user reports actual Account authentication instead of Public App access | No |
| user_id | string | End user session ID | No |
#### LoginStatusResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| app_logged_in | boolean | | Yes |
| logged_in | boolean | | Yes |
#### MalformedUploadTokenError
The upload token is malformed.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MalformedUploadTokenError | | The upload token is malformed. | |
#### MarkdownFragment
One source-ordered Markdown fragment in a resolved form.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| text | string | | Yes |
| type | string | | No |
#### MessageFeedbackPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| content | string | Optional text feedback providing additional detail. | No |
| rating | string,
**Available values:** "dislike", "like" | Feedback rating. Set to `null` to revoke previously submitted feedback. | No |
#### MessageFeedbackRatingRequiredError
A rating is required when there is no existing feedback to remove.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MessageFeedbackRatingRequiredError | | A rating is required when there is no existing feedback to remove. | |
#### MessageFile
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| belongs_to | string | | No |
| filename | string | | Yes |
| id | string (uuid) | | Yes |
| mime_type | string | | No |
| size | integer | | No |
| transfer_method | string | | Yes |
| type | string | | Yes |
| upload_file_id | string | | No |
| url | string | | No |
#### MessageListQuery
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| conversation_id | string | Conversation ID. | Yes |
| first_id | string | The ID of the first chat record on the current page. Omit this value to fetch the latest messages; for subsequent pages, use the first message ID from the current list to fetch older messages. | No |
| limit | integer,
**Default:** 20 | Number of chat history messages to return per request. | No |
#### MessageMoreLikeThisQuery
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| response_mode | string,
**Available values:** "blocking", "streaming" | Response mode
*Enum:* `"blocking"`, `"streaming"` | Yes |
#### ModelCurrentlyNotSupportError
Dify Hosted OpenAI trial currently not support the GPT-4 model.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ModelCurrentlyNotSupportError | | Dify Hosted OpenAI trial currently not support the GPT-4 model. | |
#### ModelSelectorScope
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ModelSelectorScope | string | | |
#### NoAudioUploadedError
Please upload your audio.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| NoAudioUploadedError | | Please upload your audio. | |
#### NoFileUploadedError
Please upload your file.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| NoFileUploadedError | | Please upload your file. | |
#### NodeConnectionStatus
The current selection's effective status for one published Tool node.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| NodeConnectionStatus | string | The current selection's effective status for one published Tool node. | |
#### NotChatAppError
Please check if your app mode matches the right API route.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| NotChatAppError | | Please check if your app mode matches the right API route. | |
#### NotCompletionAppError
Please check if your Completion app mode matches the right API route.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| NotCompletionAppError | | Please check if your Completion app mode matches the right API route. | |
#### NotWorkflowAppError
Please check if your Workflow app mode matches the right API route.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| NotWorkflowAppError | | Please check if your Workflow app mode matches the right API route. | |
#### Option
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| label | [I18nObject](#i18nobject) | The label of the option | Yes |
| value | string | The value of the option | Yes |
#### ParagraphInput
Resolved multiline text input.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| default_value | string | | Yes |
| output_variable_name | string | | Yes |
| type | string | | No |
#### ParagraphInputConfig
Form input definition.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| default | [StringSource](#stringsource) | Raw default-value configuration for the paragraph input. Runtime-resolved values are exposed in the surrounding `resolved_default_values` mapping. | No |
| output_variable_name | string | | Yes |
| type | string | | No |
#### PassportAccessTokenResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| access_token | string | | Yes |
#### PassportLoginPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| code_verifier | string | | Yes |
| login_code | string | | Yes |
#### PassportQuery
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| mode | [LoginMode](#loginmode) | end_user reuses Account login; console preserves legacy Web App authentication | No |
| user_id | string | End user session ID | No |
#### PasswordMismatchError
The passwords do not match.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PasswordMismatchError | | The passwords do not match. | |
#### PasswordResetRateLimitExceededError
Too many password reset emails have been sent. Please try again in {minutes} minutes.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PasswordResetRateLimitExceededError | | Too many password reset emails have been sent. Please try again in {minutes} minutes. | |
#### PluginInstallationPermissionModel
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| plugin_installation_scope | [PluginInstallationScope](#plugininstallationscope) | | Yes |
| restrict_to_marketplace_only | boolean | | Yes |
#### PluginInstallationScope
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PluginInstallationScope | string | | |
#### ProviderConfig
Model class for common provider settings like credentials
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| default | integer
string
number
boolean | | No |
| help | [I18nObject](#i18nobject) | | No |
| label | [I18nObject](#i18nobject) | | No |
| multiple | boolean | | No |
| name | string | The name of the credentials | Yes |
| options | [ [Option](#option) ] | | No |
| placeholder | [I18nObject](#i18nobject) | | No |
| required | boolean | | No |
| scope | [AppSelectorScope](#appselectorscope)
[ModelSelectorScope](#modelselectorscope)
[ToolSelectorScope](#toolselectorscope) | | No |
| type | [ProviderConfigType](#providerconfigtype) | The type of the credentials | Yes |
| url | string | | No |
#### ProviderConfigType
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ProviderConfigType | string | | |
#### ProviderNotInitializeError
No valid model provider credentials found. Please go to Settings -> Model Provider to complete your provider credentials.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ProviderNotInitializeError | | No valid model provider credentials found. Please go to Settings -> Model Provider to complete your provider credentials. | |
#### ProviderNotSupportSpeechToTextError
Provider not support speech to text.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ProviderNotSupportSpeechToTextError | | Provider not support speech to text. | |
#### ProviderQuotaExceededError
Your quota for Dify Hosted OpenAI has been exhausted. Please go to Settings -> Model Provider to complete your own provider credentials.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ProviderQuotaExceededError | | Your quota for Dify Hosted OpenAI has been exhausted. Please go to Settings -> Model Provider to complete your own provider credentials. | |
#### RateLimitError
Rate Limit Error
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RateLimitError | | Rate Limit Error | |
#### RemoteFileAccessDeniedError
The remote file cannot be accessed without authorization.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RemoteFileAccessDeniedError | | The remote file cannot be accessed without authorization. | |
#### RemoteFileInfo
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| file_length | integer | | Yes |
| file_type | string | | Yes |
#### RemoteFileInvalidResponseError
The remote file server returned an invalid response.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RemoteFileInvalidResponseError | | The remote file server returned an invalid response. | |
#### RemoteFileInvalidUrlError
The remote file URL is invalid.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RemoteFileInvalidUrlError | | The remote file URL is invalid. | |
#### RemoteFileNotFoundError
The remote file could not be found.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RemoteFileNotFoundError | | The remote file could not be found. | |
#### RemoteFileUnavailableError
The remote file is temporarily unavailable.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RemoteFileUnavailableError | | The remote file is temporarily unavailable. | |
#### RemoteFileUploadPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| url | string (uri) | Remote file URL | Yes |
#### RemoteFileUrlBlockedError
The remote file URL is not allowed.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RemoteFileUrlBlockedError | | The remote file URL is not allowed. | |
#### RepeatPasswordNotMatchError
New password and repeat password does not match.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RepeatPasswordNotMatchError | | New password and repeat password does not match. | |
#### ResolvedForm
Immutable authoritative presentation snapshot for one v2 form.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| actions | [ [UserAction](#useraction) ] | | Yes |
| legacy_form_content | string | | Yes |
| parts | [ [FormPart](#formpart) ] | | Yes |
| title | string | | Yes |
#### ResultResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| result | string | | Yes |
#### RetrieverResource
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| content | string | | No |
| created_at | integer | | No |
| data_source_type | string | | No |
| dataset_id | string | | No |
| dataset_name | string | | No |
| doc_metadata | object | | No |
| document_asset_id | string | | No |
| document_id | string | | No |
| document_name | string | | No |
| document_revision | integer | | No |
| document_version | integer | | No |
| files | [ object ] | | No |
| hit_count | integer | | No |
| id | string (uuid) | | No |
| index_node_hash | string | | No |
| knowledge_fs_citation | [KnowledgeFsCitation](#knowledgefscitation) | | No |
| message_id | string (uuid) | | No |
| page | integer | | No |
| position | integer | | Yes |
| retriever_from | string | | No |
| score | number | | No |
| segment_id | string | | No |
| segment_position | integer | | No |
| summary | string | | No |
| title | string | | No |
| word_count | integer | | No |
#### SSOProtocol
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| SSOProtocol | string | | |
#### SavedMessageCreatePayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message_id | string | | Yes |
#### SavedMessageInfiniteScrollPagination
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ [SavedMessageItem](#savedmessageitem) ] | | Yes |
| has_more | boolean | | Yes |
| limit | integer | | Yes |
#### SavedMessageItem
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| answer | string | | Yes |
| created_at | integer | | No |
| feedback | [SimpleFeedback](#simplefeedback) | | No |
| id | string | | Yes |
| inputs | object | | Yes |
| message_files | [ [MessageFile](#messagefile) ] | | Yes |
| query | string | | Yes |
#### SavedMessageListQuery
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| last_id | string | | No |
| limit | integer,
**Default:** 20 | | No |
#### SelectInput
Resolved single-choice input with immutable concrete options.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| default_value | string | | Yes |
| options | [ string ] | | Yes |
| output_variable_name | string | | Yes |
| type | string | | No |
#### SelectInputConfig
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| option_source | [StringListSource](#stringlistsource) | Source of options for `select` inputs. Present only when `type` is `select`. | Yes |
| output_variable_name | string | | Yes |
| type | string | | No |
#### ShallowJSONValue
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ShallowJSONValue | string
integer
number
boolean
object
[ object ] | | |
#### SimpleConversation
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| created_at | integer | | No |
| id | string (uuid) | | Yes |
| inputs | object | | Yes |
| introduction | string | | No |
| name | string | | Yes |
| status | string | | Yes |
| updated_at | integer | | No |
#### SimpleFeedback
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rating | string | | No |
#### SimpleResultDataResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | string | | Yes |
| result | string | | Yes |
#### SimpleResultResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| result | string | Operation result. | Yes |
#### SpeechToTextDisabledError
Speech to text is disabled.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| SpeechToTextDisabledError | | Speech to text is disabled. | |
#### StringListSource
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| selector | [ string ] | Variable reference path when `type` is `variable`. | No |
| type | [ValueSourceType](#valuesourcetype) | Origin of the options. `constant` means `value` lists the options literally; `variable` means `selector` points to an `array[string]` workflow variable that provides them. | Yes |
| value | [ string ] | Literal option list when `type` is `constant`. | No |
#### StringSource
Default configuration for form inputs.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| selector | [ string ] | | No |
| type | [ValueSourceType](#valuesourcetype) | | Yes |
| value | string | | No |
#### SuggestedQuestionsResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ string ] | | Yes |
#### SystemParameters
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| audio_file_size_limit | integer | | Yes |
| file_size_limit | integer | | Yes |
| image_file_size_limit | integer | | Yes |
| video_file_size_limit | integer | | Yes |
| workflow_file_upload_limit | integer | | Yes |
#### TextToAudioPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message_id | string | Message ID. Takes priority over `text` when both are provided. | No |
| streaming | boolean | Reserved for compatibility; TTS response streaming is determined by the provider output. | No |
| text | string | Speech content to convert. | No |
| voice | string | Voice to use for text-to-speech. Available voices depend on the TTS provider configured for this app. Omit to use the app's configured voice when available; that value is exposed by [Get App Parameters](/api-reference/applications/get-app-parameters) as `text_to_speech.voice`. | No |
#### TooManyFilesError
Only one file is allowed.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TooManyFilesError | | Only one file is allowed. | |
#### ToolSelectorScope
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ToolSelectorScope | string | | |
#### TriggerWorkflowServiceModeUnavailableError
This workflow uses a trigger entry and cannot be invoked through Web App, Service API, OpenAPI, or MCP.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TriggerWorkflowServiceModeUnavailableError | | This workflow uses a trigger entry and cannot be invoked through Web App, Service API, OpenAPI, or MCP. | |
#### UnsupportedAudioTypeError
Audio type not allowed.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| UnsupportedAudioTypeError | | Audio type not allowed. | |
#### UnsupportedFileTypeError
File type not allowed.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| UnsupportedFileTypeError | | File type not allowed. | |
#### UploadTokenRequiredError
Upload token is required.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| UploadTokenRequiredError | | Upload token is required. | |
#### UserAction
Resolved action values required for presentation and submission validation.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| button_style | [ButtonStyle](#buttonstyle) | | Yes |
| id | string | | Yes |
| title | string | | Yes |
#### UserActionConfig
User action configuration.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| button_style | [ButtonStyle](#buttonstyle) | | No |
| id | string | | Yes |
| title | string | | Yes |
#### ValueSourceType
ValueSourceType records whether the value comes from a static setting
in form definition, or a variable while the workflow is running.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ValueSourceType | string | ValueSourceType records whether the value comes from a static setting in form definition, or a variable while the workflow is running. | |
#### VerificationTokenResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| email | string | | Yes |
| is_valid | boolean | | Yes |
| token | string | | Yes |
#### WebAccountPasswordPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| new_password | string | | Yes |
| password | string | Current password; may be omitted only before the first password is set. | No |
| repeat_new_password | string | | Yes |
#### WebAccountProfileResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| avatar | string | | Yes |
| avatar_url | string | | Yes |
| email | string | | Yes |
| has_owned_tenant | boolean | Whether the Account owns an existing tenant, including archived tenants. Null means unavailable. | No |
| has_tenant | boolean | Whether the Account has a tenant membership, including ownership. Null means unavailable. | No |
| interface_language | string | | Yes |
| interface_theme | string | | Yes |
| is_password_set | boolean | | Yes |
| name | string | | Yes |
| timezone | string | | Yes |
#### WebAccountResponse
Personal settings only; credentials, login IPs and Builder lifecycle stay private.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| avatar | string | | Yes |
| avatar_url | string | | Yes |
| email | string | | Yes |
| interface_language | string | | Yes |
| interface_theme | string | | Yes |
| is_password_set | boolean | | Yes |
| name | string | | Yes |
| timezone | string | | Yes |
#### WebAppAuthModel
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| allow_email_code_login | boolean | | Yes |
| allow_email_password_login | boolean | | Yes |
| allow_public_access | boolean,
**Default:** true | | Yes |
| allow_sso | boolean | | Yes |
| enabled | boolean | | Yes |
| sso_config | [WebAppAuthSSOModel](#webappauthssomodel) | | Yes |
#### WebAppAuthSSOModel
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| protocol | [SSOProtocol](#ssoprotocol) | | Yes |
#### WebAppConnectionRequirement
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| allowed_credential_types | [ [ConnectionCredentialType](#connectioncredentialtype) ] | | Yes |
| icon | string | Plugin icon URL, using the Integrations asset endpoint. | Yes |
| icon_dark | string | Dark plugin icon URL; null when the plugin has no dark icon. | Yes |
| node_id | string | Independent authorization node ID to use as the selection key. | Yes |
| node_ids | [ string ] | The authorization node and all nodes explicitly reusing it. | Yes |
| plugin_unique_identifier | string | Exact plugin artifact recorded in connection_revision. | Yes |
| provider | string | | Yes |
| provider_label | string | Tool provider display name in the WebApp's configured language, falling back to English. | Yes |
| purpose | string | | Yes |
| title | string | | Yes |
#### WebAppCustomConfigResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| remove_webapp_brand | boolean | | Yes |
| replace_webapp_logo | string | | No |
#### WebAppHumanInputV2FormDefinitionResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| expiration_time | integer | | Yes |
| resolved_form | [ResolvedForm](#resolvedform) | | Yes |
#### WebAppHumanInputV2SubmitPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| action | string | | Yes |
| inputs | object | | Yes |
#### WebAppHumanInputV2SubmitResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
#### WebAppParametersResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| account_login_enabled | boolean | Whether explicit Account login and Passport exchange are enabled. | Yes |
| account_login_url | string | Account-origin sign-in page for the existing Web App login flow | Yes |
| allow_anonymous_end_user_auth | boolean | Whether Guest identities may manage and use personal Connections; does not control App entry. | Yes |
| annotation_reply | { **"enabled"**: boolean } | | Yes |
| connection_requirements | [ [WebAppConnectionRequirement](#webappconnectionrequirement) ] | Authorization requirements and exact plugin artifacts in connection_revision, without personal state. | Yes |
| connection_revision | string | Opaque revision of connection requirements, plugin artifacts and OAuth Client configurations; null for other app modes. Return it unchanged in connection requests and runs. | Yes |
| file_upload | { **"allowed_file_extensions"**: [ string ], **"allowed_file_types"**: [ string,
**Available values:** "audio", "custom", "document", "image", "video" ], **"allowed_file_upload_methods"**: [ string,
**Available values:** "local_file", "remote_url" ], **"enabled"**: boolean, **"image"**: { **"detail"**: string, **"enabled"**: boolean, **"number_limits"**: integer, **"transfer_methods"**: [ string ] }, **"number_limits"**: integer } | | Yes |
| more_like_this | { **"enabled"**: boolean } | | Yes |
| opening_statement | string | | No |
| requires_end_user_connections | boolean | Whether this published version declares EndUser tool connections, independent of user readiness. | Yes |
| retriever_resource | { **"enabled"**: boolean } | | Yes |
| sensitive_word_avoidance | { **"enabled"**: boolean } | | Yes |
| show_thoughts | { **"enabled"**: boolean } | | No |
| speech_to_text | { **"enabled"**: boolean } | | Yes |
| suggested_questions | [ string ] | | Yes |
| suggested_questions_after_answer | { **"enabled"**: boolean } | | Yes |
| system_parameters | [SystemParameters](#systemparameters) | System-level parameter limits. | Yes |
| text_to_speech | { **"autoPlay"**: string, **"enabled"**: boolean, **"language"**: string, **"voice"**: string } | | Yes |
| user_input_form | [ object
object
object
object
object
object
object
object
object ] | | Yes |
#### WebAppSiteResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| app_id | string | | Yes |
| can_replace_logo | boolean | | Yes |
| custom_config | [WebAppCustomConfigResponse](#webappcustomconfigresponse) | | No |
| enable_site | boolean | | Yes |
| end_user_id | string | | No |
| mode | [AppMode](#appmode) | | Yes |
| model_config | [WebModelConfigResponse](#webmodelconfigresponse) | | No |
| plan | string | | Yes |
| site | [WebSiteResponse](#websiteresponse) | | Yes |
#### WebFormRateLimitExceededError
Too many form requests. Please try again later.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| WebFormRateLimitExceededError | | Too many form requests. Please try again later. | |
#### WebLoginUnavailableError
Web App login is temporarily unavailable. Please retry.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| WebLoginUnavailableError | | Web App login is temporarily unavailable. Please retry. | |
#### WebMessageInfiniteScrollPagination
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ [WebMessageListItem](#webmessagelistitem) ] | | Yes |
| has_more | boolean | | Yes |
| limit | integer | | Yes |
#### WebMessageListItem
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| agent_thoughts | [ [AgentThought](#agentthought) ] | | Yes |
| answer | string | | Yes |
| answer_tokens | integer | | No |
| conversation_id | string (uuid) | | Yes |
| created_at | integer | | No |
| currency | string | | No |
| error | string | | No |
| extra_contents | [ [HumanInputContent](#humaninputcontent) ] | | Yes |
| feedback | [SimpleFeedback](#simplefeedback) | | No |
| id | string (uuid) | | Yes |
| inputs | object | | Yes |
| message_files | [ [MessageFile](#messagefile) ] | | Yes |
| message_tokens | integer | | No |
| metadata | [JSONValueType](#jsonvaluetype) | | No |
| parent_message_id | string | | No |
| provider_response_latency | float | | No |
| query | string | | Yes |
| retriever_resources | [ [RetrieverResource](#retrieverresource) ] | | Yes |
| status | string | | Yes |
| total_price | string | | No |
| total_tokens | integer | | Yes |
#### WebModelConfigResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| model | | | No |
| more_like_this | | | No |
| opening_statement | string | | No |
| pre_prompt | string | | No |
| suggested_questions | | | No |
| suggested_questions_after_answer | | | No |
| user_input_form | | | No |
#### WebSiteResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| chat_color_theme | string | | No |
| chat_color_theme_inverted | boolean | | Yes |
| copyright | string | | No |
| custom_disclaimer | string | | No |
| default_language | string | | No |
| description | string | | No |
| icon | string | | No |
| icon_background | string | | No |
| icon_type | string | | No |
| icon_url | string | | No |
| input_placeholder | string | | No |
| privacy_policy | string | | No |
| prompt_public | boolean | | No |
| show_workflow_steps | boolean | | No |
| title | string | | Yes |
| use_icon_as_answer_icon | boolean | | No |
#### WebSystemFeatureResponse
Extend public bootstrap with the Web-only Account sign-in entry point.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| account_login_url | string | Account-origin sign-in page for the existing Web App login flow; null when Account login is disabled. | Yes |
| agent_tracing_api_collection_enabled | boolean | Deployment-level API gate for Agent trace collection, independent of workspace and provider configuration. Does not indicate Agent runtime, worker, or provider health or confirm trace delivery. | Yes |
| branding | [BrandingModel](#brandingmodel) | | Yes |
| deployment_edition | [DeploymentEdition](#deploymentedition) | | Yes |
| enable_app_deploy | boolean | | Yes |
| enable_change_email | boolean,
**Default:** true | | Yes |
| enable_creators_platform | boolean | | Yes |
| enable_email_code_login | boolean | | Yes |
| enable_email_password_login | boolean,
**Default:** true | | Yes |
| enable_explore_banner | boolean | | Yes |
| enable_learn_app | boolean,
**Default:** true | | Yes |
| enable_marketplace | boolean | | Yes |
| enable_social_oauth_login | boolean | | Yes |
| enable_step_by_step_tour | boolean | | Yes |
| is_allow_register | boolean | | Yes |
| is_email_setup | boolean | | Yes |
| license | [LicenseStatusModel](#licensestatusmodel) | | Yes |
| plugin_installation_permission | [PluginInstallationPermissionModel](#plugininstallationpermissionmodel) | | Yes |
| rbac_enabled | boolean | | Yes |
| sso_enforced_for_signin | boolean | | Yes |
| sso_enforced_for_signin_protocol | [SSOProtocol](#ssoprotocol) | | Yes |
| webapp_auth | [WebAppAuthModel](#webappauthmodel) | | Yes |
#### WebappResourcesChangedError
Web App resources changed before execution. Refresh and retry.
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| WebappResourcesChangedError | | Web App resources changed before execution. Refresh and retry. | |
#### WorkflowNotActiveError
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| WorkflowNotActiveError | | | |
#### WorkflowRunPayload
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| connection_revision | string | Opaque connection contract revision from Web App parameters. Required for EndUser tool authentication; must match current authorization requirements; verified plugin upgrades may inherit consent. | No |
| connections | object | Explicit choices keyed by independent authorization node ID. Required for EndUser tool authentication. Missing/null choices are not filled from saved selections. | No |
| files | [ object
object
object
object ] | File list for workflow system file inputs. Available when file upload is enabled for the workflow. To attach a local file, first upload it via [Upload File](/api-reference/files/upload-file) and use the returned `id` as `upload_file_id` with `transfer_method: local_file`. | No |
| inputs | object | Key-value pairs for workflow input variables. Values for file-type variables should be arrays of file objects with `type`, `transfer_method`, and either `url` or `upload_file_id`. Refer to the `user_input_form` field in the [Get App Parameters](/api-reference/applications/get-app-parameters) response to discover the variable names and types expected by your app. | Yes |