# Run Agentic Task Source: https://docs.shieldbase.ai/api-reference/endpoint/external/agents-run post /external/agents/run Execute an agentic task and block until completion # Create New Conversation Source: https://docs.shieldbase.ai/api-reference/endpoint/external/conversations post /external/conversations Start a new AI conversation and stream the response via Server-Sent Events # Continue Conversation Source: https://docs.shieldbase.ai/api-reference/endpoint/external/conversations-continue post /external/conversations/{conversation_id} Send a follow-up message to an existing conversation # List Library Files Source: https://docs.shieldbase.ai/api-reference/endpoint/external/libraries get /external/libraries Browse files in your library with pagination, filtering, and sorting # Models Source: https://docs.shieldbase.ai/api-reference/endpoint/external/models get /external/models # Semantic + Keyword Search Source: https://docs.shieldbase.ai/api-reference/endpoint/external/search post /external/search Perform hybrid BM25 + semantic vector search across all indexed content # Upload Source: https://docs.shieldbase.ai/api-reference/endpoint/external/upload post /external/upload # External API Source: https://docs.shieldbase.ai/api-reference/external-api Complete guide to Shieldbase External API for headless AI integration ## Overview The Shieldbase External API provides a comprehensive set of endpoints for integrating AI capabilities into your applications. This API supports: * **Models Management** - List available AI models * **File Upload & Indexing** - Upload documents for semantic search * **Library Management** - Browse and manage uploaded files * **Semantic Search** - Hybrid BM25 + vector search across your content * **Chat Streaming** - Real-time AI conversations via SSE * **Headless Agents** - Blocking agentic task execution All endpoints are mounted at `/external-docs` and require API key authentication. Interactive documentation is available at `/external-docs/docs` (Scalar UI). *** ## Authentication All API endpoints (except `/external/keys/*`) require three headers: ```bash theme={null} X-Client-ID: your-client-id X-API-Key: your-api-key X-Secret: your-secret ``` ### Getting API Keys 1. Login to your Shieldbase account at [https://app.sbai.cloud/](https://app.sbai.cloud/) 2. Navigate to **Settings → API** 3. Click **"Generate"** to create your API credentials 4. **Save them securely** - the API key is only shown once! Keep your API credentials secure. Never commit them to version control or expose them in client-side code. *** ## Base URLs ```bash Production theme={null} https://api.shieldbase.ai ``` ```bash Development theme={null} http://localhost:8000 ``` *** ## Quick Start ### 1. Set Environment Variables ```bash theme={null} export SBAI_CLIENT_ID="sbai_client_xxx" export SBAI_API_KEY="sbai_sk_xxx" export SBAI_SECRET="sbai_secret_xxx" export SBAI_BASE_URL="https://api.shieldbase.ai" ``` ### 2. Test Connection ```bash theme={null} curl -X GET "${SBAI_BASE_URL}/external/models" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" ``` *** ## Endpoints ### Models #### List Available Models **GET /external/models** Returns all AI models available in the system with real-time availability status. **Example Request:** ```bash theme={null} curl -X GET "${SBAI_BASE_URL}/external/models" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" ``` **Example Response:** ```json theme={null} { "success": true, "data": [ { "id": "gpt-5.1", "name": "GPT-5.1", "image": "openai-logo.png", "group_name": "OpenAI", "is_available": true }, { "id": "gemini-2.5-pro", "name": "Gemini 2.5 Pro", "image": "google-logo.png", "group_name": "Google", "is_available": true } ] } ``` *** ### Upload #### Upload Files to Library **POST /external/upload** Upload files asynchronously. Files are queued for indexing and become searchable once processing completes. **Supported file types:**\ `pdf`, `doc`, `docx`, `xls`, `xlsx`, `csv`, `json`, `txt`, `html`, `ppt`, `pptx`, `zip`, `md`, `sql`, `yml`, `yaml`, `png`, `jpg`, `jpeg`, `gif`, `webp` **Max file size:** 1 GB per file **Example Request:** ```bash theme={null} curl -X POST "${SBAI_BASE_URL}/external/upload" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -F "files=@report.pdf" \ -F "files=@data.csv" \ -F "folder_paths=reports/2024" ``` **Example Response:** ```json theme={null} { "message": "Uploaded content is being processed", "data": [ { "id": "abc123", "file_name": "report.pdf", "state": "loading", "provider": "file" }, { "id": "def456", "file_name": "data.csv", "state": "loading", "provider": "file" } ] } ``` *** ### Libraries #### List Library Files **GET /external/libraries** Retrieve paginated list of library files with advanced filtering options. **Query Parameters:** | Parameter | Type | Default | Description | | -------------- | ------ | ------- | ------------------------------------------------- | | `page` | int | 1 | Page number (starts at 1) | | `page_size` | int | 40 | Items per page (max 100) | | `search` | string | - | Search by file name or folder path | | `provider` | string | - | Filter by provider (e.g. `file`, `google_drive`) | | `folder_paths` | string | - | Filter by folder path | | `file_types` | string | - | Comma-separated file extensions (e.g. `pdf,docx`) | | `sort_by` | string | - | Field to sort by (e.g. `created_at`, `file_name`) | | `sort_order` | string | desc | Sort direction: `asc` or `desc` | **Example Request:** ```bash theme={null} curl -X GET "${SBAI_BASE_URL}/external/libraries?page=1&page_size=40&sort_order=desc" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" ``` **Example Response:** ```json theme={null} { "total_items": 120, "providers": { "file": 80, "google_drive": 40 }, "page": 1, "page_size": 40, "total_pages": 3, "items": [ { "id": "abc123", "file_name": "report.pdf", "provider": "file", "mime_type": "application/pdf", "state": "success", "download_link": "https://cdn.shieldbase.ai/...", "created_at": "2024-06-22T10:00:00", "folder_path": ["reports", "2024"], "is_shared": false } ] } ``` *** ### Search #### Semantic + Keyword Search **POST /external/search** Combine keyword matching (BM25) with semantic similarity (vector search) for best results. **Payload Fields:** | Field | Type | Default | Description | | -------------------- | --------- | ------------ | -------------------------------------------------- | | `keyword` or `query` | string | **required** | Search query | | `limit` or `top_k` | int | 20 | Max results (max 100) | | `group_by_file` | bool | false | Merge chunks from same file | | `types` | string\[] | - | Filter by type: `file`, `workflow`, `conversation` | | `use_bm25` | bool | true | Enable BM25 keyword search | | `use_vector` | bool | true | Enable semantic vector search | | `bm25_weight` | float | 0.7 | BM25 score weight (0–1) | | `vector_weight` | float | 0.3 | Vector score weight (0–1) | | `relative_threshold` | float | 0.7 | Min score as % of top result | **Example Request:** ```bash theme={null} curl -X POST "${SBAI_BASE_URL}/external/search" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -H "Content-Type: application/json" \ -d '{ "keyword": "quarterly revenue", "limit": 40, "group_by_file": true }' ``` **Advanced Search Example:** ```bash theme={null} curl -X POST "${SBAI_BASE_URL}/external/search" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -H "Content-Type: application/json" \ -d '{ "query": "quarterly revenue report", "top_k": 20, "types": ["file", "workflow"], "use_bm25": true, "use_vector": true, "bm25_weight": 0.7, "vector_weight": 0.3, "relative_threshold": 0.7, "group_by_file": true }' ``` **Example Response:** ```json theme={null} { "success": true, "results": [ { "id": "local-user##report.pdf", "title": "Q1 Revenue Report 2024.pdf", "content": "The quarterly revenue increased by...", "type": "library", "provider": "file", "score": 0.95 } ] } ``` *** ### Chat (Streaming) #### Create New Conversation **POST /external/conversations** Create a new conversation and receive real-time AI responses via SSE streaming. **Payload Fields:** | Field | Type | Default | Description | | --------------------- | --------- | ------------ | ------------------------------------------- | | `content` | string | **required** | The user message | | `model` | string | gpt-5.1 | AI model ID (see `/external/models`) | | `document_ids` | string\[] | - | Library file IDs to include as context | | `file_ids` | string\[] | - | Uploaded file IDs (from `/external/upload`) | | `user_timezone` | string | UTC | IANA timezone (e.g. `Asia/Jakarta`) | | `quoted_text` | string | - | Text to quote/reply to | | `additional_metadata` | object | - | Extended options (see below) | **`additional_metadata` Options:** | Field | Type | Default | Description | | -------------- | --------- | ------- | -------------------------------------------- | | `web_search` | bool | true | Enable web search | | `think` | bool | false | Extended thinking mode | | `agentic_mode` | bool | false | Agentic multi-step mode | | `agent_id` | string | - | Specific agent ID | | `preferences` | object | - | `{language, output_style, tones, character}` | | `side_by_side` | bool | false | Run two models in parallel | | `models` | string\[] | - | `[modelA, modelB]` for side-by-side | **Example Request:** ```bash theme={null} curl -N -X POST "${SBAI_BASE_URL}/external/conversations" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -H "Content-Type: application/json" \ -d '{ "content": "What is machine learning?", "model": "gpt-5.1", "additional_metadata": { "web_search": true } }' ``` **SSE Event Types:** | Event | Payload | Notes | | ---------------------- | ------------------------------------- | -------------------------------------- | | `stream_meta` | `{run_id, conversation_id}` | First event; persist `conversation_id` | | `conversation_created` | `{conversation_id}` | New-conversation endpoint only | | `message_start` | `{message_id, user_message_id}` | AI reply started | | `content` | `{content: "…chunk…"}` | Stream text chunk | | `thinking` | `{content: "…"}` | Extended-thinking mode only | | `done` | `{conversation_id, message_id, …}` | Stream complete | | `error` | `{content: "stream_error", error_id}` | Fatal error | #### Continue Existing Conversation **POST /external/conversations/** Send a follow-up message to an existing conversation and stream the AI reply. **Example Request:** ```bash theme={null} curl -N -X POST "${SBAI_BASE_URL}/external/conversations/{conversation_id}" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -H "Content-Type: application/json" \ -d '{ "content": "Can you explain that in more detail?", "model": "gpt-5.1" }' ``` Use the `conversation_id` from the `conversation_created` event to continue the thread. *** ### Agents (Headless Execution) #### Run Agentic Task **POST /external/agents/run** Headless agentic execution - perfect for automation, scripts, and webhooks. **Payload Fields:** | Field | Type | Default | Description | | --------------------- | --------- | ------------ | ------------------------------------------- | | `prompt` | string | **required** | The task / instruction to execute | | `agent_id` | string | - | Specific agent ID to use | | `model` | string | - | AI model override (see `/external/models`) | | `document_ids` | string\[] | - | Library file IDs to include as context | | `file_ids` | string\[] | - | Uploaded file IDs (from `/external/upload`) | | `user_timezone` | string | UTC | IANA timezone | | `timeout_seconds` | int | 600 | Max wait time (max 1800) | | `additional_metadata` | object | - | Extra options passed through to the model | **Example Request:** ```bash theme={null} curl -X POST "${SBAI_BASE_URL}/external/agents/run" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Analyze the Q1 sales data and generate a summary report with charts", "document_ids": ["local-user##q1_sales.xlsx"], "timeout_seconds": 300 }' ``` **Example Response:** ```json theme={null} { "conversation_id": "8e5245f6-...", "output": "## Q1 Sales Summary\n\nKey highlights: ...", "generated_files": [ { "url": "https://cdn.shieldbase.ai/...", "filename": "q1_summary.pdf", "size": 204800 } ], "success": true, "error": null } ``` **When to use `/external/agents/run` vs `/external/conversations`:** | | `/external/agents/run` | `/external/conversations` | | ----------------- | -------------------------------------- | ------------------------------------------- | | Response | Blocking JSON | SSE stream | | Best for | Headless automation, scripts, webhooks | Real-time UI, progress display | | `generated_files` | Included directly in response | Requires fetching conversation after `done` | **Timeout:** Default 10 minutes, max 30 minutes. Returns HTTP 408 if exceeded. *** ## Privacy & Data Redaction ### Redacting Sensitive Information To protect sensitive data in prompts and responses, you can enable automatic redaction of: * **PII (Personally Identifiable Information):** Names, emails, phone numbers, addresses * **Financial Data:** Credit card numbers, bank account numbers * **Credentials:** API keys, passwords, tokens * **Custom Patterns:** Define your own regex patterns for domain-specific data **Example configuration (backend):** ```python theme={null} # backend/sbai/config.py or environment variables ENABLE_PII_REDACTION = True REDACTION_PATTERNS = { "email": r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b", "phone": r"\b\d{3}[-.]?\d{3}[-.]?\d{4}\b", "credit_card": r"\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b", } ``` **Example usage in API request:** ```bash theme={null} curl -X POST "${SBAI_BASE_URL}/external/conversations" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -H "Content-Type: application/json" \ -d '{ "content": "Process this customer data: John Doe, john@example.com, 555-1234", "model": "gpt-5.1", "additional_metadata": { "redact_pii": true } }' ``` The system will automatically redact sensitive information: * Input: `"John Doe, john@example.com, 555-1234"` * Processed: `"[REDACTED_NAME], [REDACTED_EMAIL], [REDACTED_PHONE]"` *** ## Rate Limits **100 requests per minute** per API key Rate limit headers are included in responses: * `X-RateLimit-Limit`: Total requests allowed per minute * `X-RateLimit-Remaining`: Requests remaining in current window * `X-RateLimit-Reset`: Unix timestamp when the limit resets *** ## Error Handling All errors follow this format: ```json theme={null} { "error": "error_code", "message": "Human readable error message" } ``` **Common error codes:** | Code | HTTP Status | Description | | --------------------- | ----------- | ----------------------- | | `invalid_credentials` | 403 | Invalid API credentials | | `invalid_model` | 400 | Model not found | | `not_found` | 404 | Resource not found | | `rate_limit_exceeded` | 429 | Too many requests | | `internal_error` | 500 | Server error | *** ## Testing Script Save this as `test-external-api.sh`: ```bash theme={null} #!/bin/bash # Configuration export SBAI_CLIENT_ID="sbai_client_xxx" export SBAI_API_KEY="sbai_sk_xxx" export SBAI_SECRET="sbai_secret_xxx" export SBAI_BASE_URL="http://localhost:8000" echo "🧪 Testing Shieldbase External API" echo "==================================" # Test 1: List Models echo -e "\n1️⃣ Testing GET /external/models" curl -s -X GET "${SBAI_BASE_URL}/external/models" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" | jq '.' # Test 2: Upload File echo -e "\n2️⃣ Testing POST /external/upload" echo "Sample content for testing" > test-file.txt curl -s -X POST "${SBAI_BASE_URL}/external/upload" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -F "files=@test-file.txt" \ -F "folder_paths=test" | jq '.' rm test-file.txt # Test 3: List Libraries echo -e "\n3️⃣ Testing GET /external/libraries" curl -s -X GET "${SBAI_BASE_URL}/external/libraries?page=1&page_size=10" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" | jq '.' # Test 4: Search echo -e "\n4️⃣ Testing POST /external/search" curl -s -X POST "${SBAI_BASE_URL}/external/search" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -H "Content-Type: application/json" \ -d '{ "keyword": "test", "limit": 10, "group_by_file": true }' | jq '.' # Test 5: Chat (New Conversation) echo -e "\n5️⃣ Testing POST /external/conversations (SSE stream)" curl -N -X POST "${SBAI_BASE_URL}/external/conversations" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -H "Content-Type: application/json" \ -d '{ "content": "Hello! What is 2+2?", "model": "gpt-5.1" }' 2>&1 | head -n 20 # Test 6: Agents Run echo -e "\n6️⃣ Testing POST /external/agents/run" curl -s -X POST "${SBAI_BASE_URL}/external/agents/run" \ -H "X-Client-ID: ${SBAI_CLIENT_ID}" \ -H "X-API-Key: ${SBAI_API_KEY}" \ -H "X-Secret: ${SBAI_SECRET}" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Calculate 5 + 3 and explain the result", "timeout_seconds": 60 }' | jq '.' echo -e "\n✅ All tests completed!" ``` Make it executable and run: ```bash theme={null} chmod +x test-external-api.sh ./test-external-api.sh ``` *** ## Additional Resources * **[Interactive API Docs](/external-docs/docs)** - Explore the API with Scalar UI (dark mode, modern layout) * **[OpenAPI Spec](/external-docs/openapi.json)** - Download the OpenAPI specification * **[Support](mailto:support@shieldbase.ai)** - Contact our support team * **[Status Page](https://status.shieldbase.ai)** - Check API status and uptime *** ## Coming Soon * Python SDK * JavaScript/TypeScript SDK * Go SDK * Webhook support for async notifications * GraphQL endpoint * Batch processing API # Introduction Source: https://docs.shieldbase.ai/api-reference/introduction Explore the API workflows designed for seamless document uploading, powerful semantic search, and efficient conversation management ## Welcome Welcome to our Shieldbase AI API documentation site! Our API provides intuitive endpoints to seamlessly upload documents, execute advanced semantic searches, and manage dynamic conversations. Dive into the two primary workflows below to harness these powerful features effectively. ### Authentication Before you get started, ensure that all your API requests include the following three headers. These headers are mandatory for all requests to authenticate and authorize your access to the system: * **client-id**: Your unique client identifier. * **private-key**: A private key to authenticate your API calls. * **secret**: A secret key that provides an additional layer of security. To obtain your `client-id`, `private-key`, and `secret`, please visit [https://app.sbai.cloud/](https://app.sbai.cloud/) and sign in to your account or email us to [support@shieldbase.ai](mailto:support@shieldbase.ai). Once you have these credentials, you can start making authenticated requests. These headers need to be included in every request you send to the API. *** ## Models API Retrieve available models for tasks like semantic search and conversation management via the `GET /external/models` endpoint. The response delivers an array of models, each with a `label` and `value` for easy reference. ### Endpoint **GET** `/external/models` ### Headers Make sure to include the following headers in your request to authenticate: * **client-id**: Your unique client identifier. * **private-key**: A private key used for authenticating your API calls. * **secret**: A secret key that provides additional security for your requests. ### Response Upon a successful request, the response will include an array of available models, each represented as an object with the following properties: * **label**: The human-readable name of the model. * **value**: The model's identifier, used when specifying which model to use. ### Response Example ```json theme={null} [ { "label": "GPT-3.5", "value": "gpt-3.5" }, { "label": "GPT4o", "value": "gpt4o" } ] ``` *** ### Workflow 1: Upload and Semantic Search This workflow allows you to upload documents and perform a semantic search across the uploaded files. It’s a two-step process: First, you upload your documents, and then you use the semantic search endpoint to retrieve all the relevant contents. #### Step 1: Upload Documents Start by uploading one or more documents using our document upload API endpoint. This is the first step in the process and requires you to send the files as part of a `multipart/form-data` request. Make sure that you include all required headers like `client-id`, `private-key`, and `secret`. To upload a document or a set of documents, use the `PUT /external/upload` endpoint. This allows you to upload files in various formats. You need to include the files as binary data within a form data, and the server will process them enabling semantic search and other features afterwards. Upon successful upload, the server will return a confirmation message. #### Step 2: Perform a Semantic Search After uploading documents, you can retrieve them and their content semantically using keywords or context through our semantic search endpoint. This helps you find documents based on their content and similarity, making retrieval easier and efficient. Once your documents have been uploaded, you can use the `POST /external/semantic-search` endpoint to retrieve content based on specified keywords or query. You’ll also be able to narrow down your search by providing a context ID if needed. This endpoint will return the most relevant documents, giving you easy access to the information you need. *** ### Workflow 2: Conversation Management Our conversation management API enables you to start, continue, and manage conversations programmatically. The conversation flow starts with initiating a new conversation, sending messages to it, and continuing the conversation when needed. #### Step 1: Start a New Conversation Begin a new conversation by sending an initial message to the conversation API. This endpoint will create a new conversation ID that will be used for tracking the conversation. To initiate a new conversation, use the `POST /external/start-conversation` endpoint. You’ll need to provide the message you want to start the conversation with. The server will respond with a `conversation_id` and `model` along with the initial conversation details, such as the messages, ner count, and timestamp. ### Example Response for Start Conversation ```json theme={null} { "conversation_id": "", "title": "", "messages": { "id": "", "text": "", "redacted": "", "synthetic": "", "ner_count": 123, "response": "", "ner_items": [], "timestamp": "2023-11-07T05:31:56Z" } } ``` #### Step 2: Send a Message in the Conversation Once the conversation has started, you can send additional messages to continue the dialogue. This helps in extending the conversation with new information. To continue the dialogue, use the `POST /external/send` endpoint. Include the `conversation_id` received from the `start-conversation` endpoint and your new message in the body of the request. This keeps the conversation flow intact, ensuring that each message is properly linked to its conversation. ### Example Response for Send Conversation ```json theme={null} { "conversation_id": "", "sender": "ai | sender", "message_text": "", "redacted_text": "", "syntactic_text": "", "model": "gpt-4o", "related_questions": [""], "id": "", "typing_completed": true, "created_at": "2023-11-07T05:31:56Z" } ``` #### Step 3: Continue the Conversation Use this endpoint to continue the ongoing conversation by adding new responses to it. This ensures that the conversation can evolve over time. If you want to further extend the conversation, you will need to use the `POST /external/continue` endpoint, providing the `conversation_id` and `model` and any additional information required to keep the conversation going. After calling `continue-conversation`, you can return to the `send-conversation` endpoint to send new messages within the same conversation context. ### Example Response for Continue Conversation ```json theme={null} { "conversation_id": "d0c73687-cc8d-4628-be2d-01050d32dfb6", "sender": "user", "message_text": "", "redacted_text": "", "syntactic_text": "", "typing_completed": true, "created_at": "2024-08-16T09:24:07.865867", "ner_items": [], "ner_count": 123, "title": "Dropbox: A Popular File Sharing Service", "id": "ac3ca0a0-69ee-49c3-a6a5-86ee9b9f4c0e" } ``` # Release Notes Source: https://docs.shieldbase.ai/changelog/changelog Detailed release notes for each version of Shieldbase AI ## v1.2.0 Released on February 12, 2026 #### New Features * **Translate Document Action**: A new specialized agent and action type for automated document translation within workflows. * **GitLab Integration**: Seamlessly connect GitLab repositories to automate development cycles and data synchronization. * **Enhanced Workflow Designer**: New productivity tools including import, export, multi-select, right-click actions, and copy-paste functionality for faster design. * **French Localization (i18n)**: Full platform support for French, enabling better accessibility for international teams. * **Homepage Task Management**: Improved Task Notification system and optimized lists to focus specifically on "Pending" and "Overdue" items. * **Workflow Portability**: Added the ability to import and export workflows to facilitate easy sharing and migration between environments. #### Fixes & Enhancements * **Dataset Upsert Logic**: Optimized the "Store in Dataset" action to refresh or replace data within the same run, preventing duplicate rows. * **System Stability**: Resolved critical hanging issues in Parent-Child and Conversational workflows and fixed email attachment failures. * **Chatbot Fixes**: Fixed high-priority bugs regarding data hallucinations and language detection errors. * **Reporting & UI**: Fixed dashboard crashes, improved chart responsiveness, and corrected "code-style" text formatting bugs in forms. *** ## v1.1.0 Released on January 28, 2026 #### New Features * **Interactive Dashboards & Reporting**: Introduced clickable links within charts and tables and added the ability to adjust chart panel dimensions for a more customizable visualization experience. * **Workflow Search & History Enhancements**: Implementation of a dedicated Workflow Search page and added execution duration metrics for both individual steps and overall workflows. * **Advanced Attachment Handling**: Users can now attach "Source" PDF documents from parent workflows to emails, ensuring better UI formatting and comprehensive summaries. * **Workflow Type Change**: Users can modify the workflow type after creating them. #### Fixes & Enhancements * **Chatbot & AI Accuracy**: Fixed system prompt failures, corrected citation numbering, and addressed the "Related Follow-Ups" trigger issue to ensure more accurate AI responses. * **Performance Optimization**: Significantly improved data processing speeds for "Store into Dataset" actions and file uploads within folders. * **UI/UX Polishing**: Fixed layout issues where menus and charts were being cut off in the Dashboard and Reporting views. * **Integration Stability**: Resolve Magento API data sync issues. * **Local Time Formatting**: Fixed reporting timestamps to display in the user's local time instead of UTC. *** ## v1.0.2 Released on January 15, 2026 #### New Features * **Global Search**: Upgraded the search tool to help you find files, workflows, and specific results much faster across the entire platform. * **Custom Branding**: Workspace owners can now add their own company logos and branding for a more personalized experience, for emails, generated documents, and External Workflows. * **Improved Emailing**: Sending emails is now easier; the system can automatically pull recipient addresses from previous steps and any action types in your workflow. * **Auto-Save Reports**: Any reports generated from your workflows are now automatically saved directly to your Reporting library for easy access. * **One-Click Previews**: Added a "Preview" button so you can instantly view files and documents without having to download them first. * **Advanced Parent Workflows**: You can now print results from a "parent" workflow directly within the related task, making it easier to keep all your data connected. * **Enhanced Reporting Details**: Reports now include a "View Details" button whenever a specific execution ID is present, giving you instant access to the full history of a task. #### Fixes & Enhancements * **Smoother Login**: The system now remembers you by default so you don't have to log in every time you open a new tab. * **Reliable File Uploads**: Fixed an issue where the "Upload File" button was occasionally disabled, ensuring you can always submit your documents. * **Better Document Formatting**: Documents and PDFs generated by the system now have consistent, professional formatting that is easier to read. * **Stability Upgrades**: Resolved various errors in the chat and workflow sections to provide a faster and more stable performance. # AI Assistant Source: https://docs.shieldbase.ai/how-to-use/ai-assistant Master the AI Assistant with natural language interactions and multimodal capabilities ## Overview Shieldbase AI Assistant uses natural language to interpret user prompts, access multiple AI models, select the most suitable one for the task, and then perform actions or provide information to the user. ### Video Tutorial 💡 **Tip**: Adjust video playback speed using the gear icon (⚙️) in the video player. We recommend 0.5x speed for detailed tutorials.