api/openapi/markdown/web-swagger.md
Public APIs for web applications including file uploads, chat interactions, and app management
Bearer
| apiKey | API Key |
|---|---|
| Description | Type: Bearer {your-api-key} |
| In | header |
| Name | Authorization |
Web application API operations
Convert audio to text
Convert audio file to text using speech-to-text service.
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 413 | Audio file too large |
| 415 | Unsupported audio type |
| 500 | Internal Server Error |
Create a chat message for conversational applications.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| payload | body | Yes | ChatMessagePayload |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | App Not Found |
| 500 | Internal Server Error |
Stop a running chat message task.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| task_id | path | Task ID to stop | Yes | string |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Task Not Found |
| 500 | Internal Server Error |
Create a completion message for text generation applications.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| payload | body | Yes | CompletionMessagePayload |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | App Not Found |
| 500 | Internal Server Error |
Stop a running completion message task.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| task_id | path | Task ID to stop | Yes | string |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Task Not Found |
| 500 | Internal Server Error |
Retrieve paginated list of conversations for a chat application.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| last_id | query | Last conversation ID for pagination | No | string |
| limit | query | Number of conversations to return (1-100) | No | integer |
| pinned | query | Filter by pinned status | No | string |
| sort_by | query | Sort order | No | string |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | App Not Found or Not a Chat App |
| 500 | Internal Server Error |
Delete a specific conversation.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| c_id | path | Conversation UUID | Yes | string |
| Code | Description |
|---|---|
| 204 | Conversation deleted successfully |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Conversation Not Found or Not a Chat App |
| 500 | Internal Server Error |
Rename a specific conversation with a custom name or auto-generate one.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| c_id | path | Conversation UUID | Yes | string |
| auto_generate | query | Auto-generate conversation name | No | boolean |
| name | query | New conversation name | No | string |
| Code | Description |
|---|---|
| 200 | Conversation renamed successfully |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Conversation Not Found or Not a Chat App |
| 500 | Internal Server Error |
Pin a specific conversation to keep it at the top of the list.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| c_id | path | Conversation UUID | Yes | string |
| Code | Description |
|---|---|
| 200 | Conversation pinned successfully |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Conversation Not Found or Not a Chat App |
| 500 | Internal Server Error |
Unpin a specific conversation to remove it from the top of the list.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| c_id | path | Conversation UUID | Yes | string |
| Code | Description |
|---|---|
| 200 | Conversation unpinned successfully |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Conversation Not Found or Not a Chat App |
| 500 | Internal Server Error |
Send email verification code for login
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| payload | body | Yes | EmailCodeLoginSendPayload |
| Code | Description |
|---|---|
| 200 | Email code sent successfully |
| 400 | Bad request - invalid email format |
| 404 | Account not found |
Verify email code and complete login
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| payload | body | Yes | EmailCodeLoginVerifyPayload |
| Code | Description |
|---|---|
| 200 | Email code verified and login successful |
| 400 | Bad request - invalid code or token |
| 401 | Invalid token or expired code |
| 404 | Account not found |
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
| Code | Description | Schema |
|---|---|---|
| 201 | File uploaded successfully | FileResponse |
| 400 | Bad request - invalid file or parameters | |
| 413 | File too large | |
| 415 | Unsupported file type |
Send password reset email
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| payload | body | Yes | ForgotPasswordSendPayload |
| Code | Description |
|---|---|
| 200 | Password reset email sent successfully |
| 400 | Bad request - invalid email format |
| 404 | Account not found |
| 429 | Too many requests - rate limit exceeded |
Reset user password with verification token
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| payload | body | Yes | ForgotPasswordResetPayload |
| Code | Description |
|---|---|
| 200 | Password reset successfully |
| 400 | Bad request - invalid parameters or password mismatch |
| 401 | Invalid or expired token |
| 404 | Account not found |
Verify password reset token validity
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| payload | body | Yes | ForgotPasswordCheckPayload |
| Code | Description |
|---|---|
| 200 | Token is valid |
| 400 | Bad request - invalid token format |
| 401 | Invalid or expired token |
Get human input form definition by token
GET /api/form/human_input/<form_token>
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| form_token | path | Yes | string |
| Code | Description |
|---|---|
| 200 | Success |
Submit human input form by token
POST /api/form/human_input/<form_token>
Request body: { "inputs": { "content": "User input content" }, "action": "Approve" }
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| form_token | path | Yes | string |
| Code | Description |
|---|---|
| 200 | Success |
Authenticate user and login
Authenticate user for web application access
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| payload | body | Yes | LoginPayload |
| Code | Description |
|---|---|
| 200 | Authentication successful |
| 400 | Bad request - invalid email or password format |
| 401 | Authentication failed - email or password mismatch |
| 403 | Account banned or login disabled |
| 404 | Account not found |
Check login status
| Code | Description |
|---|---|
| 200 | Login status |
| 401 | Login status |
Logout user from web application
| Code | Description |
|---|---|
| 200 | Logout successful |
Retrieve paginated list of messages from a conversation in a chat application.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| conversation_id | query | Conversation UUID | Yes | string |
| first_id | query | First message ID for pagination | No | string |
| limit | query | Number of messages to return (1-100) | No | integer |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Conversation Not Found or Not a Chat App |
| 500 | Internal Server Error |
Submit feedback (like/dislike) for a specific message.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| message_id | path | Message UUID | Yes | string |
| content | query | Feedback content | No | string |
| rating | query | Feedback rating | No | string |
| Code | Description |
|---|---|
| 200 | Feedback submitted successfully |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Message Not Found |
| 500 | Internal Server Error |
Generate a new completion similar to an existing message (completion apps only).
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| message_id | path | Yes | string | |
| payload | body | Yes | MessageMoreLikeThisQuery |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request - Not a completion app or feature disabled |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Message Not Found |
| 500 | Internal Server Error |
Get suggested follow-up questions after a message (chat apps only).
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| message_id | path | Message UUID | Yes | string |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request - Not a chat app or feature disabled |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Message Not Found or Conversation Not Found |
| 500 | Internal Server Error |
Get app meta
Retrieve the metadata for a specific app.
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | App Not Found |
| 500 | Internal Server Error |
Retrieve app parameters
Retrieve the parameters for a specific app.
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | App Not Found |
| 500 | Internal Server Error |
Get authentication passport for web application access
| Code | Description |
|---|---|
| 200 | Passport retrieved successfully |
| 401 | Unauthorized - missing app code or invalid authentication |
| 404 | Application or user not found |
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: RemoteFileUploadError: Failed to fetch file from remote URL FileTooLargeError: File exceeds size limit UnsupportedFileTypeError: File type not supported
| Code | Description | Schema |
|---|---|---|
| 201 | Remote file uploaded successfully | FileWithSignedUrl |
| 400 | Bad request - invalid URL or parameters | |
| 413 | File too large | |
| 415 | Unsupported file type | |
| 500 | Failed to fetch remote file |
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
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| url | path | Yes | string |
| Code | Description | Schema |
|---|---|---|
| 200 | Remote file information retrieved successfully | RemoteFileInfo |
| 400 | Bad request - invalid URL | |
| 404 | Remote file not found | |
| 500 | Failed to fetch remote file |
Retrieve paginated list of saved messages for a completion application.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| last_id | query | Last message ID for pagination | No | string |
| limit | query | Number of messages to return (1-100) | No | integer |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request - Not a completion app |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | App Not Found |
| 500 | Internal Server Error |
Save a specific message for later reference.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| message_id | query | Message UUID to save | Yes | string |
| Code | Description |
|---|---|
| 200 | Message saved successfully |
| 400 | Bad Request - Not a completion app |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Message Not Found |
| 500 | Internal Server Error |
Remove a message from saved messages.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| message_id | path | Message UUID to delete | Yes | string |
| Code | Description |
|---|---|
| 204 | Message removed successfully |
| 400 | Bad Request - Not a completion app |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Message Not Found |
| 500 | Internal Server Error |
Retrieve app site info
Retrieve app site information and configuration.
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | App Not Found |
| 500 | Internal Server Error |
Get system feature flags and configuration
Get system feature flags and configuration Returns the current system feature flags and configuration that control various functionalities across the platform.
Returns: dict: System feature configuration object
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.
NOTE: This endpoint is unauthenticated by design, as it provides system features data required for webapp initialization.
Authentication would create circular dependency (can't authenticate without webapp loading).
Only non-sensitive configuration data should be returned by this endpoint.
| Code | Description |
|---|---|
| 200 | System features retrieved successfully |
| 500 | Internal server error |
Convert text to audio
Convert text to audio using text-to-speech service.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| payload | body | Yes | TextToAudioPayload |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 500 | Internal Server Error |
Retrieve the access mode for a web application (public or restricted).
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| appCode | query | Application code | No | string |
| appId | query | Application ID | No | string |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 500 | Internal Server Error |
Check if user has permission to access a web application.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| appId | query | Application ID | Yes | string |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 500 | Internal Server Error |
Run workflow
Execute a workflow with provided inputs and files.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| payload | body | Yes | WorkflowRunPayload |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | App Not Found |
| 500 | Internal Server Error |
Stop workflow task
Stop a running workflow task.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| task_id | path | Task ID to stop | Yes | string |
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Task Not Found |
| 500 | Internal Server Error |
Default namespace
Get workflow execution events stream after resume
GET /api/workflow/<task_id>/events
Returns Server-Sent Events stream.
| Name | Located in | Description | Required | Schema |
|---|---|---|---|---|
| task_id | path | Yes | string |
| Code | Description |
|---|---|
| 200 | Success |
| Name | Type | Description | Required |
|---|---|---|---|
| appCode | Application code | No | |
| appId | Application ID | No |
| Name | Type | Description | Required |
|---|---|---|---|
| conversation_id | Conversation ID | No | |
| files | Files to be processed | No | |
| inputs | object | Input variables for the chat | Yes |
| parent_message_id | Parent message ID | No | |
| query | string | User query/message | Yes |
| response_mode | Response mode: blocking or streaming | No | |
| retriever_from | string | Source of retriever | No |
| Name | Type | Description | Required |
|---|---|---|---|
| files | Files to be processed | No | |
| inputs | object | Input variables for the completion | Yes |
| query | string | Query text for completion | No |
| response_mode | Response mode: blocking or streaming | No | |
| retriever_from | string | Source of retriever | No |
| Name | Type | Description | Required |
|---|---|---|---|
| last_id | No | ||
| limit | integer | No | |
| pinned | No | ||
| sort_by | string | Enum: "-created_at", "-updated_at", "created_at", "updated_at" | No |
| Name | Type | Description | Required |
|---|---|---|---|
| auto_generate | boolean | No | |
| name | No |
| Name | Type | Description | Required |
|---|---|---|---|
| string | Yes | ||
| language | No |
| Name | Type | Description | Required |
|---|---|---|---|
| code | string | Yes | |
| string | Yes | ||
| token | string | Yes |
| Name | Type | Description | Required |
|---|---|---|---|
| conversation_id | No | ||
| created_at | No | ||
| created_by | No | ||
| extension | No | ||
| file_key | No | ||
| id | string | Yes | |
| mime_type | No | ||
| name | string | Yes | |
| original_url | No | ||
| preview_url | No | ||
| size | integer | Yes | |
| source_url | No | ||
| tenant_id | No | ||
| user_id | No |
| Name | Type | Description | Required |
|---|---|---|---|
| created_at | No | ||
| created_by | No | ||
| extension | No | ||
| id | string | Yes | |
| mime_type | No | ||
| name | string | Yes | |
| size | integer | Yes | |
| url | No |
| Name | Type | Description | Required |
|---|---|---|---|
| code | string | Yes | |
| string | Yes | ||
| token | string | Yes |
| Name | Type | Description | Required |
|---|---|---|---|
| new_password | string | Yes | |
| password_confirm | string | Yes | |
| token | string | Yes |
| Name | Type | Description | Required |
|---|---|---|---|
| string | Yes | ||
| language | No |
| Name | Type | Description | Required |
|---|---|---|---|
| string | Yes | ||
| password | string | Yes |
| Name | Type | Description | Required |
|---|---|---|---|
| content | No | ||
| rating | No |
| Name | Type | Description | Required |
|---|---|---|---|
| conversation_id | string | Conversation UUID | Yes |
| first_id | First message ID for pagination | No | |
| limit | integer | Number of messages to return (1-100) | No |
| Name | Type | Description | Required |
|---|---|---|---|
| response_mode | string | Response mode | |
Enum: "blocking", "streaming" | Yes |
| Name | Type | Description | Required |
|---|---|---|---|
| file_length | integer | Yes | |
| file_type | string | Yes |
| Name | Type | Description | Required |
|---|---|---|---|
| url | string (uri) | Remote file URL | Yes |
| Name | Type | Description | Required |
|---|---|---|---|
| message_id | string | Yes |
| Name | Type | Description | Required |
|---|---|---|---|
| last_id | No | ||
| limit | integer | No |
| Name | Type | Description | Required |
|---|---|---|---|
| message_id | Message ID | No | |
| streaming | Enable streaming response | No | |
| text | Text to convert to audio | No | |
| voice | Voice to use for TTS | No |
| Name | Type | Description | Required |
|---|---|---|---|
| files | No | ||
| inputs | object | Yes |