# Anthropic Source: https://docs.hymalaia.com/ai-configs/anthropic Configure Hymalaia to use different Anthropic Claude models like Claude 3.5 Sonnet. # Anthropic Hymalaia supports Claude models from [Anthropic](https://www.anthropic.com/), including the high-performing **Claude 3.5 Sonnet**. *** ## 🔧 Configuration Steps Setting up Anthropic in Hymalaia is simple: 1. **Get your API Key** * Go to the [Anthropic Console](https://console.anthropic.com/) * Sign in and generate an API key 2. **Configure in Hymalaia** * Open the **Admin Panel** * Navigate to **LLM Providers** * Select **Anthropic** * Paste your API Key into the `API Key` field * Choose your preferred Claude model (e.g., `claude-3.5-sonnet`, `claude-3-opus`, etc.) > ✅ Once saved, Hymalaia will route prompts through the selected Anthropic model. *** ## 💡 Notes * Claude models are especially strong in **reasoning** and **multi-step tasks** * The default recommended model is `claude-3.5-sonnet` * Model switching is handled via the [`LiteLLM`](https://github.com/BerriAI/litellm) library for flexibility *** ## ⚠️ Data Policy Be sure to review Anthropic's [data usage policies](https://www.anthropic.com/legal)\ Depending on your use case, you may prefer a model or provider with specific retention policies. *** ## 🧠 AnthropicLLMProvider The integration with Hymalaia is handled internally through `AnthropicLLMProvider`, giving you robust Claude support with minimal setup. *** # Azure OpenAI Source: https://docs.hymalaia.com/ai-configs/azure-openAI Configure Hymalaia to use GPT models hosted on Azure OpenAI. Hymalaia supports GPT models deployed through **Azure OpenAI** for full enterprise-level flexibility and control. *** ## 🛠 Setting up Azure OpenAI Endpoint Follow these steps to integrate Azure OpenAI with Hymalaia: ### 1. Access Azure OpenAI Service * Go to the [Azure Portal](https://portal.azure.com/) * Search for **Azure OpenAI Service** ### 2. Create a New Resource * Click **"Create a resource"** * Create a **new resource group** * Fill in the required form fields to configure your instance ### 3. Complete Deployment * Wait for the deployment to finish * Navigate to [Azure OpenAI Studio](https://oai.azure.com/) ### 4. Open the Chat Panel * In the Studio, go to the **Chat** panel ### 5. Deploy a Model * Click **"Create a new deployment"** * Select a **chat completion model** (e.g., `gpt-4`, `gpt-35-turbo`) ### 6. Configure Settings * Choose your model, set any parameters * Deploy it ### 7. Test the Configuration * Use the chat bar on the right to test your model ### 8. Get Your Credentials * Click **"View Code"** in the Studio * Copy the following credentials: * `API version`: The string after `?api-version=...` * `API Base`: The `Endpoint` URL * `API Key`: The obfuscated API key *** ## ✅ Using with Hymalaia 1. Go to the **Admin Panel** 2. Select **LLM Providers** 3. Choose **Azure OpenAI** 4. Paste in your credentials: * **API Base** * **API Key** * **API Version** * **Deployment name** (the name you used during model deployment) Hymalaia will now route queries through your Azure-hosted GPT model. *** # Custom model server Source: https://docs.hymalaia.com/ai-configs/custom-model-server # Custom Model Server Hymalaia can be configured to use a custom model server through REST requests. This guide explains how to set up and integrate your own model server with Hymalaia. ## Overview Hymalaia supports making requests to arbitrary model servers via REST API endpoints. You can optionally include an access token for authentication. For custom request formats or response handling, you may need to update and rebuild the Hymalaia containers. ## Extending Hymalaia for Your Custom Model Server To make Hymalaia compatible with your custom model server, you'll need to implement a minimal interface that can support any arbitrary LLM Model Server. The process involves: 1. Updating the model server integration code 2. Rebuilding the necessary components 3. Configuring the connection settings The default implementation provides a reference that you can modify according to your needs. ## Example Implementation: Llama-2-13B-chat-GGML with FastAPI As a practical example, you can set up Hymalaia with a self-hosted Llama-2-13B-chat-GGML model using a custom FastAPI server. ### Key Components: * FastAPI server hosting the model * Llama-2-13B-chat-GGML model * Custom request/response handling ### Demo Setup You can try this implementation using Google Colab for GPU access. However, please note that Colab is not recommended for production deployments. For detailed implementation steps and code examples, refer to our [Medium blog post](https://medium.com/your-blog-post-link). ## Configuration Steps 1. **Server Setup** ```yaml theme={null} model_server: type: custom url: "http://your-model-server:port" # Optional authentication token access_token: "your-access-token" ``` 2. **Request Format** Customize the request format according to your model server's API: ```json theme={null} { "prompt": "Your prompt here", "parameters": { "temperature": 0.7, "max_tokens": 500 // Add other parameters as needed } } ``` 3. **Response Handling** Ensure your model server returns responses in a compatible format: ```json theme={null} { "response": "Model generated text", "metadata": { // Additional response metadata } } ``` ## Best Practices * Implement proper error handling * Set up authentication if needed * Monitor server performance * Configure appropriate timeout values * Implement rate limiting if necessary ## Security Considerations * Use HTTPS for production deployments * Implement proper authentication * Secure your API endpoints * Monitor for unusual activity * Regular security updates ## Troubleshooting Common issues and solutions: * Connection timeouts * Authentication errors * Response format mismatches * Resource constraints For additional support or questions, please refer to our documentation or community forums. # FastChat Source: https://docs.hymalaia.com/ai-configs/fastChat # FastChat Configure Hymalaia to use FastChat model servers. Refer to [Model Configs](/docs/model-configs) for how to set the environment variables for your particular deployment. > **Note**: While we support self hosted LLMs, you will get significantly better responses with a more powerful model like GPT-4. ## What is FastChat FastChat is a way to easily host LLMs on cli, using their web client, or as an API server. For the Hymalaia use case we will focus on interfacing with the model through the API server. See here for more information: [FastChat OpenAI API Documentation](https://github.com/lm-sys/FastChat/blob/main/docs/openai_api.md) In this case, we use LiteLLM's custom model server option. See here for more information: [LiteLLM Custom OpenAI Proxy Documentation](https://litellm.vercel.app/docs/providers/custom_openai_proxy) ## Set Hymalaia to use FastChat Server On the LLM page in the Admin Panel add a Custom LLM Provider with the following settings. Note that the Provider Name is OpenAI, since FastChat provides an OpenAI compatible API. ### Hints: * To point to other Docker containers running locally (e.g. accessible at [http://localhost](http://localhost)), use `http://host.docker.internal`. * Don't forget to include the `/v1` in the API base. ## Environment Variables You may also want to update some of the environment variables depending on your model choice / how you're running FastChat (e.g. on CPU vs GPU): ```bash theme={null} # Let's also make some changes to accommodate the weaker locally hosted LLM QA_TIMEOUT=120 # Set a longer timeout, running models on CPU can be slow # Always run search, never skip DISABLE_LLM_CHOOSE_SEARCH=True # Don't use LLM for reranking, the prompts aren't properly tuned for these models DISABLE_LLM_CHUNK_FILTER=True # Don't try to rephrase the user query, the prompts aren't properly tuned for these models DISABLE_LLM_QUERY_REPHRASE=True # Don't use LLM to automatically discover time/source filters DISABLE_LLM_FILTER_EXTRACTION=True # Uncomment this one if you find that the model is struggling (slow or distracted by too many docs) # Use only 1 section from the documents and do not require quotes # QA_PROMPT_OVERRIDE=weak ``` # GenAI Overview Source: https://docs.hymalaia.com/ai-configs/genAI-overview Overview of the Generative AI functionality and LLM integrations in Hymalaia. This section gives an overview of the **Generative AI capabilities** in Hymalaia and how **Large Language Models (LLMs)** are integrated into the system. *** ## LLM Options Hymalaia supports a wide range of **cloud-based** and **self-hosted** LLMs: ### ✅ Cloud Providers Supported: * OpenAI (e.g., GPT-4, GPT-4o) * Anthropic (Claude 3.5 Sonnet) * Azure OpenAI * HuggingFace * Replicate * AWS Bedrock * Cohere * ... and many more. ### 🏠 Self-Hosted Options: * **Ollama** * **GPT4All** * Any LLM compatible with **OpenAI’s API format** > Hymalaia relies on the excellent [`LiteLLM`](https://github.com/BerriAI/litellm) and Langchain libraries to support these integrations. *** ## What are Generative AI (LLM) models used for? LLMs are used to: * **Interpret** relevant documents retrieved via search * **Extract useful knowledge** from those documents * **Generate human-readable answers** to user queries This is the core of Hymalaia **AI Answering** functionality. *** ## What is the default LLM? Our **default recommendation** is: * `gpt-4` (OpenAI) * `Claude 3.5 Sonnet` (Anthropic) Other high-quality recommended options: * `Azure OpenAI` * `Claude via Bedrock` * `Self-hosted LLaMA 3.1 70B / 405B` These provide an excellent balance between quality, latency, and reliability. *** ## Why use a different model? There are several reasons to **customize your LLM provider**: * Use a **cheaper or faster model** (e.g., `gpt-4o`) * Select a provider with a **more favorable data retention policy** > *Note*: OpenAI and Azure OpenAI retain logs for **30 days** for misuse monitoring * **Self-host** your own model for full **control and flexibility** * Choose a **fine-tuned model** for a specific domain (e.g., legal, medical, technical) > 🔐 Generative AI is the **only part of Hymalaia** that sends data to a third-party service.\ > You can avoid this by self-hosting a model — but note the potential **performance tradeoffs**. *** ## Hymalaia LLM Configs To configure LLMs: * Go to the **Admin Panel > LLMs** * Add or edit your model configurations ### ✨ Unique to Hymalaia: You can **set up multiple LLM providers** and assign them to different **assistants**.\ This allows you to mix and match models based on: * Speed * Quality * Specialization * Cost *** ## Next Steps Check out the following examples for how to configure specific LLM providers, or go to the [Admin Panel](./admin_panel) to get started. > 🙋 Need help? The Hymalaia team is here — don’t hesitate to reach out! # HuggingFace Inference API Source: https://docs.hymalaia.com/ai-configs/huggingface-inference-api Configure Hymalaia to use HuggingFace Inference APIs To use HuggingFace Inference APIs with Hymalaia, follow the instructions below. ## 🧾 Prerequisites You must have a [Pro Account](https://huggingface.co/pricing) with HuggingFace to obtain an API key. > ⚠️ **Note**: As of **November 2023**, HuggingFace no longer supports very large models (over 10GB) like `LLaMA-2-70B` on the Pro Plan. You’ll need to: > > * Use a **dedicated Inference Endpoint** (paid) > * Or subscribe to an **Enterprise Plan** > > The Pro Plan still works with smaller models, but these may yield suboptimal results for Hymalaia. ## 🔑 Get Your Access Token 1. Go to your HuggingFace [user settings](https://huggingface.co/settings/tokens). 2. Copy your **User Access Token** (`HFAccessToken`). ## ⚙️ Set Up Hymalaia with HuggingFace Refer to your deployment-specific documentation for setting environment variables. ## 🧠 Using LLaMA-2-70B via Inference API To configure Hymalaia for **next-token generation** using HuggingFace's Inference API: 1. Navigate to the **LLM** page in the Hymalaia Admin Panel. 2. Add a **Custom LLM Provider** with the following identifiers: ```bash theme={null} HFCustomLLMProvider1 HFCustomLLMProvider2 ``` These custom providers allow Hymalaia to route prompt completion requests to the HuggingFace-hosted model endpoint. *** For more detailed setup and environment configuration examples, refer to the [Model Configs](../model_configs). # Ollama Source: https://docs.hymalaia.com/ai-configs/ollama Configure Hymalaia to use Ollama To use Ollama with Hymalaia, follow the instructions below. ## 🧾 Prerequisites You need to have [Ollama](https://ollama.ai/) installed on your system. You can find installation instructions and source code at: * [Ollama Website](https://ollama.ai/) * [Ollama GitHub Repository](https://github.com/jmorganca/ollama) > ⚠️ **Note**: While we support self-hosted LLMs, you will get significantly better responses with more powerful models like GPT-4. ## 🚀 Getting Started with Ollama 1. Install Ollama following the instructions for your operating system 2. Start a model using the command: ```bash theme={null} ollama run llama2 ``` 3. Verify the API works with a test request: ```bash theme={null} curl http://localhost:11434/api/generate -d '{ "model": "llama2", "prompt":"Why is the sky blue?" }' ``` ## ⚙️ Set Up Hymalaia with Ollama 1. Navigate to the **LLM** page in the Hymalaia Admin Panel 2. Add a **Custom LLM Provider** with the following identifiers: ```bash theme={null} OllamaLLMProvider1 OllamaLLMProvider2 ``` > 🔍 **Note**: For the API Base, when using Docker, point to `host.docker.internal` instead of `localhost` (e.g., `http://host.docker.internal:11434`). ## 🛠️ Environment Configuration You may want to adjust these environment variables to optimize for locally hosted LLMs: ```bash theme={null} # Extend timeout for CPU-based model execution QA_TIMEOUT=120 # Always run search, never skip DISABLE_LLM_CHOOSE_SEARCH=True # Disable LLM-based chunk filtering DISABLE_LLM_CHUNK_FILTER=True # Disable query rephrasing DISABLE_LLM_QUERY_REPHRASE=True # Disable automatic filter extraction DISABLE_LLM_FILTER_EXTRACTION=True # Optional: Use simplified prompting for weaker models # QA_PROMPT_OVERRIDE=weak ``` *** For more detailed setup and environment configuration examples, refer to the [Model Configs](../model_configs). # OpenAI Source: https://docs.hymalaia.com/ai-configs/openAI Configure Hymalaia to use different OpenAI models via API key. This page explains how to configure Hymalaia to use OpenAI’s powerful LLMs like `gpt-4`, `gpt-4o`, and more. *** ## 🔧 Configuration Steps OpenAI integration in Hymalaia is very straightforward: 1. **Get your API Key** * Go to the [OpenAI Developer Platform](https://platform.openai.com/account/api-keys) * Log in and generate a new API key 2. **Add your key to Hymalaia** * Go to the **Admin Panel** in Hymalaia * Navigate to **LLM Providers** * Select **OpenAI** * Paste your API Key in the `API Key` field * Choose the model you'd like to use (e.g., `gpt-4`, `gpt-4o`) > ✅ That’s it! Hymalaia is now connected to OpenAI’s API. *** # Vertex AI Source: https://docs.hymalaia.com/ai-configs/vertex-ai Configure Hymalaia to use Vertex AI for LLMs via Google Cloud. Hymalaia supports integration with **Vertex AI**, the managed AI platform by Google Cloud. You can configure Vertex AI using **two methods**: * ✅ `gcloud CLI` authentication * 🔐 `Service Account` authentication *** ## ✅ Use the gcloud CLI to authenticate 1. **Install the gcloud CLI**\ [Install gcloud CLI](https://cloud.google.com/sdk/docs/install) 2. **Authenticate using the CLI**\ Run the following on the machine where Hymalaia is running: ```bash theme={null} gcloud auth application-default login ``` 3. **Configure in Hymalaia Admin Panel** * Go to **Admin Panel → LLM Providers** * Add a **Custom LLM Provider** * Fill in the necessary fields: * **Provider Name**: VertexAI * **Project ID**: `YOUR_GCP_PROJECT_ID` * **Location/Region**: (e.g. `us-central1`) * **Model**: The LLM you want to use (e.g. `text-bison@001`) 4. **Save and Test**\ Hymalaia should now be able to call Vertex AI using the gcloud credentials. *** ## 🔐 Use a Service Account to authenticate 1. **Create a Service Account** * Go to the [GCP Console → IAM & Admin → Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts) * Click **+ Create Service Account** * Name it something like `hymalaia-vertex-ai` * Assign the **Vertex AI Administrator** role 2. **Generate a Key** * Click into your new service account * Go to the **Keys** tab * Click **Add Key → Create New Key → JSON** * Download and save the `.json` file 3. **Configure in Hymalaia Admin Panel** * Go to **Admin Panel → LLM Providers** * Add a **Custom LLM Provider** * Provide: * **Service Account Credentials**: Paste the **contents** of the JSON file * **Project ID** * **Location** * **Model**
4. **Save and Confirm**\ Hymalaia will now use Vertex AI authenticated via the service account credentials. *** # Create Custom Tool Source: https://docs.hymalaia.com/api-reference/actions/create_custom_tool POST /api/admin/tool/custom # Delete Custom Tool Source: https://docs.hymalaia.com/api-reference/actions/delete_custom_tool DELETE /api/admin/tool/custom/{tool_id} # Get Custom Tool Source: https://docs.hymalaia.com/api-reference/actions/get_custom_tool GET /api/tool/{tool_id} # List OpenAPI Tools Source: https://docs.hymalaia.com/api-reference/actions/list_openapi_tools GET /api/tool/openapi # List Tools Source: https://docs.hymalaia.com/api-reference/actions/list_tools GET /api/tool # Update Custom Tool Source: https://docs.hymalaia.com/api-reference/actions/update_custom_tool PUT /api/admin/tool/custom/{tool_id} # Validate Tool Source: https://docs.hymalaia.com/api-reference/actions/validate_tool POST /api/admin/tool/custom/validate # Create Agent Source: https://docs.hymalaia.com/api-reference/agents/create_persona POST /api/persona # Delete Agent Source: https://docs.hymalaia.com/api-reference/agents/delete_persona DELETE /api/persona/{persona_id} # Get Agents Admin Paginated Source: https://docs.hymalaia.com/api-reference/agents/get_agents_admin_paginated GET /api/admin/agents Paginated endpoint for listing agents (formerly personas) (admin view). Returns items for the requested page plus total count. Agents are ordered by display_priority (ASC, nulls last) then by ID (ASC). # Get Agents Paginated Source: https://docs.hymalaia.com/api-reference/agents/get_agents_paginated GET /api/agents Paginated endpoint for listing agents available to the user. Returns items for the requested page plus total count. Personas are ordered by display_priority (ASC, nulls last) then by ID (ASC). NOTE: persona_ids filter is not supported with pagination. Use the non-paginated endpoint if filtering by specific IDs is needed. # Get Agent Source: https://docs.hymalaia.com/api-reference/agents/get_persona GET /api/persona/{persona_id} # List Agents Admin Source: https://docs.hymalaia.com/api-reference/agents/list_personas_admin GET /api/admin/persona # Undelete Agent Source: https://docs.hymalaia.com/api-reference/agents/undelete_persona PATCH /api/admin/persona/{persona_id}/undelete # Update Agent Source: https://docs.hymalaia.com/api-reference/agents/update_persona PATCH /api/persona/{persona_id} # Send Chat Message (Deprecated) Source: https://docs.hymalaia.com/api-reference/chat-send-message Endpoint for sending a chat message via Hymalaia API # Chat Message This endpoint allows users to send a message through the Hymalaia chat interface. ## Endpoint `POST https://{{url_base}}/api/chat/send-message` ### URL Base Explanation The `{{url_base}}` is a dynamic placeholder that represents the base URL for the Hymalaia API. This variable can change depending on: * **Environment**: * Staging: `stg-azure.hymalaia.net` * Production: `api.hymalaia.net` * Custom/Enterprise: Your organization's specific domain * **Deployment Specifics**: * Different regions * Specific cloud instances * Custom deployments #### Example URL Variations * Staging: `https://stg-azure.hymalaia.net/api/chat/send-message` * Production: `https://api.hymalaia.net/api/chat/send-message` * Custom: `https://your-company.hymalaia.net/api/chat/send-message` Always use the specific URL base provided by your Hymalaia account administrator or found in your API configuration settings. ## Authentication Authentication is required to use this endpoint. You must include a Bearer Token in the Authorization header. Ensure you have generated an API key from the Hymalaia interface before making requests. ## Request Body The request body is a JSON object with the following structure: ```json theme={null} { "alternate_assistant_id": number, "chat_session_id": string, "parent_message_id": string | null, "message": string, "prompt_id": number, "search_doc_ids": string[] | null, "file_descriptors": any[], "regenerate": boolean, "retrieval_options": { "run_search": "auto" | string, "real_time": boolean, "filters": { "source_type": string | null, "document_set": string | null, "time_cutoff": string | null, "tags": string[] } }, "prompt_override": any | null, "llm_override": { "model_provider": string, "model_version": string }, "use_agentic_search": boolean } ``` ### Parameters Explanation * `alternate_assistant_id`: Specify an alternative assistant (default: 0) * `chat_session_id`: Unique identifier for the chat session * `parent_message_id`: ID of the parent message (for context in conversation) * `message`: The actual message text to send * `prompt_id`: Identifier for the prompt (default: 0) * `search_doc_ids`: Optional document IDs to search * `file_descriptors`: Any file attachments * `regenerate`: Whether to regenerate the response * `retrieval_options`: Advanced search and filtering options * `llm_override`: Specify a different LLM model if needed * `use_agentic_search`: Enable or disable agentic search ## Example Request ```bash theme={null} curl -X POST https://{{url_base}}/api/chat/send-message \ -H "Authorization: Bearer ${HYMALAIA_API_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "alternate_assistant_id": 0, "chat_session_id": "054ee9cd-3cdd-4d95-86b3-21447b40db6e", "message": "Hello, how are you?", "prompt_id": 0, "retrieval_options": { "run_search": "auto", "real_time": true, "filters": { "source_type": null, "document_set": null, "time_cutoff": null, "tags": [] } }, "llm_override": { "model_provider": "gpt", "model_version": "gpt-4o" }, "use_agentic_search": false, "parent_message_id": null, "file_descriptors": [], "search_doc_ids": null, "prompt_override": null }' ``` Replace `${HYMALAIA_API_TOKEN}` with your actual Hymalaia API token. * Obtain your token from the Hymalaia interface * Keep your token confidential * Never share your token publicly ## Response ### Success Response (200 OK) Returns the generated chat response. ### Error Responses ### 200 OK Returns the generated chat response. ### 400 Bad Request Invalid input ### 401 Unauthorized Invalid or missing API key ### 403 Forbidden Access denied due to authentication or role restrictions ```json theme={null} { "detail": "Access denied. User is not authenticated or lacks role information." } ``` Possible reasons: * User is not authenticated * User does not have the required role or permissions * Insufficient access rights for the requested operation Ensure you: * Are logged in with valid credentials * Have the appropriate role assigned * Have been granted access to the specific API endpoint ### Other Potential Errors * Additional error responses based on authentication or input validation ## Obtaining an API Key ### Generating API Keys API Keys Interface To generate an API key for accessing Hymalaia APIs: 1. Log in to the Hymalaia Admin Panel 2. Navigate to the "API Keys" section in the sidebar 3. Click on the "+ Create API Key" button 4. The system will generate a new API token 5. Copy the generated token ### Using the API Key Once generated, use the API key in the `Authorization` header: ```bash theme={null} # Format -H "Authorization: Bearer YOUR_API_TOKEN" # Example -H "Authorization: Bearer on_example_api_token_here" ``` * Keep your API key confidential * Do not share your API key publicly * You can generate multiple API keys and revoke them as needed * Each API key can have specific permissions and access levels ### Best Practices * Regularly rotate your API keys * Use different keys for different environments (development, staging, production) * Implement secure key management in your applications * Monitor and audit API key usage # Create New Chat Session Source: https://docs.hymalaia.com/api-reference/chat/create_new_chat_session POST /api/chat/create-chat-session # Delete All Chat Sessions Source: https://docs.hymalaia.com/api-reference/chat/delete_all_chat_sessions DELETE /api/chat/delete-all-chat-sessions # Delete Chat Session By Id Source: https://docs.hymalaia.com/api-reference/chat/delete_chat_session_by_id DELETE /api/chat/delete-chat-session/{session_id} # Fetch Chat File Source: https://docs.hymalaia.com/api-reference/chat/fetch_chat_file GET /api/chat/file/{file_id} # Get Chat Session Source: https://docs.hymalaia.com/api-reference/chat/get_chat_session GET /api/chat/get-chat-session/{session_id} # Get User Chat Sessions Source: https://docs.hymalaia.com/api-reference/chat/get_user_chat_sessions GET /api/chat/get-user-chat-sessions # Handle Send Chat Message Source: https://docs.hymalaia.com/api-reference/chat/handle_send_chat_message POST /api/chat/send-chat-message This endpoint is used to send a new chat message. Args: chat_message_req (SendMessageRequest): Details about the new chat message. - When stream=True (default): Returns StreamingResponse with SSE - When stream=False: Returns ChatFullResponse with complete data request (Request): The current HTTP request context. user (User | None): The current user, obtained via dependency injection. _ (None): Rate limit check is run if user/group/global rate limits are enabled. Returns: StreamingResponse | ChatFullResponse: Either streams or returns complete response. # Search Chats Source: https://docs.hymalaia.com/api-reference/chat/search_chats GET /api/chat/search Search for chat sessions based on the provided query. If no query is provided, returns recent chat sessions. # Seed Chat Source: https://docs.hymalaia.com/api-reference/chat/seed_chat POST /api/chat/seed-chat-session # Stop Chat Session Source: https://docs.hymalaia.com/api-reference/chat/stop_chat_session POST /api/chat/stop-chat-session/{chat_session_id} Stop a chat session by setting a stop signal in Redis. This endpoint is called by the frontend when the user clicks the stop button. # Core Concepts Source: https://docs.hymalaia.com/api-reference/core_concepts Essential concepts and terminology for working with Hymalaia APIs ## Actions & MCP Actions (also called Tools in the backend) are the functions that your Agents can perform to interact with external systems and services. They extend your agents' capabilities beyond just the language model. Built-in Actions: SCIM support for common IdPs is coming soon! Custom Actions: * **API Integrations**: Connect to external REST APIs * **Database Operations**: Query and update databases * **Workflow Automation**: Trigger business processes * **File Operations**: Read, write, and manipulate files You can define your own Custom Actions in the Admin Panel using an OpenAPI specification. Model Context Protocol (MCP) is an open standard that enables AI assistants to securely access external data sources and tools. Hymalaia can be configured as an MCP client to interact with external systems, databases, and APIs in a controlled manner. Key features of MCP: * **External Data Access**: Connect to databases, APIs, and file systems * **Authentication**: Pass through OAuth to ensure secure access to your MCP server. ## Agents Agents are AI assistants with custom instructions, Actions, and data access that extend the base LLM's capabilities. **Built-in Agents:** * `id: 0` Search Agent - Uses the Search Tool to answer questions from your knowledge base * `id: -1` General Agent - Basic chat with no tools (basic chat with an LLM) * `id: -2` Paraphrase Agent - Uses Search Tool and quotes exact snippets from sources * `id: -3` Art Agent - Generates images and visual content You can create your own Agents in the Admin Panel or by API. **Most Chat endpoints require an Agent ID** To find your Agent ID, you can: * Use the `GET /persona` API endpoint to list all agents * In the Admin Panel: Click into an agent and check the first number in the URL ## Chat The chat response system uses a packet-based architecture to deliver real-time responses to users. Instead of waiting for a complete response, the system breaks down the chat interaction into discrete packets that can be streamed incrementally. Every packet follows a consistent structure defined by the `Packet` class: ```python theme={null} class Packet(BaseModel): ind: int # Sequential index for ordering obj: PacketObj # The actual content including type of packet ``` **Streaming Flow:** * A chat request triggers the streaming process * Various packet types are generated based on the required operations (reasoning, tool calls, AI response, documents, citations, etc.) * Packets are sent with sequential indices to maintain order * The frontend processes packets in real-time to update the UI * An `OverallStop` packet signals completion **MessageStart and MessageDelta** These packets form the core of the streaming response system: * **MessageStart**: Initiates a new message with initial content and final search documents (if any) * **MessageDelta**: Delivers incremental text content as it's generated **Session and Section Management** Control packets manage the flow and lifecycle of the streaming process: * **OverallStop**: Signals the end of the entire streaming session * **SectionEnd**: Marks the completion of a packet type (reasoning, message, citations, etc.) Tool responses are streamed in the same way as the main message response. **Search Tools** * SearchToolStart and SearchToolDelta handle document search operations **Image Generation** * ImageGenerationToolStart, ImageGenerationToolDelta, and ImageGenerationToolHeartbeat manage AI image creation **Custom Tools** * CustomToolStart and CustomToolDelta are used for MCP and custom Actions The start packet signals the start of the tool response. The delta packets stream the results as they become available. Any reasoning steps are streamed so the frontend can render them as the system is processing. Reasoning packets are generally the first ones sent. * **ReasoningStart**: Begins a reasoning section * **ReasoningDelta**: Streams the AI's reasoning process Citation packets associate citation ids with document ids. * **CitationStart**: Initiates citation results * **CitationDelta**: Delivers source citations and references ## Connectors When you see the term *Connector* in Hymalaia or elsewhere in this documentation, we're generally referring to *ConnectorCredentialPairs* `Connectors` in Hymalaia define the data you would like to index * `name`: Not actually displayed in the UI if `ConnectorCredentialPairMetadata:name` is set * `source`: Which system to connect to (see `DocumentSource` accordion below) * `input_type`: How the `Connector` retrieves data (see `InputType` accordion below) * `connector_specific_config`: Source-specific settings like folder paths or channels. * `refresh_freq`: How often to check for new or updated content in seconds * `prune_freq`: How often to remove old content from Hymalaia in seconds * `indexing_start`: Optional datetime to specify when indexing should begin ```python Python theme={null} class ConnectorBase(BaseModel): name: str source: DocumentSource input_type: InputType connector_specific_config: dict[str, Any] refresh_freq: int | None = None prune_freq: int | None = None indexing_start: datetime | None = None ``` `Credentials` contain the authentication details needed to access data sources. These include API keys, OAuth tokens, personal access tokens (PATs), or service account credentials that allow Hymalaia to securely connect to your external systems. Types of `Credentials`: * **API Keys**: Simple token-based authentication * **OAuth Tokens**: Delegated authorization with refresh capabilities * **Service Accounts**: Machine-to-machine authentication * **Personal Access Tokens**: User-specific access credentials Behind the scenes, `Connectors` and `Credentials` are combined into a `ConnectorCredentialPair` (CC-pair). A CC-pair is an active connection that can sync data from your external sources into Hymalaia. CC-pairs are what you see and manage on the Admin `Connectors` page. CC-pair functionality: * **Active Connections**: Live data synchronization between source and Hymalaia * **Status Monitoring**: Track sync health and performance * **Access Control**: Manage who can see data from this connection * **Configuration Management**: Update sync settings and credentials If you're creating `Connectors` through the API, you must associate them with a `Credential` (CC-pair) to make them active! `ConnectorCredentialPairMetadata` defines the configuration and access settings for a CC-pair. Configuration options: * `name`: Optional display name for the CC-pair (overrides the `Connector` name) * `access_type`: Who can access data from this CC-pair (see `AccessType` accordion below) * `auto_sync_options`: Optional configuration for automatic synchronization settings * `groups`: List of group IDs that have access to this CC-pair ```python Python theme={null} class ConnectorCredentialPairMetadata(BaseModel): name: str | None = None access_type: AccessType auto_sync_options: dict[str, Any] | None = None groups: list[int] = Field(default_factory=list) ``` ## Documents `DocumentBase` is a core structure used throughout Hymalaia for storing and managing document data. Note that the embeddings are stored in Vespa separately. * `id`: Unique identifier. Generated by Hymalaia if not provided * `sections`: List of content sections (see `TextSection` and `ImageSection`) * `source`: The system this document originated from (see `DocumentSource`) * `semantic_identifier`: Displayed in the UI as the name of the Document * `metadata`: Arbitrary `string` or `list[string]` that will be saved as tags for this Document * `doc_updated_at`: UTC timestamp when the document was last updated * `chunk_count`: Number of chunks the document is split into for processing * `primary_owners`: Metadata about people associated with the Document * `secondary_owners`: Metadata about people associated with the Document * `title`: Used for search (defaults to `semantic_identifier` if not specified) * `from_ingestion_api`: Whether this document came from the Ingestion API * `additional_info`: Connector-specific information that other parts of the code may need * `external_access`: Permission sync data (Enterprise Edition only) The Ingestion API extends the DocumentBase definition to include `cc_pair_id` to automatically associate a document with a CC-pair. ```python Python expandable theme={null} class DocumentBase(BaseModel): """Used for Hymalaia ingestion api, the ID is inferred before use if not provided""" id: str | None = None sections: list[TextSection | ImageSection] source: DocumentSource | None = None semantic_identifier: str metadata: dict[str, str | list[str]] doc_updated_at: datetime | None = None chunk_count: int | None = None primary_owners: list[BasicExpertInfo] | None = None secondary_owners: list[BasicExpertInfo] | None = None title: str | None = None from_ingestion_api: bool = False additional_info: Any = None external_access: ExternalAccess | None = None ``` `DocumentSource` is an enum that defines the valid sources for a document. Uploading files to the Ingestion API and creating `Connectors` programmatically require specifying a `DocumentSource`. ```python Python expandable theme={null} class DocumentSource(str, Enum): INGESTION_API = "ingestion_api" # Special case, document passed in via Hymalaia APIs without specifying a source type SLACK = "slack" WEB = "web" GOOGLE_DRIVE = "google_drive" GMAIL = "gmail" REQUESTTRACKER = "requesttracker" GITHUB = "github" GITBOOK = "gitbook" GITLAB = "gitlab" GURU = "guru" BOOKSTACK = "bookstack" CONFLUENCE = "confluence" JIRA = "jira" SLAB = "slab" PRODUCTBOARD = "productboard" FILE = "file" NOTION = "notion" ZULIP = "zulip" LINEAR = "linear" HUBSPOT = "hubspot" DOCUMENT360 = "document360" GONG = "gong" GOOGLE_SITES = "google_sites" ZENDESK = "zendesk" LOOPIO = "loopio" DROPBOX = "dropbox" SHAREPOINT = "sharepoint" TEAMS = "teams" SALESFORCE = "salesforce" DISCOURSE = "discourse" AXERO = "axero" CLICKUP = "clickup" MEDIAWIKI = "mediawiki" WIKIPEDIA = "wikipedia" ASANA = "asana" S3 = "s3" R2 = "r2" GOOGLE_CLOUD_STORAGE = "google_cloud_storage" OCI_STORAGE = "oci_storage" XENFORO = "xenforo" NOT_APPLICABLE = "not_applicable" DISCORD = "discord" FRESHDESK = "freshdesk" FIREFLIES = "fireflies" EGNYTE = "egnyte" AIRTABLE = "airtable" HIGHSPOT = "highspot" IMAP = "imap" # Special case just for integration tests MOCK_CONNECTOR = "mock_connector" ``` `TextSection` is a portion of a Document in Hymalaia. * `text`: The actual text content of the section * `link`: Optional URL that this text section relates to or was sourced from ```python Python theme={null} class TextSection(Section): text: str link: str | None = None ``` `ImageSection` is an image extracted from a Document in Hymalaia. * `image_file_id`: UUID of the image file stored in Hymalaia's file store * `text`: Optional text description or caption for the image * `link`: Optional URL that this image section relates to or was sourced from ```python Python theme={null} class ImageSection(Section): image_file_id: str text: str | None = None link: str | None = None ``` `AccessType` defines who can access data from a `Connector` in Hymalaia. * `PUBLIC`: All Hymalaia users may access data from this `Connector` * `PRIVATE`: Only the user who created the `Connector` and specified Groups may access data from this `Connector` * `SYNC`: Only `Connectors` with permission-sync support can be set to SYNC. The `Connector` will sync access permissions with the source system. ```python Python theme={null} class AccessType(str, Enum): PUBLIC = "public" PRIVATE = "private" SYNC = "sync" ``` `InputType` defines how a `Connector` retrieves data from its source system. * `LOAD_STATE`: Single load of data from the source * `POLL`: Continuous polling for new data from the source (starts with a full load) * `EVENT`: Not implemented for most `Connectors` * `SLIM_RETRIEVAL`: For permission-syncing `Connectors` ```python Python theme={null} class InputType(str, Enum): LOAD_STATE = "load_state" POLL = "poll" EVENT = "event" SLIM_RETRIEVAL = "slim_retrieval" ``` ## Next Steps Learn how to index files with the Ingestion API Simple example of sending a message programmatically # Associate Credential To Connector Source: https://docs.hymalaia.com/api-reference/files_connectors/associate_credential_to_connector PUT /api/manage/connector/{connector_id}/credential/{credential_id} NOTE(rkuo): internally discussed and the consensus is this endpoint and create_connector_with_mock_credential should be combined. The intent of this endpoint is to handle connectors that actually need credentials. # Connector Run Once Source: https://docs.hymalaia.com/api-reference/files_connectors/connector_run_once POST /api/manage/admin/connector/run-once Used to trigger indexing on a set of cc_pairs associated with a single connector. # Create Connector From Model Source: https://docs.hymalaia.com/api-reference/files_connectors/create_connector_from_model POST /api/manage/admin/connector # Create Credential From Model Source: https://docs.hymalaia.com/api-reference/files_connectors/create_credential_from_model POST /api/manage/credential # Create Credential With Private Key Source: https://docs.hymalaia.com/api-reference/files_connectors/create_credential_with_private_key POST /api/manage/credential/private-key # Create Deletion Attempt For Connector Id Source: https://docs.hymalaia.com/api-reference/files_connectors/create_deletion_attempt_for_connector_id POST /api/manage/admin/deletion-attempt # Delete Connector By Id Source: https://docs.hymalaia.com/api-reference/files_connectors/delete_connector_by_id DELETE /api/manage/admin/connector/{connector_id} # Delete Credential By Id Source: https://docs.hymalaia.com/api-reference/files_connectors/delete_credential_by_id DELETE /api/manage/credential/{credential_id} # Delete Credential By Id Admin Source: https://docs.hymalaia.com/api-reference/files_connectors/delete_credential_by_id_admin DELETE /api/manage/admin/credential/{credential_id} Same as the user endpoint, but can delete any credential (not just the user's own) # Dissociate Credential From Connector Source: https://docs.hymalaia.com/api-reference/files_connectors/dissociate_credential_from_connector DELETE /api/manage/connector/{connector_id}/credential/{credential_id} # Force Delete Credential By Id Source: https://docs.hymalaia.com/api-reference/files_connectors/force_delete_credential_by_id DELETE /api/manage/credential/force/{credential_id} # Get Basic Connector Indexing Status Source: https://docs.hymalaia.com/api-reference/files_connectors/get_basic_connector_indexing_status GET /api/manage/connector-status # Get CC Pair Full Info Source: https://docs.hymalaia.com/api-reference/files_connectors/get_cc_pair_full_info GET /api/manage/admin/cc-pair/{cc_pair_id} # Get CC Pair Index Attempts Source: https://docs.hymalaia.com/api-reference/files_connectors/get_cc_pair_index_attempts GET /api/manage/admin/cc-pair/{cc_pair_id}/index-attempts # Get CC Pair Indexing Errors Source: https://docs.hymalaia.com/api-reference/files_connectors/get_cc_pair_indexing_errors GET /api/manage/admin/cc-pair/{cc_pair_id}/errors Gives back all errors for a given CC Pair. Allows pagination based on page and page_size params. Args: cc_pair_id: ID of the connector-credential pair to get errors for include_resolved: Whether to include resolved errors in the results page_num: Page number for pagination, starting at 0 page_size: Number of errors to return per page _: Current user, must be curator or admin db_session: Database session Returns: Paginated list of indexing errors for the CC pair. # Get Cc Source Full Info Source: https://docs.hymalaia.com/api-reference/files_connectors/get_cc_source_full_info GET /api/manage/admin/similar-credentials/{source_type} # Get Connector By Id Source: https://docs.hymalaia.com/api-reference/files_connectors/get_connector_by_id GET /api/manage/connector/{connector_id} # Get Connector Indexing Status Source: https://docs.hymalaia.com/api-reference/files_connectors/get_connector_indexing_status POST /api/manage/admin/connector/indexing-status # Get Connector Status Source: https://docs.hymalaia.com/api-reference/files_connectors/get_connector_status GET /api/manage/admin/connector/status # Get Connectors Source: https://docs.hymalaia.com/api-reference/files_connectors/get_connectors GET /api/manage/connector # Get Connectors By Credential Source: https://docs.hymalaia.com/api-reference/files_connectors/get_connectors_by_credential GET /api/manage/admin/connector Get a list of connectors. Allow filtering by a specific credential id. # Get Credential By Id Source: https://docs.hymalaia.com/api-reference/files_connectors/get_credential_by_id GET /api/manage/credential/{credential_id} # Get Currently Failed Indexing Status Source: https://docs.hymalaia.com/api-reference/files_connectors/get_currently_failed_indexing_status GET /api/manage/admin/connector/failed-indexing-status # Get Docs By Connector Credential Pair Source: https://docs.hymalaia.com/api-reference/files_connectors/get_docs_by_connector_credential_pair GET /api/onyx-api/connector-docs/{cc_pair_id} # Get Indexed Sources Source: https://docs.hymalaia.com/api-reference/files_connectors/get_indexed_sources GET /api/manage/indexed-sources # List Connector Files Source: https://docs.hymalaia.com/api-reference/files_connectors/list_connector_files GET /api/manage/admin/connector/{connector_id}/files List all files in a file connector. # List Credentials Source: https://docs.hymalaia.com/api-reference/files_connectors/list_credentials GET /api/manage/credential # List Credentials Admin Source: https://docs.hymalaia.com/api-reference/files_connectors/list_credentials_admin GET /api/manage/admin/credential Lists all public credentials # Prune Cc Pair Source: https://docs.hymalaia.com/api-reference/files_connectors/prune_cc_pair POST /api/manage/admin/cc-pair/{cc_pair_id}/prune Triggers pruning on a particular cc_pair immediately # Swap Credentials For Connector Source: https://docs.hymalaia.com/api-reference/files_connectors/swap_credentials_for_connector PUT /api/manage/admin/credential/swap # Update CC Pair Status Source: https://docs.hymalaia.com/api-reference/files_connectors/update_cc_pair_status PUT /api/manage/admin/cc-pair/{cc_pair_id}/status This method returns nearly immediately. It simply sets some signals and optimistically assumes any running background processes will clean themselves up. This is done to improve the perceived end user experience. Returns HTTPStatus.OK if everything finished. # Update Connector Files Source: https://docs.hymalaia.com/api-reference/files_connectors/update_connector_files POST /api/manage/admin/connector/{connector_id}/files/update Update files in a connector by adding new files and/or removing existing ones. This is an atomic operation that validates, updates the connector config, and triggers indexing. # Update Credential Data Source: https://docs.hymalaia.com/api-reference/files_connectors/update_credential_data PUT /api/manage/admin/credential/{credential_id} # Update Credential From Model Source: https://docs.hymalaia.com/api-reference/files_connectors/update_credential_from_model PATCH /api/manage/credential/{credential_id} # Update Credential Private Key Source: https://docs.hymalaia.com/api-reference/files_connectors/update_credential_private_key PUT /api/manage/admin/credential/private-key/{credential_id} # Upload Files Api Source: https://docs.hymalaia.com/api-reference/files_connectors/upload_files_api POST /api/manage/admin/connector/file/upload # Send a Message to Hymalaia Source: https://docs.hymalaia.com/api-reference/guides/chat_new_guide Sending messages programmatically to Hymalaia We recommend you migrate any usage of `/chat/send-message` and `/chat/send-message-simple-api` to this new API by February 1st, 2026. The `/chat/send-chat-message` API is used to send a message to Hymalaia. It is the same API that the Hymalaia frontend uses to send and receive messages. You have the option of receiving a streaming response or the complete response as a string. This guide was explain all of the parameters you can pass in to the API and provide a code sample. The user message to send to the Agent. Pass an object to override the default LLM settings for this request. If `None`, you will get the default Hymalaia behavior. You can pass or exclude any of the following fields: `model_provider`, `model_version`, `temperature` If you pass an invalid configuration, for example if the default `model_provider` is OpenAI and you only specify `claude-sonnet-4.5`, your request will fail. Agents are created with a set of Actions they are allowed to invoke. You can further configure this set for your immediate interaction using this parameter. See the list of Actions and their IDs via the [GET /tool](/developers/api_reference/actions/list_tools) endpoint. Pass in an empty list to disable all Actions. Pass in `None` to allow all the Actions which are configured for the Agent. Force the Agent to use a specific Action for this request. A specific tool/action which must be run by the Agent. The Agent may run other Actions before returning its final response, but it will be guaranteed to use this one. Leave empty to let the Agent decide which Actions to use. A list of files to include along with your request. File IDs can be found via the [POST /user/projects/file/upload](/developers/api_reference/projects/upload_user_files) and the [GET /user/projects/file/](/developers/api_reference/projects/get_user_file) endpoints. Filters to narrow down the internal search results used by the Agent. All filters arguments are optional and can be combined. * `source_type`: Source types like `web`, `slack`, `google_drive`, `confluence` * `document_set`: The name of the document sets to search within * `time_cutoff`: Only include documents created or modified after this timestamp. ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ` (e.g., `2024-01-01T00:00:00Z`). * `tags`: Document tags in the format `{"tag_key": "tag_value"}`. Only documents with matching tags will be searched. Enables Deep Research mode for this request. Note that this mode consumes significantly more tokens, so be careful accessing it via the API. The ID of the parent message in the chat history. This is the primary-key (unique identifier) for the previous message in the chat history tree. If not passed in, it is assumed that your new message is sequentially after the last message in the chat history. If set to `None`, the chat history is reset and the new message is considered the first message in the chat history. To continue an existing conversation, pass in the chat session ID where the message should be sent. If left blank, a new chat session will be created for the message according to `chat_session_info` (see below). Details about the chat session which will be used for all messages in the session. The field values can be left blank to use the default chat settings. * `persona_id`: The ID of the Agent to use for the chat session * `project_id`: ID of a Project if the chat should be scoped to a Project. Projects are used to organize files and instructions and are a lighter-weight version of Agents. Through programmatic use, it is typically recommended to use Agents instead. If true, then it responds with an SSE stream of individual packets. This is the same set used for the Hymalaia UI. Fields like the Answer, reasoning tokens, and iterative Tool Calls need to be pieced together from streamed tokens. ## Response Format ### Streaming Response Hymalaia returns various types of packets in the streaming response depending on the LLM's behavior. ```python expandable theme={null} class StreamingType(Enum): """Enum defining all streaming packet types.""" SECTION_END = "section_end" STOP = "stop" TOP_LEVEL_BRANCHING = "top_level_branching" ERROR = "error" MESSAGE_START = "message_start" MESSAGE_DELTA = "message_delta" SEARCH_TOOL_START = "search_tool_start" SEARCH_TOOL_QUERIES_DELTA = "search_tool_queries_delta" SEARCH_TOOL_DOCUMENTS_DELTA = "search_tool_documents_delta" OPEN_URL_START = "open_url_start" OPEN_URL_URLS = "open_url_urls" OPEN_URL_DOCUMENTS = "open_url_documents" IMAGE_GENERATION_START = "image_generation_start" IMAGE_GENERATION_HEARTBEAT = "image_generation_heartbeat" IMAGE_GENERATION_FINAL = "image_generation_final" PYTHON_TOOL_START = "python_tool_start" PYTHON_TOOL_DELTA = "python_tool_delta" CUSTOM_TOOL_START = "custom_tool_start" CUSTOM_TOOL_DELTA = "custom_tool_delta" REASONING_START = "reasoning_start" REASONING_DELTA = "reasoning_delta" REASONING_DONE = "reasoning_done" CITATION_INFO = "citation_info" DEEP_RESEARCH_PLAN_START = "deep_research_plan_start" DEEP_RESEARCH_PLAN_DELTA = "deep_research_plan_delta" RESEARCH_AGENT_START = "research_agent_start" INTERMEDIATE_REPORT_START = "intermediate_report_start" INTERMEDIATE_REPORT_DELTA = "intermediate_report_delta" INTERMEDIATE_REPORT_CITED_DOCS = "intermediate_report_cited_docs" ``` ### Non-streaming Response ```python theme={null} class ChatFullResponse(BaseModel): """Complete non-streaming response with all available data.""" # Core response fields answer: str answer_citationless: str pre_answer_reasoning: str | None = None tool_calls: list[ToolCallResponse] = [] # Documents & citations top_documents: list[SearchDoc] citation_info: list[CitationInfo] # Metadata message_id: int chat_session_id: UUID | None = None error_msg: str | None = None ``` ## Sample Request ```python Python expandable theme={null} import requests API_BASE_URL = "your own domain" API_KEY = "YOUR_KEY_HERE" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } response = requests.post( f"{API_BASE_URL}/chat/send-chat-message", headers=headers, json={ "message": "What is Hymalaia?", } ) data = response.json() print("Answer:", data["answer"]) print("Message ID:", data["message_id"]) ``` ```bash Shell expandable theme={null} #!/bin/bash API_BASE_URL="your own domain" API_KEY="YOUR_KEY_HERE" RESPONSE=$(curl -s -X POST "${API_BASE_URL}/chat/send-chat-message" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "message": "What is Hymalaia?" }' ) echo "Answer:" $(echo "$RESPONSE" | jq -r '.answer') echo "Message ID:" $(echo "$RESPONSE" | jq -r '.message_id') ``` ## Next Steps Use the lightweight ingestion API to index documents Learn how to create and configure Connectors programmatically # Create Connectors Source: https://docs.hymalaia.com/api-reference/guides/create_connector Learn how to create and configure connectors programmatically This is an advanced guide for automating connector creation. We highly recommend trying the Admin Panel or File Ingestion API first. To see available connectors, see the [Connectors page](/admins/connectors). ## Guide Skip to the [Full Code](#full-code) section if you don't want the step-by-step guide. In this example, we'll automate creating Jira Connectors for a selection of projects. **You will need an Admin API key to follow this guide.** ```python Python theme={null} import requests API_BASE_URL = "your own domain" API_KEY = "YOUR_KEY_HERE" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } ``` ```bash Shell theme={null} API_BASE_URL="https://your.hymalaia.domain/api" API_KEY="YOUR_KEY_HERE" ``` Each Connector type has a different `ConnectorSpecificConfig`. For Jira, since we're indexing a selection of projects, rather than all projects, we'll need to specify `jira_base_url`, `project_key`, and optionally `comment_email_blacklist`. ```json JSON theme={null} { "jira_base_url": "string", "project_key": "string | null", "comment_email_blacklist": ["string"] | null } ``` The `ConnectorSpecificConfig` are the same fields you fill out in the Admin Panel when creating a Connector. In addition to the `ConnectorSpecificConfig`, we also need to satisfy the schema for the `ConnectorUpdateRequest` object. See [Core Concepts: Connectors](/developers/core_concepts#connectors) for more details. In this example, we'll set the `access_type`, `name`, `source`, `input_type`, `refresh_freq`, and `prune_freq`. ```python Python theme={null} connector_payload = { "name": f"jira-{project_key}", "source": "jira", "input_type": "poll", "access_type": "PUBLIC", "connector_specific_config": { "jira_base_url": JIRA_BASE_URL, "project_key": project_key, "comment_email_blacklist": ["legal@company.com"] }, "refresh_freq": 3600, # Refresh every hour (3600 seconds) "prune_freq": 86400, # Prune every day (86400 seconds) } ``` ```json JSON theme={null} { "name": "jira-TECH", "source": "jira", "input_type": "poll", "access_type": "PUBLIC", "connector_specific_config": { "jira_base_url": "https://your-company.atlassian.net", "project_key": "TECH", "comment_email_blacklist": ["legal@company.com"] }, "refresh_freq": 3600, "prune_freq": 86400 } ``` Save the Connector ID from the response! You will need this later. ```python Python expandable theme={null} import requests import json from datetime import datetime PROJECTS_TO_INDEX = [ "TECH", "SALES", "OPS", ] JIRA_BASE_URL = "https://your-company.atlassian.net" connector_ids = [] for project_key in PROJECTS_TO_INDEX: connector_payload = { "name": f"jira-{project_key}", "source": "jira", "input_type": "poll", "access_type": "PUBLIC", "connector_specific_config": { "jira_base_url": JIRA_BASE_URL, "project_key": project_key, "comment_email_blacklist": ["legal@company.com"] }, "refresh_freq": 3600, # Refresh every hour (3600 seconds) "prune_freq": 86400, # Prune every day (86400 seconds) } response = requests.post( f"{API_BASE_URL}/manage/admins/connector", headers=headers, json=connector_payload ) if response.status_code == 200: connector_data = response.json() connector_id = connector_data.get('id') connector_ids.append(connector_id) print(f"Successfully created connector for project {project_key}") print(f"Connector ID: {connector_id}") else: print(f"Failed to create connector for project {project_key}") print(f"Status: {response.status_code}") print(f"Error: {response.text}") ``` ```bash Shell expandable theme={null} # Create connector for TECH project curl -X POST "${API_BASE_URL}/manage/admins/connector" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "name": "jira-TECH", "source": "jira", "input_type": "poll", "access_type": "PUBLIC", "connector_specific_config": { "jira_base_url": "https://your-company.atlassian.net", "project_key": "TECH", "comment_email_blacklist": ["legal@company.com"] }, "refresh_freq": 3600, "prune_freq": 86400 }' # Create connector for SALES project curl -X POST "${API_BASE_URL}/manage/admins/connector" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "name": "jira-SALES", "source": "jira", "input_type": "poll", "access_type": "PUBLIC", "connector_specific_config": { "jira_base_url": "https://your-company.atlassian.net", "project_key": "SALES", "comment_email_blacklist": ["legal@company.com"] }, "refresh_freq": 3600, "prune_freq": 86400 }' # Create connector for OPS project curl -X POST "${API_BASE_URL}/manage/admins/connector" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "name": "jira-OPS", "source": "jira", "input_type": "poll", "access_type": "PUBLIC", "connector_specific_config": { "jira_base_url": "https://your-company.atlassian.net", "project_key": "OPS", "comment_email_blacklist": ["legal@company.com"] }, "refresh_freq": 3600, "prune_freq": 86400 }' ``` The easiest way to create a Credential is in the Admin Panel. * Click Add a Connector * Select your relevant Connector * Follow the instructions to create a Credential Once your Credential is created, the Credential ID will be displayed to you. Certain Connectors may not require a Credential such as the File and Web connectors. `credential_id: 0` is a default empty Credential you can use for these Connectors. To list your Credentials, you can use the `GET manage/admins/credential` endpoint. ```python Python theme={null} response = requests.get( f"{API_BASE_URL}/manage/admins/credential", headers=headers ) credentials = response.json() jira_credential_id = next(cred for cred in credentials if cred['source'] == 'jira')['id'] ``` ```bash Shell theme={null} curl -X GET "${API_BASE_URL}/manage/admins/credential" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json" ``` If you do not do this step, your `Connector` is not fully created and you will not see it in the Admin Panel! ```python Python theme={null} for connector_id in connector_ids: try: response = requests.put( f"{API_BASE_URL}/manage/admins/connector/{connector_id}/credential/{jira_credential_id}", headers=headers, ) if response.status_code == 200: print(f"Successfully associated credential with connector {connector_id}") else: print(f"Failed to associate credential with connector {connector_id}") print(f"Status: {response.status_code}. Error: {response.text}") except Exception as e: print(f"Failed to associate credential with connector {connector_id}: {e}") ``` ```bash Shell theme={null} # Replace CONNECTOR_ID and CREDENTIAL_ID with actual values curl -X PUT "${API_BASE_URL}/manage/admins/connector/CONNECTOR_ID/credential/CREDENTIAL_ID" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json" ``` ## Full Code ```python Python expandable theme={null} import requests import json from datetime import datetime # Configuration API_BASE_URL = "your own domain" API_KEY = "YOUR_KEY_HERE" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # Projects to create connectors for PROJECTS_TO_INDEX = [ "TECH", "SALES", "OPS", ] JIRA_BASE_URL = "https://your-company.atlassian.net" connector_ids = [] # Step 1: Create connectors for each project print("Creating connectors...") for project_key in PROJECTS_TO_INDEX: connector_payload = { "name": f"jira-{project_key}", "source": "jira", "input_type": "poll", "access_type": "PUBLIC", "connector_specific_config": { "jira_base_url": JIRA_BASE_URL, "project_key": project_key, "comment_email_blacklist": ["legal@company.com"] }, "refresh_freq": 3600, # Refresh every hour (3600 seconds) "prune_freq": 86400, # Prune every day (86400 seconds) } response = requests.post( f"{API_BASE_URL}/manage/admins/connector", headers=headers, json=connector_payload ) if response.status_code == 200: connector_data = response.json() connector_id = connector_data.get('id') connector_ids.append(connector_id) print(f"Successfully created connector for project {project_key}") print(f"Connector ID: {connector_id}") else: print(f"Failed to create connector for project {project_key}") print(f"Status: {response.status_code}") print(f"Error: {response.text}") # Step 2: Get credentials print("\nFetching credentials...") response = requests.get( f"{API_BASE_URL}/manage/admins/credential", headers=headers ) if response.status_code == 200: credentials = response.json() # Find Jira credential (assumes you have one created) jira_credential = next((cred for cred in credentials if cred['source'] == 'jira'), None) if jira_credential: jira_credential_id = jira_credential['id'] print(f"Found Jira credential with ID: {jira_credential_id}") else: print("No Jira credential found. Please create one in the Admin Panel first.") exit(1) else: print(f"Failed to fetch credentials: {response.status_code}") print(f"Error: {response.text}") exit(1) # Step 3: Associate credentials with connectors print("\nAssociating credentials with connectors...") for connector_id in connector_ids: try: response = requests.put( f"{API_BASE_URL}/manage/admins/connector/{connector_id}/credential/{jira_credential_id}", headers=headers, ) if response.status_code == 200: print(f"Successfully associated credential with connector {connector_id}") else: print(f"Failed to associate credential with connector {connector_id}") print(f"Status: {response.status_code}. Error: {response.text}") except Exception as e: print(f"Failed to associate credential with connector {connector_id}: {e}") print(f"\nCompleted! Created {len(connector_ids)} connectors with IDs: {connector_ids}") ``` ```bash Shell expandable theme={null} #!/bin/bash # Configuration API_BASE_URL="https://your.hymalaia.domain/api" API_KEY="YOUR_KEY_HERE" # Array of projects to create connectors for PROJECTS=("TECH" "SALES" "OPS") JIRA_BASE_URL="https://your-company.atlassian.net" # Array to store connector IDs CONNECTOR_IDS=() echo "Creating connectors..." # Step 1: Create connectors for each project for PROJECT in "${PROJECTS[@]}"; do echo "Creating connector for project: $PROJECT" RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "${API_BASE_URL}/manage/admins/connector" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json" \ -d "{ \"name\": \"jira-${PROJECT}\", \"source\": \"jira\", \"input_type\": \"poll\", \"access_type\": \"PUBLIC\", \"connector_specific_config\": { \"jira_base_url\": \"${JIRA_BASE_URL}\", \"project_key\": \"${PROJECT}\", \"comment_email_blacklist\": [\"legal@company.com\"] }, \"refresh_freq\": 3600, \"prune_freq\": 86400 }" ) HTTP_CODE=$(echo "$RESPONSE" | tail -n1) BODY=$(echo "$RESPONSE" | head -n -1) if [ "$HTTP_CODE" -eq 200 ]; then CONNECTOR_ID=$(echo "$BODY" | jq -r '.id') CONNECTOR_IDS+=("$CONNECTOR_ID") echo "Successfully created connector for project $PROJECT" echo "Connector ID: $CONNECTOR_ID" else echo "Failed to create connector for project $PROJECT" echo "Status: $HTTP_CODE" echo "Error: $BODY" fi done # Step 2: Get credentials echo -e "\nFetching credentials..." CRED_RESPONSE=$(curl -s -w "\n%{http_code}" -X GET "${API_BASE_URL}/manage/admins/credential" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json") CRED_HTTP_CODE=$(echo "$CRED_RESPONSE" | tail -n1) CRED_BODY=$(echo "$CRED_RESPONSE" | head -n -1) if [ "$CRED_HTTP_CODE" -eq 200 ]; then JIRA_CREDENTIAL_ID=$(echo "$CRED_BODY" | jq -r '.[] | select(.source == "jira") | .id' | head -n1) if [ "$JIRA_CREDENTIAL_ID" != "null" ] && [ -n "$JIRA_CREDENTIAL_ID" ]; then echo "Found Jira credential with ID: $JIRA_CREDENTIAL_ID" else echo "No Jira credential found. Please create one in the Admin Panel first." exit 1 fi else echo "Failed to fetch credentials: $CRED_HTTP_CODE" echo "Error: $CRED_BODY" exit 1 fi # Step 3: Associate credentials with connectors echo -e "\nAssociating credentials with connectors..." for CONNECTOR_ID in "${CONNECTOR_IDS[@]}"; do echo "Associating credential with connector: $CONNECTOR_ID" ASSOC_RESPONSE=$(curl -s -w "\n%{http_code}" -X PUT "${API_BASE_URL}/manage/admins/connector/${CONNECTOR_ID}/credential/${JIRA_CREDENTIAL_ID}" \ -H "Authorization: Bearer ${API_KEY}" \ -H "Content-Type: application/json") ASSOC_HTTP_CODE=$(echo "$ASSOC_RESPONSE" | tail -n1) ASSOC_BODY=$(echo "$ASSOC_RESPONSE" | head -n -1) if [ "$ASSOC_HTTP_CODE" -eq 200 ]; then echo "Successfully associated credential with connector $CONNECTOR_ID" else echo "Failed to associate credential with connector $CONNECTOR_ID" echo "Status: $ASSOC_HTTP_CODE" echo "Error: $ASSOC_BODY" fi done echo -e "\nCompleted! Created ${#CONNECTOR_IDS[@]} connectors with IDs: ${CONNECTOR_IDS[*]}" ``` # Create Global Token Limit Settings Source: https://docs.hymalaia.com/api-reference/miscellaneous/create_global_token_limit_settings POST /api/admin/token-rate-limits/global # Delete Token Limit Settings Source: https://docs.hymalaia.com/api-reference/miscellaneous/delete_token_limit_settings DELETE /api/admin/token-rate-limits/rate-limit/{token_rate_limit_id} # Get Global Token Limit Settings Source: https://docs.hymalaia.com/api-reference/miscellaneous/get_global_token_limit_settings GET /api/admin/token-rate-limits/global # Get Backend Version Source: https://docs.hymalaia.com/api-reference/miscellaneous/get_version GET /api/version # Get Latest App Version Tags Source: https://docs.hymalaia.com/api-reference/miscellaneous/get_versions GET /api/versions Fetches the latest stable and beta versions of Hymalaia Docker images. Since DockerHub does not explicitly flag stable and beta images, this endpoint can be used to programmatically check for new images. # Healthcheck Source: https://docs.hymalaia.com/api-reference/miscellaneous/healthcheck GET /api/health # Update Token Limit Settings Source: https://docs.hymalaia.com/api-reference/miscellaneous/update_token_limit_settings PUT /api/admin/token-rate-limits/rate-limit/{token_rate_limit_id} # Overview & Auth Source: https://docs.hymalaia.com/api-reference/overview Overview of Hymalaia APIs **Nearly every Hymalaia feature is accessible through the Hymalaia API.** Hymalaia APIs are built on REST principles with JSON request/response formats. All endpoints require authentication and follow relatively consistent patterns. Make API requests to: `https://your-self-hosted-hymalaia.com/api` Hymalaia follows [SemVer 2.0.0](https://semver.org/). Breaking changes will be indicated by major version increments. ## Authentication To authenticate your requests, generate an API key from the Hymalaia Admin Console. Alternatively, you can create a Personal Access Token from the User Settings page. Personal access tokens authenticate as your user and have access to the same permissions you have in Hymalaia. There are three types of API keys: Can access all endpoints, including those pre-fixed with `admin/`. **Use cases:** * Full system administration * User management operations * Data management and analytics * Complete access to all Hymalaia features **⚠️ Use with caution:** Admin keys have unrestricted access to your Hymalaia instance. Can access the non-admin endpoints like Search, Chat, Agents, and Actions. **Use cases:** * Building chat applications * Implementing search functionality * Creating and managing agents * Running actions and workflows **✅ Recommended:** Most users should use Basic API Keys for application development. Read-only Agent access. Can post messages to Chat endpoints, but cannot read chat history. **Use cases:** * Highly restricted environments * Specific use cases requiring minimal permissions * Testing with limited scope **Coming soon:** User-Scoped Token tied to a specific user's permissions and data access. API Keys exist as distinct users in Hymalaia. This means: * You can trace activity to a specific API Key * Chat sessions generated by API will be private and reusable with that API Key * Agents, Connectors, and Document Sets can be configured to be private to that API Key ## API Reference and Playground In the [API Reference](/developers/api_reference/chat/get_chat_session), we have curated a subset of useful Hymalaia API endpoints. You can experiment with the endpoints on each page or follow one of our [Guides](/developers/guides/chat_guide). You can find all Hymalaia API endpoints in the built-in OpenAPI explorer: `https://your-hymalaia-domain.com/api/docs` The explorer is purely for reference. It is not a fully-featured API client. Ignore the tenant\_id parameter and use your API key as a Bearer token. ## Next Steps Learn the fundamental concepts and terminology for working with Hymalaia APIs Simple example of sending a message programmatically # Create Project Source: https://docs.hymalaia.com/api-reference/projects/create_project POST /api/user/projects/create # Delete Project Source: https://docs.hymalaia.com/api-reference/projects/delete_project DELETE /api/user/projects/{project_id} # Delete User File Source: https://docs.hymalaia.com/api-reference/projects/delete_user_file DELETE /api/user/projects/file/{file_id} Delete a user file belonging to the current user. This will also remove any project associations for the file. # Get Chat Session Project Files Source: https://docs.hymalaia.com/api-reference/projects/get_chat_session_project_files GET /api/user/projects/session/{chat_session_id}/files Return user files for the project linked to the given chat session. If the chat session has no project, returns an empty list. Only returns files owned by the current user and not FAILED. # Get Files In Project Source: https://docs.hymalaia.com/api-reference/projects/get_files_in_project GET /api/user/projects/files/{project_id} # Get Project Source: https://docs.hymalaia.com/api-reference/projects/get_project GET /api/user/projects/{project_id} # Get Project Details Source: https://docs.hymalaia.com/api-reference/projects/get_project_details GET /api/user/projects/{project_id}/details # Get Project Instructions Source: https://docs.hymalaia.com/api-reference/projects/get_project_instructions GET /api/user/projects/{project_id}/instructions # Get Projects Source: https://docs.hymalaia.com/api-reference/projects/get_projects GET /api/user/projects/ # Get User File Source: https://docs.hymalaia.com/api-reference/projects/get_user_file GET /api/user/projects/file/{file_id} Fetch a single user file by ID for the current user. Includes files in any status (including FAILED) to allow status polling. # Get User File Statuses Source: https://docs.hymalaia.com/api-reference/projects/get_user_file_statuses POST /api/user/projects/file/statuses Fetch statuses for a set of user file IDs owned by the current user. Includes files in any status so the client can detect transitions to FAILED. # Link User File To Project Source: https://docs.hymalaia.com/api-reference/projects/link_user_file_to_project POST /api/user/projects/{project_id}/files/{file_id} Link an existing user file to a specific project for the current user. Creates the association in the Project__UserFile join table if it does not exist. Returns the linked user file snapshot. # Unlink User File From Project Source: https://docs.hymalaia.com/api-reference/projects/unlink_user_file_from_project DELETE /api/user/projects/{project_id}/files/{file_id} Unlink an existing user file from a specific project for the current user. Does not delete the underlying file; only removes the association. # Update Project Source: https://docs.hymalaia.com/api-reference/projects/update_project PATCH /api/user/projects/{project_id} # Upload User Files Source: https://docs.hymalaia.com/api-reference/projects/upload_user_files POST /api/user/projects/file/upload # Upsert Project Instructions Source: https://docs.hymalaia.com/api-reference/projects/upsert_project_instructions POST /api/user/projects/{project_id}/instructions Create or update this project's instructions stored on the project itself. # Execute Open Urls Source: https://docs.hymalaia.com/api-reference/search/execute_open_urls POST /api/web-search/open-urls Fetch content for specific URLs using the configured content provider. Intended to complement `/search-lite` when you need content for a subset of URLs. # Execute Web Search Source: https://docs.hymalaia.com/api-reference/search/execute_web_search POST /api/web-search/search Perform a web search and immediately fetch content for the returned URLs. Use this when you want both snippets and page contents from one call. If you want to selectively fetch content (i.e. let the LLM decide which URLs to read), use `/search-lite` and then call `/open-urls` separately. # Execute Web Search Lite Source: https://docs.hymalaia.com/api-reference/search/execute_web_search_lite POST /api/web-search/search-lite Lightweight search-only endpoint. Returns search snippets and URLs without fetching page contents. Pair with `/open-urls` if you need to fetch content later. # Handle Search Request Source: https://docs.hymalaia.com/api-reference/search/handle_search_request POST /api/query/document-search Simple search endpoint, does not create a new message or records in the DB # Activate User Api Source: https://docs.hymalaia.com/api-reference/user_management/activate_user_api PATCH /api/manage/admin/activate-user # Bulk Invite Users Source: https://docs.hymalaia.com/api-reference/user_management/bulk_invite_users PUT /api/manage/admin/users emails are string validated. If any email fails validation, no emails are invited and an exception is raised. # Deactivate User Api Source: https://docs.hymalaia.com/api-reference/user_management/deactivate_user_api PATCH /api/manage/admin/deactivate-user # Delete User Source: https://docs.hymalaia.com/api-reference/user_management/delete_user DELETE /api/manage/admin/delete-user # Get Auth Type Source: https://docs.hymalaia.com/api-reference/user_management/get_auth_type GET /api/auth/type # Get User Role Source: https://docs.hymalaia.com/api-reference/user_management/get_user_role GET /api/get-user-role # List Accepted Users Source: https://docs.hymalaia.com/api-reference/user_management/list_accepted_users GET /api/manage/users/accepted # List All Users Source: https://docs.hymalaia.com/api-reference/user_management/list_all_users GET /api/manage/users # List All Users Basic Info Source: https://docs.hymalaia.com/api-reference/user_management/list_all_users_basic_info GET /api/users # List Invited Users Source: https://docs.hymalaia.com/api-reference/user_management/list_invited_users GET /api/manage/users/invited # Remove Invited User Source: https://docs.hymalaia.com/api-reference/user_management/remove_invited_user PATCH /api/manage/admin/remove-invited-user # Set User Role Source: https://docs.hymalaia.com/api-reference/user_management/set_user_role PATCH /api/manage/set-user-role # Verify User Logged In Source: https://docs.hymalaia.com/api-reference/user_management/verify_user_logged_in GET /api/me # Basic Auth Setup Source: https://docs.hymalaia.com/auth/basic-auth-setup How to set up Hymalaia with username/password authentication ## Basic Auth Setup This guide explains how to set up Hymalaia with basic username/password authentication. While this is the easiest way to get started, we **recommend using Google OAuth, OIDC, or SAML** for production environments. If you’re unsure which auth approach fits best for your organization, feel free to [reach out to us](mailto:support@hymalaia.com) — we’re happy to help. *** ## 🛠️ Environment Variables To enable basic authentication, set the following in your `.env` file: ``` AUTH_TYPE=basic ``` Once you've updated your environment and restarted Hymalaia, you should see a **Sign Up** screen when you visit the app. > ✅ If you don’t want to require email verification, that’s all you need to do! *** ## 📧 Email Verification (Optional) To require users to verify their email before accessing Hymalaia, add these additional values to your `.env`: ``` AUTH_TYPE=basic REQUIRE_EMAIL_VERIFICATION=true SMTP_USER=noreply@hymalaia.app SMTP_PASS= # Only needed if not using a Google-powered email account SMTP_SERVER= SMTP_PORT=587 ``` Once configured, Hymalaia will send a verification email with a **"link to verify"** to each new user. They won’t be able to use Hymalaia until their email is verified. > If you're using a Gmail-powered account, you’ll need to enable access for less secure apps or configure an [App Password](https://support.google.com/accounts/answer/185833). *** ## 🧪 What You'll See After setting this up and restarting Hymalaia, you’ll be greeted with the following screen: ![Signup Screen](https://docs.hymalaia.com/basic_auth_signup_screen.png) *** Need help? [Check the full guide here](https://docs.hymalaia.com/basic_auth) # Google OAuth Setup Source: https://docs.hymalaia.com/auth/google-oauth-setup How to set up user login via Google OAuth in Hymalaia ## Setting up the Google Cloud App Create a Google project: [Google Cloud Console](https://console.cloud.google.com/projectcreate) ## Enabling the People API Enable the [Google People API](https://console.cloud.google.com/apis/library/people.googleapis.com). Make sure the correct project is selected. ## Setting up the OAuth Consent Screen 1. Go to **APIs & Services** in the left sidebar. 2. Select **OAuth Consent Screen**. **Choose user type:** * Choose **Internal** if your organization uses Google Workspace. * Otherwise, choose **External**. On the next page: * **App name:** `Hymalaia` (or any name you prefer) * **User support email:** Your email (or `support@hymalaia.com`) * **App logo:** Optional (use the Hymalaia logo or leave blank) * **Developer contact information:** Your email (or `support@hymalaia.com`) Leave optional fields blank and click **SAVE AND CONTINUE**. Skip Scopes and Test users sections. ## Setting up Credentials 1. Go to **Credentials** in the sidebar. 2. Click **+ CREATE CREDENTIALS** → **OAuth client ID**. 3. Select **Web application** and name it `Hymalaia`. 4. Set **Authorized JavaScript origins**: ```txt theme={null} http://localhost:3000 https:// // e.g. https://www.hymalaia.com ``` 5. Set **Authorized redirect URIs**: ```txt theme={null} http://localhost:3000/auth/oauth/callback https:///auth/oauth/callback ``` Click **CREATE** and save the **Client ID** and **Client Secret**. ## Turning on OAuth in Hymalaia OAuth is enabled using the following environment variables: ```env theme={null} AUTH_TYPE=google_oauth OAUTH_CLIENT_ID= OAUTH_CLIENT_SECRET= ``` If in production, also set: ```env theme={null} WEB_DOMAIN=https:// ``` ### Non-Containerized Setup Set the above environment variables when running Hymalaia processes. * Backend API uses the variables. * Frontend queries the API to determine the auth setting. ### Docker Compose Create a `.env` file in `hymalaia/deployment/docker_compose/` with the variables: ```env theme={null} AUTH_TYPE=google_oauth OAUTH_CLIENT_ID= OAUTH_CLIENT_SECRET= WEB_DOMAIN=https:// ``` ### Kubernetes Kubernetes assumes OAuth is required in production. Replace the `REPLACE-THIS` placeholders in your `secrets.yaml` file with the **base64-encoded** client ID and client secret. ```yaml theme={null} apiVersion: v1 kind: Secret metadata: name: hymalaia-oauth-secret namespace: hymalaia stringData: OAUTH_CLIENT_ID: OAUTH_CLIENT_SECRET: ``` # OIDC/SAML Setup Source: https://docs.hymalaia.com/auth/oidc-saml-setup Integrating Hymalaia with your IdP ## Integrating Hymalaia with Your IdP As part of the **Enterprise Edition**, Hymalaia adds support for OIDC/SAML and integrates with popular IdPs such as Okta, Microsoft Entra ID, and more. We also support custom integrations with in-house IdPs on request. If you're looking to set this up, feel free to reach out to us directly. We’d be happy to assist you in configuring this integration. # Airtable Connector Source: https://docs.hymalaia.com/connectors/airtable Access tables from Airtable ## How it works The Airtable connector pulls in tables from **Airtable**.\ It indexes: * The **table name** * The **table type** * The **contents** of the table Table updates are pulled in every **24 hours by default**. ## Setup ### Get your Airtable PAT To get your token, follow the instructions [here](https://airtable.com/developers/web/api/personal-access-tokens). ## Indexing 1. In the **Hymalaia UI**, navigate to the **Admin Dashboard** and select the **Airtable Connector**. 2. Create a new credential and **paste your Airtable PAT**. 3. Fill out the form with the **base ID** and **table ID**. You can find these in the URL when viewing the table in Airtable.\ For example, if the URL is: `https://airtable.com/appCXJqDFS4gea8tn/tblRxFQsTlBBZdRY1/viwVUEJjWPd8XYjh8`, then the base ID is `appCXJqDFS4gea8tn` and the table ID is `tblRxFQsTlBBZdRY1`. # Asana Connector Source: https://docs.hymalaia.com/connectors/asana-connector Index tasks and comments from Asana projects ## How it works The Asana connector pulls in tasks and their associated comments from specified projects or all projects in a workspace. ## Setting up ### Authorization Create an Asana Personal Access Token: * Log in to your Asana account and go to [https://app.asana.com/0/my-apps](https://app.asana.com/0/my-apps) * Click “Create New Personal Access Token” * Give it a name (e.g., Hymalaia Integration”) and create the token * Copy the token - you’ll need to provide this to Hymalaia ### Indexing Navigate to the Admin Dashboard and select the Asana Connector Provide the following information: * **Asana API Token**: Paste the Personal Access Token you created earlier * **Workspace ID**: Enter your Asana workspace ID. You can find this at [https://app.asana.com/api/1.0/workspaces](https://app.asana.com/api/1.0/workspaces). It’s a number that looks like `1234567890123456`. * **Project IDs (optional)**: If you want to index specific projects, enter their IDs separated by commas. Leave this empty to index all projects in the workspace.\ Example: `1234567890123456,2345678901234567`.\ You can find a project ID by clicking on a project in Asana. In the URL, it will look like:\ `https://app.asana.com/0/1208338159336610/1208338159510597`, where `1208338159336610` is the project ID. * **Team ID (optional)**: If you want to index team-visible tasks in addition to public tasks, enter a team ID. Leave this empty if you don’t need this feature. Click “Connect” to start the indexing process > **Note**: The connector will respect the permissions of the user associated with the provided API token. Ensure that this user has access to all the projects you want to index. # Axero Connector Source: https://docs.hymalaia.com/connectors/axero-connector Index articles, blogs, wikis, and forums from Axero (Communifire) via the REST API ## How it works The Axero connector uses your site’s **REST API** to pull **articles**, **blogs**, **wikis**, and **forums** (threaded as parent post plus replies). Content is taken from summaries/bodies where the API provides them, with links to the live Axero URLs. The connector default schedule is **once per day** (`overrideDefaultFreq` in product config). ## Setting up ### Authorization Create a credential with: * **Axero Base URL** — the root URL of your Axero / Communifire site, including trailing path style your deployment uses (the product normalizes so the API base ends with `/`; e.g. `https://yourcompany.axerosolutions.com/`) * **Axero API Token** — your **Rest-Api-Key** from Axero (REST API authentication header). See your Axero admin / [REST API documentation](https://my.axerosolutions.com/spaces/5/communifire-documentation/wiki/view/370/rest-api) for generating keys and required permissions. ### Indexing In the Hymalaia Admin Panel, open the **Axero** connector. In **Step 1**, set up credentials: * Select an existing credential, or click **Create New** * Enter **Axero Base URL** and **Axero API Token** Click **Create** to save the credential configuration. Ensure the correct credential is selected, then click **Continue**. In **Step 2**, specify: * **Connector Name** — a display name (e.g. `Axero – Intranet`) * **Spaces** — optional list of **Space IDs** to limit indexing; leave empty to index **all** spaces * **Access Type** — **Public** or **Private** in Hymalaia Click **Create Connector** to start indexing. Use Space IDs exactly as shown in Axero when restricting by space. # Bitbucket Connector Source: https://docs.hymalaia.com/connectors/bitbucket-connector Access knowledge from your Bitbucket Repositories (Cloud only) ## How it works The Bitbucket Connector indexes all Pull Requests from a specified Bitbucket Cloud repository, project, or entire workspace. It indexes **OPEN**, **MERGED**, and **DECLINED** pull requests, including their titles and descriptions. It also captures key metadata such as the author, reviewers, current state, creation/update timestamps, and a direct link back to the original pull request in Bitbucket. ## Setting up This connector can only be used with **Bitbucket Cloud**. ### Authorization The Bitbucket Connector uses an **API Token** for authentication. To create an API token: 1. **Log in to Bitbucket**\ Log in to your Bitbucket account. 2. **Open account settings**\ Select the Settings cog in the upper-right corner of the top navigation bar. 3. **Access Atlassian account settings**\ Under Personal settings, select **Atlassian account settings**. 4. **Go to the Security tab**\ Select the **Security** tab on the top navigation bar. 5. **Manage API tokens**\ Select **Create and manage API tokens**. 6. **Create a scoped token**\ Select **Create API token with scopes**. 7. **Name the token**\ Give the API token a name and an expiry date, usually related to the application that will use the token and select **Next**. 8. **Choose Bitbucket**\ Select **Bitbucket** as the app and select **Next**. 9. **Select scopes**\ Select the scopes (permissions) the API token needs and select **Next**. * **Projects**: `read:project:bitbucket` * **Repositories**: `read:repository:bitbucket` * **Pull Requests**: `read:pullrequest:bitbucket` 10. **Create the token**\ Review your token and select the **Create token** button. The page will display the new API token. 11. **Save the token**\ Copy the generated API token and either record or paste it into the application you want to give access. The token is only displayed once and can't be retrieved later. For the most up-to-date instructions, refer to the [official Bitbucket documentation](https://support.atlassian.com/bitbucket-cloud/docs/create-an-api-token/). ### Indexing 1. **Open the Bitbucket connector**\ Navigate to the **Admin Dashboard** and select the **Bitbucket Connector**. 2. **Create credentials**\ Click **Create new credentials** and provide the following: * **Name**: A descriptive name for your credentials. * **Email**: The email address for your Bitbucket account. * **API token**: The API token you created in the previous step. Bitbucket Credentials 3. **Configure connector details**\ Fill in the connector details: * **Name**: A descriptive name for the connector. * **Workspace name**: The `WORKSPACE_NAME` from your Bitbucket URL (`https://bitbucket.org/{WORKSPACE_NAME}/...`). * **Repositories or Projects** (Optional): A comma-separated list of repository slugs or project keys to index. Bitbucket Creation This configuration will index all pull requests from the specified repositories. You can also configure it to index all repositories within a project or an entire workspace. # BookStack Connector Source: https://docs.hymalaia.com/connectors/bookStack-connector Access knowledge from your own BookStack instance ## How it works The BookStack connector fetches all shelves, books, chapters and pages from the connected instance upon connector setup. From that point on, the connector will pull in everything updated since last sync every 10 minutes. ## Setting up ### Authorization You will need API credentials for a user in your BookStack instance. To do this: * Find or create a user you’d want to use as the connection user. > Visibility of BookStack contents will depend on this user’s permissions. * This user must have a role assigned that has the “Access system API” system permission. * Edit that user using an admin account, and find the “API Tokens” section at the bottom of the view. * Click the “Create Token” button, then enter a name and (optionally) an expiry date for the token. Then press save. * Copy the shown “Token ID” and “Token Secret” values for the **Indexing** section below. ### Indexing * Navigate to the Admin Dashboard and select the BookStack connector. * In Step 1, provide the **base URL** of your BookStack instance, along with the **API Token ID** and the **API Token Secret** you obtained in the “Authorization” steps above: * Click the **Connect** button! Your content will then be pulled into Hymalaia every 10 minutes. # ClickUp Connector Source: https://docs.hymalaia.com/connectors/clickUp-connector Access tasks from ClickUp ## How it works The ClickUp connector will pull in all tasks from the ClickUp workspace, or specific space(s), list(s), folder(s) specified by the user. Tasks are updated every 10 minutes. ## Understanding ClickUp Hierarchy In ClickUp, there are multiple containers which contain task(s). These could be: * Entire Workspace * Spaces * Folders * Lists Detailed information on the hierarchy of the above-mentioned objects is available [here](https://help.clickup.com/hc/en-us/articles/13856392825367-Intro-to-the-Hierarchy): ## Setting up ### Authorization 1. Log into [ClickUp](https://clickup.com). 2. In **ClickUp 2.0**, click your avatar in the lower-left corner and select **Apps**.\ In **ClickUp 3.0**, click your avatar in the upper-right corner, select **Settings**, and scroll down to click **Apps** in the sidebar. 3. Under **API Token**, click **Generate**. 4. A personal API token will be generated and displayed. ### Indexing 1. Navigate to the Admin Dashboard and select the **ClickUp Connector**. 2. In Step 1, provide your **API Token** and the **Team ID**. 3. Select the type of connector you want to pull tasks from.\ **Notes**: * This could be **Entire Workspace**, **Space(s)**, **Folder(s)**, or **List(s)**. * To pull tasks from the entire workspace, just select **Entire Workspace** from the dropdown and do not add any ID(s). * To pull tasks from specific **Space(s)**, **Folder(s)**, or **List(s)**, select the respective option from the dropdown and add the ID(s) below. At least one ID needs to be added in this case. * The space ID(s), folder ID(s), and list ID(s) can be found in the web URL in ClickUp.\ For example, if you open a list in ClickUp, you will see the list ID in the address bar: 4. If any of the **Space(s)**, **List(s)**, or **Folder(s)** connector types is selected, add one or more respective IDs to index the tasks from. 5. Check **Retrieve Task Comments?** if you also want to retrieve and index all comments for each indexed task. Leave this unchecked if you don’t want to index task comments. 6. Click **Connect** to begin indexing. # Coda Connector Source: https://docs.hymalaia.com/connectors/coda-connector Index Coda docs, pages, and tables via the Coda REST API ## How it works The Coda connector uses the [Coda REST API](https://coda.io/developers/apis/v1) to index content your API token can access. For each Coda doc it discovers **pages** (title, link, and page body when available) and **tables** (each table is one document; **rows** become sections with cell values). Updates are picked up on the connector’s scheduled runs (typically **daily**, like other connectors). ## Setting up ### Authorization Hymalaia uses a **Coda API bearer token**. Create a token in Coda with access to the docs you want indexed (see [Coda’s API documentation](https://coda.io/developers) for creating and scoping tokens). ### Indexing In the Hymalaia Admin Panel, open the **Coda** connector. In **Step 1**, set up credentials: * Select an existing credential, or click **Create New** * Paste your **Coda Bearer Token** Click **Create** to save the credential configuration. Ensure the correct credential is selected, then click **Continue**. In **Step 2**, set: * **Connector Name** — a display name (e.g. `Team wiki`) * **Access Type** — **Public** or **Private** in Hymalaia Click **Create Connector** to start indexing. Indexing covers all docs the token can list; restrict access in Coda by using a token with limited doc/workspace access if needed. # Confluence Connector Source: https://docs.hymalaia.com/connectors/confluence-connector Access knowledge from your company Wiki ## How it works The Confluence connector pulls in all pages and comments from the specified spaces/pages once at the beginning and then pulls updates every 10 minutes. ## Setting up ### Authorization Follow the guide described [here](https://developer.atlassian.com/cloud/confluence/basic-auth-for-rest-apis/) to get an access token. ### Indexing 1. Navigate to the **Admin Dashboard** and select the **Confluence Connector**. 2. For your credentials, provide the following: * **Access Token** * **Username** (typically an email address) 3. For Confluence setup, provide: * **Wiki Base URL**: The base URL of your Confluence instance (e.g., `https://your-domain.atlassian.net/wiki`) * **Is Cloud**: Check this box if using **Confluence Cloud**, uncheck if using **Confluence Server/Data Center** 4. Then choose how you’d like this connector to index your Confluence instance: #### Everything * Indexes all content the provided credentials have access to. #### Space * Input the **key** of the space to index (e.g., `KB`). #### Page * **Page ID**: ID of the specific page to index (e.g., `131368`).\ Leave empty to index the entire space. * **Index Recursively**: Check to index the specified page **and** all of its children. #### CQL Query * If you want finer control over what is indexed, use a **CQL query**. * Your query must contain `type=page`.\ Note: Any `lastmodified` filters will be overwritten.\ [Learn more about CQL](https://developer.atlassian.com/cloud/confluence/advanced-searching-using-cql/) 5. Click the **Connect** button!\ All the specified spaces/pages and their comments will now be pulled into Hymalaia every 10 minutes. ## Permission Syncing If you are an **enterprise customer** connecting to **Confluence Server/Data Center** and you want to enable **permission syncing**, the provided credentials must belong to an **admin user**. # Databricks Connector Source: https://docs.hymalaia.com/connectors/databricks-connector Index Databricks Unity Catalog (or Hive) table metadata in Hymalaia ## How it works The Databricks connector indexes **table metadata** for a given Unity Catalog (or Hive) **database** and **schema**: it reads column types from `information_schema` and builds a synthetic **DDL** document per table (including primary/foreign key metadata when available). It does **not** index row-level table data. Tables whose metadata has changed (based on `last_altered` in `information_schema.tables`) are picked up on incremental runs. Like other connectors, indexing typically runs on a **daily** schedule. ## Setting up ### Authorization Databricks uses a **SQL warehouse** connection over HTTP, with a **personal access token** (PAT). Create a credential with: * **Server hostname** — the hostname from your warehouse’s JDBC/ODBC connection details (e.g. `adb-1234567890.4.azuredatabricks.net`), without `https://` * **HTTP path** — the warehouse **HTTP Path** from the same connection dialog (starts with `/sql/1.0/warehouses/...`) * **Access token** — a Databricks PAT for a user that can run metadata queries on the target catalog/database/schema Create or rotate tokens under **User settings → Developer → Access tokens** in the Databricks workspace. The SQL warehouse must be running or auto-resume when the connector runs. ### Indexing In the Hymalaia Admin Panel, open the **Databricks** connector. In **Step 1**, set up credentials: * Select an existing Databricks credential, or click **Create New** * Enter **Server hostname**, **HTTP path**, and **Access token** Click **Create** (or equivalent) to save the credential configuration. Ensure the correct credential is selected, then click **Continue**. In **Step 2**, specify: * **Connector Name** — a display name for this connector (e.g. `Lakehouse prod`) * **Database** — the Databricks **catalog.database** name as used in SQL (the first level is often your catalog; use the value that matches `information_schema` for your environment) * **Schema** — the schema name within that database * **Access Type** — whether indexed content is **Public** or **Private** in Hymalaia Click **Create Connector** to start indexing. The connector will index table DDL for the configured database and schema. Repeat for other databases/schemas if needed. For connection details and tokens, see [Databricks SQL warehouses](https://docs.databricks.com/sql/admin/sql-endpoints.html) and [personal access tokens](https://docs.databricks.com/dev-tools/auth.html#personal-access-tokens-for-workspace-users). # Discord Connector Source: https://docs.hymalaia.com/connectors/discord-connector Access knowledge from your Discord Messages ## How it works The Discord connector indexes **all channels** for **all servers (guilds)** mentioned. *** ## Setting up a Bot User ### 1. Create the Application * Go to [Discord Developer Portal](https://discord.com/developers/applications) * Click **"New Application"** * Name your application and click **"Create"** ### 2. Configure the Bot * Go to the **"Bot"** tab * Enable **"Public Bot"** (optional, allows others to invite it) * Enable **"MESSAGE CONTENT INTENT"** under Privileged Gateway Intents * Click **"Copy"** to save the Bot Token > 🔁 If lost, you can **Reset Token** *** ## Inviting the Bot to Server(s) 1. Go to your application at [Discord Developer Portal](https://discord.com/developers/applications) 2. Navigate to the **"Installation"** tab 3. Enable **Guild Install** under Installation Contexts 4. Under **Scopes**, add: * `bot` 5. Under **Permissions**, enable: * `Manage Messages` * `Read Message History` * `View Channels` 6. Use the **Discord-generated link** to invite the bot to your server > Make sure you have **"Manage Server"** permission 7. Open the invite link in your browser and add the bot to your server(s) *** ## Indexing 1. Navigate to the **Connector Dashboard** 2. Select the **Discord Connector** 3. Under **Credentials**, enter the **Bot Token** (from setup step 2) 4. Provide the **Server IDs** > To get a server ID:\ > Right-click the server name (top-left) → **Copy Server ID** 5. Provide **Channel Names** (optional) > To get a channel name:\ > Click ⚙️ next to the channel → Overview section 6. (Optional) Set a **Start Date** (`YYYY-MM-DD`) to index messages after this date Once configured, the connector will index all messages from the specified channels and servers where the bot is present. # Discourse Connector Source: https://docs.hymalaia.com/connectors/discourse-connector Access knowledge from your Discourse Topics ## How it works The Discourse connector indexes documents from your Discourse Topics. ## Setting up ### Authorization 1. Log into your **Discourse** account. 2. Ensure the user has **admin privileges**. 3. Go to the **Admin** menu from the homepage. 4. Open the **Advanced** submenu and select **API keys**. #### Create API Key: * Click **New API Key** * Name it `Hymalaia` * Set **User Level** to `All Users` * Set **Scope** to `Read-only` * Click **Save** 5. Copy the generated **API Key**. 6. Use the **username** of the Discourse account for the **API Key Username** in Hymalaia. ### Indexing 1. Enter a **name** for the connector (useful if managing multiple Discourse connectors). 2. Provide your **Discourse base URL** (e.g., `https://community.yourdomain.com`). 3. Enter the **Topics** you want to index: * Leave blank to index **all available topics** 4. Click **Connect** to begin indexing. The connector will now index the selected topics and sync any updates. # Document360 Connector Source: https://docs.hymalaia.com/connectors/document360-connector Access wiki articles from Document360 ## How it works The Document360 connector will pull in all the articles based on the specified workspace and categories. * Articles can be saved in **HTML** or **Markdown** format in Document360. * **Only HTML** format is currently supported. * Articles are updated **every 10 minutes**. > ⚠️ If you need Markdown support, please submit an issue [here](#). ## Setting up ### Authorization 1. Navigate to:\ **Settings > Knowledge base portal > API tokens** 2. Click **Generate** 3. Enter a **Token name** 4. Select the **Request methods** allowed for the API key 5. Click **Generate** 6. Your **Portal ID** and **API Key** will be displayed ### Indexing 1. Go to the **Admin Dashboard** 2. Select the **Document360 Connector** 3. In **Step 1**, provide: * **Portal ID** * **API Key** 4. Enter the **Workspace ID** 5. Choose **Categories** to index: * Leave empty to include **all categories** 6. Click **Connect** to begin indexing The connector will now pull articles from Document360 and sync updates every 10 minutes. # Dropbox Connector Source: https://docs.hymalaia.com/connectors/dropbox-connector Access knowledge from Dropbox ## How it works The Dropbox connector ingests all documents from your Dropbox account into Hymalaia. The connector recursively pulls all files from the root directory of your Dropbox account. It is currently not possible to pull files only from specific directories. The connector will only pull once upon initialization. If you would like to pull more documents, you must generate a new access token (step 6 below), put that token into the connector, and re-initialize the connector. ## Setting up ### Authorization Head over to [https://www.dropbox.com/developers/apps](https://www.dropbox.com/developers/apps) and click the `Create app` button on the top right. Select `Scoped access` and `Full Dropbox` as the type of access. Give your app a name like 'Hymalaia Connector' and click `Create app`. DropboxStep1 Click on the `Permissions` tab. DropboxStep2 Check the `files.content.read` and `sharing.write` permissions so the files can be read and links for the documents can be created. Click `Submit` to save the changes. DropboxStep3 Navigate to the `Settings` tab and scroll down to the `OAuth 2` section. Click `Generate` to generate an access token. You must complete granting permissions before generating an access token. Changing permissions will not affect existing access tokens, and Hymalaia will be unable to index your Dropbox. DropboxStep4 Copy the access token. Refresh the page if you need to regenerate your access token DropboxStep5 ### Indexing In the Hymalaia UI, navigate to the Admin Panel and select the **Dropbox** Connector Provide the access token from the previous step Click `Connect` to begin indexing your Dropbox files # Drupal Wiki Connector Source: https://docs.hymalaia.com/connectors/drupal_wiki-connector Access knowledge from your Drupal Wiki instance ## How it works The Drupal Wiki connector indexes content from your Drupal Wiki instance including spaces, pages, and optionally attachments. The connector fetches all accessible content upon initial setup and then performs incremental updates to keep your knowledge base synchronized. The connector respects the permissions of the provided API token, indexing only content that the token has access to, whether public or private. ## Setting up ### Authorization You will need an API access token for your Drupal Wiki instance. The token must start with `pat:` (Personal Access Token). Navigate to your Drupal Wiki instance Follow the documentation to generate an access token: [https://help.drupal-wiki.com/node/605#2-Zugriffs-Token-generieren](https://help.drupal-wiki.com/node/605#2-Zugriffs-Token-generieren) Ensure the REST API interface is available in your Drupal instance Copy the generated API token (it should start with `pat:`) The API token determines which content will be accessible to Hymalaia. Only content that the token user has permission to access will be indexed. ### Indexing Navigate to the Admin Dashboard and select the **Drupal Wiki** connector In **Step 1**, provide your Drupal Wiki configuration: * **API Token**: The access token you generated (starting with `pat:`) In **Step 2**, choose your indexing scope: * **Base URL**: The base URL of your Drupal Wiki instance (e.g., `https://help.drupal-wiki.com`) * **All Content**: Index all spaces and pages accessible to your API token * **Specific Spaces**: Enter specific Space IDs to index only certain areas * To find Space IDs, refer to: [https://help.drupal-wiki.com/node/606](https://help.drupal-wiki.com/node/606) * **Specific Pages**: Enter specific Page (Node) IDs to index only certain pages Configure additional options: * **Include Attachments**: Check this to also index file attachments (PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, HTML, MD, CSV) Click the `Connect` button! Your Drupal Wiki content will be indexed and kept up to date with incremental synchronization. Hymalaia Drupal Wiki configuration ## Supported Content Types The Drupal Wiki connector indexes the following content: * **Spaces**: Organizational units within your Drupal Wiki * **Pages**: Individual wiki pages with HTML content (converted to plain text) * **Attachments** (optional): Various document formats up to 10MB ## Technical Details * **API Usage**: Uses Drupal Wiki's REST API endpoints * **Synchronization**: Supports incremental updates for efficient syncing * **Content Limits**: 10MB for attachments, 600,000 characters for text content * **Deployment Support**: Works with both self-hosted and cloud-hosted Drupal Wiki instances ## Permission Syncing The connector automatically respects your Drupal Wiki's permission system. Content access is determined by the API token's permissions, ensuring that only authorized content is indexed and searchable within Hymalaia. # Egnyte Connector Source: https://docs.hymalaia.com/connectors/egnyte-connector Access files stored in Egnyte ## How it works The Egnyte connector pulls in files stored in Egnyte. The connector indexes: * **File name** * **File type** * **File contents** New files are automatically pulled every **10 minutes**. ## Setting up ### Egnyte Application + Hymalaia Environment Variables > 🛠️ This step is only required if you’re **self-hosting Hymalaia**. If you’re using **Hymalaia Cloud**, you can skip this section. 1. Create an Egnyte Application * Refer to the [Egnyte API documentation](https://developers.egnyte.com/docs) for more information. 2. Set the following environment variables in your Hymalaia instance: ```bash theme={null} EGNYTE_DOMAIN=your_egnyte_subdomain # e.g., "app4hymalaia" EGNYTE_CLIENT_ID=your_client_id EGNYTE_CLIENT_SECRET=your_client_secret ``` 3. Restart your Hymalaia instance to apply the environment variables. ### Indexing 1. In the Hymalaia UI, go to the Admin Dashboard 2. Select the Egnyte Connector 3. Click Create New to begin the OAuth flow 4. Once authorized, you'll be redirected back to Hymalaia 5. Optionally, specify a folder path to index 6. Click Connect to start indexing your Egnyte files # File Connector Source: https://docs.hymalaia.com/connectors/file-connector Access knowledge from Local Files ## How it works The File Connector indexes user-uploaded files for retrieval and AI-powered answers. * Supports: `.txt`, `.pdf`, `.docx`, `.pptx`, `.xlsx`, `.csv`, `.md`, `.mdx`, `.conf`, `.log`, `.json`, `.tsv`, `.xml`, `.yml`, `.yaml`, `.eml`, `.epub` * You can also upload a `.zip` containing the supported file types * Unsupported file types inside the zip will be ignored * Optionally, you can add a metadata line to enhance searchability ## Adding Metadata Add a metadata line at the very **top** of your file. Supported formats: ``` #HYMALAIA_METADATA={"link": ""} ``` This line must contain valid JSON. Available keys: * `link` * `primary_owners` * `secondary_owners` * `doc_updated_at` * `file_display_name` * Any custom `key: value` pairs (used as searchable tags in the UI) ### Example ```txt theme={null} #HYMALAIA_METADATA={ "link": "https://github.com/hymalaia-dot-app/hymalaia/blob/main/CONTRIBUTING.md", "primary_owners": ["support@hymalaia.com"], "secondary_owners": ["founders@hymalaia.com"], "doc_updated_at": "2023-11-30T13:06:08.589616-08:00", "file_display_name": "Desired File Name!", "status": "draft" } ``` ### Full file example ```txt theme={null} #HYMALAIA_METADATA={"link": "https://www.hymalaia.com/captcha", "file_display_name": "Captcha Setup"} How to set up captcha Follow the example below to set up a captcha like you saw when you visited this page! By including a captcha, this page is able to prevent web scrapers from reading it. ``` ### Zip Upload + Metadata When uploading a `.zip`, you can include a `.hymalaia_metadata.json` at the root of the archive: ``` | file1.txt | file2.txt | .hymalaia_metadata.json ``` Example `.hymalaia_metadata.json`: ```json theme={null} [ { "filename": "file1.txt", "link": "https://example.com/file1", "file_display_name": "File 1", "primary_owners": ["owner1@example.com"], "status": "in-review" }, { "filename": "file2.txt", "link": "https://example.com/file2", "file_display_name": "File 2", "primary_owners": ["owner2@example.com"], "status": "approved" } ] ``` ## Setting up ### Authorization * No external authentication is required. * Admins can upload files and make them available to everyone. * *(WIP)* Users will soon be able to upload personal files and keep them private. ### Indexing 1. In the **Hymalaia Admin Dashboard**, go to the **File Connector** 2. Upload a supported file or a `.zip` archive # Fireflies Connector Source: https://docs.hymalaia.com/connectors/fireflies-connector Access knowledge from your Fireflies meetings ## How it works The Fireflies connector allows Hymalaia to index and retrieve knowledge from your Fireflies meetings automatically. ## Setting up ### Authorization 1. Log in to your [Fireflies](https://fireflies.ai/) account. 2. Click on your profile avatar and select **Settings** (or click **Settings** from the sidebar). 3. Go to **Developer Settings**. 4. Copy your **API Key**. > ℹ️ **Note**: The Fireflies user must be an authorized user to access the API. Once you have your API key, you can use it to authorize the Fireflies connector in Hymalaia. ### Indexing 1. Navigate to the **Admin Dashboard** in Hymalaia. 2. In the sidebar, select **Add Connector** and click on the **Fireflies** tile. 3. Click **Create New**, then enter: * Your **API Key** * *(Optional)* A name for the credentials 4. Click **Create** — your credentials will be saved and automatically selected. 5. Click **Continue** to: * Choose a name for your connector * Set **document access** * Assign **groups** (optional) 6. Click **Create Connector** ✅ Hymalaia will automatically begin indexing your Fireflies meetings. # Freshdesk Connector Source: https://docs.hymalaia.com/connectors/freshdesk-connector Access knowledge from your Freshdesk Tickets ## How it works The Freshdesk connector indexes tickets from your Freshdesk account. ## Setting up ### Authorization 1. Log in to your [Freshdesk](https://freshdesk.com) account. 2. The Freshdesk user must be a verified **agent**, **admin**, or **owner**. 3. Click your **profile avatar** and choose **Profile Settings**. 4. Select **View API Key** and copy the key. > ℹ️ **Note**: You will need your **domain**, **API key**, and **password** to authorize your Freshdesk connector in Hymalaia. ### Indexing 1. In the **Hymalaia Admin Dashboard**, click **Add Connector**. 2. Select the **Freshdesk** tile. 3. Click **Create New**. 4. Provide your: * **Domain** (e.g. `yourcompany.freshdesk.com`) * **Password** * **API Key** * Optional: A name for your credentials. 5. Click **Create** to save your credentials. 6. After clicking **Continue**, enter a **name** for your connector. 7. Click **Create Connector**. Hymalaia will automatically begin indexing your Freshdesk tickets. # GitBook Connector Source: https://docs.hymalaia.com/connectors/gitBook-connector Access documentation from GitBook ## How it works The **GitBook Connector** pulls in all documentation content from your specified **GitBook spaces** to make them searchable and accessible within Hymalaia. ## Setting up ### Authorization 1. Go to your [GitBook Developer Settings](https://app.gitbook.com/account/developer) 2. Click **Create new token** 3. Provide a name and select the appropriate **scopes** 4. Click **Create** to generate the token 5. **Copy and save the token securely** — you won’t be able to see it again > 🛡️ This token is required to access and sync GitBook content with Hymalaia. ### Indexing 1. In the **Hymalaia Admin Dashboard**, select **Add Connector** and click the **GitBook** tile 2. Paste your **API Token** 3. Enter your **Space ID** > The Space ID is found in your GitBook space URL:\ > `https://app.gitbook.com/o//s/` 4. Click **Connect** Your GitBook documentation will now begin syncing with Hymalaia. # GitHub Connector Source: https://docs.hymalaia.com/connectors/gitHub-connector Access knowledge from your GitHub Repositories ## How it works The GitHub Connector indexes **Pull Requests** and **Issues** from your specified repositories. It will: * Index **both Open and Closed PRs**, including the **Title** and **Summary** * Index **both Open and Closed Issues**, along with their **comments** * Include metadata such as: * **URL** * **Creator** * And more ## Setting up ### Authorization This connector uses a **GitHub Access Token**. Follow these steps: 1. Log in to [GitHub](https://github.com). 2. In the upper-right corner, click your **profile avatar** and select **Settings**. 3. Scroll down to **Developer settings** → **Personal access tokens** → **Tokens (classic)**. 4. Click **Generate new token**. 5. **Grant `repo` access** so the token can access PRs and Issues. 6. Set an **expiration time**. > ⚠️ Once the token expires, you must generate a new one and update it in Hymalaia to keep indexing up-to-date. ### Indexing 1. Go to the **Admin Dashboard**. 2. Select **Add Connector** and click on the **GitHub** tile. 3. Provide: * The **GitHub Access Token** * The repository URL (e.g., `https://github.com/hymalaia-dot-app/hymalaia`) * An optional name for your credentials 4. Click **Create Connector**. Hymalaia will automatically begin indexing your GitHub repository. > Example repo: `https://github.com/hymalaia-dot-app/hymalaia` # GitLab Connector Source: https://docs.hymalaia.com/connectors/gitLab-connector Access knowledge from your GitLab repositories ## How it works The GitLab Connector indexes **Merge Requests** and **Issues** from your GitLab repository. It will: * Index **Open and Closed Merge Requests**, including **Title** and **Summary** * Index **Issues** (and **Incidents**) with their **comments**, both **Open and Closed** * Include metadata such as: * **URL** * **Creator** * And more ## Setting up ### Authorization This connector uses a **GitLab Access Token**. To generate the token: 1. Log in to [GitLab](https://gitlab.com) 2. In the left sidebar, click your **avatar** 3. Select **Edit profile** 4. Go to **Access Tokens** and click **Add new token** 5. Enter: * A **name** for the token * An **expiry date** > If not set manually, GitLab will default to **365 days from the current date** 6. Select the **desired scopes** > See [GitLab documentation](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html) for more details 7. Click **Create personal access token** > ⚠️ Keep the token somewhere safe. Once it’s created, GitLab will not show it again. ### Indexing 1. Go to the **Admin Dashboard** 2. Select **Add Connector** and click on the **GitLab** tile 3. If you are **not self-hosting**, keep the **GitLab URL as default** 4. Provide: * Your **GitLab Personal Access Token** * The **GitLab repository URL** (e.g., `https://gitlab.com/hymalaia-ai/hymalaia`) * Optionally, a **name** for your credentials 5. Click **Create Connector** Hymalaia will now start indexing your GitLab repository. # Gmail Connector Source: https://docs.hymalaia.com/connectors/gmail-connector Access knowledge from your Emails ## How it works The **Gmail Connector** ingests your emails and syncs the latest information from Gmail every **10 minutes**. > 📩 Currently supports **plain text emails only**. ## Setting up > ⚠️ This connector is relatively involved to set up. There are two options to configure the Gmail Connector: ### Option 1: OAuth Setup for Individual Accounts If you're setting up for a **personal Gmail account**, follow the guide [here](#) (OAuth-based).\ ✅ This method **does not require** a business Google Workspace account. *** ### Need Help? If you're unsure which setup to choose or encounter any issues: * 📧 Email: [support@hymalaia.com](mailto:support@hymalaia.com) We’re here to help you set things up smoothly! # Gong Connector Source: https://docs.hymalaia.com/connectors/gong-connector Access the latest call transcripts from Gong ## How it works The **Gong Connector** imports and indexes **transcripts of calls** recorded via [Gong.io](https://www.gong.io). It indexes: * **Call title** * **Call description** * **Transcript contents** > 🕒 New transcripts are pulled **every 10 minutes**. ## Setting up ### Authorization To authorize access to Gong: 1. Log in to your **Gong Admin** account 2. Navigate to **Company Settings** (top right menu) 3. Under the **Ecosystem** section, select **API** 4. Click on **API KEYS** (next to "Integrations") 5. Click **Get API Key** 6. Note down: * **Access Key** * **Access Key Secret** > 🔐 These credentials are required to allow Hymalaia to pull call transcripts. ### Indexing 1. Go to the **Hymalaia Admin Dashboard** 2. Select **Add Connector** and choose the **Gong** tile 3. Enter your: * **Access Key** * **Access Key Secret** 4. (Optional) Add specific **workspaces** to index > Leave empty to index **all workspaces** 5. Click **Connect** Hymalaia will begin indexing your Gong call transcripts automatically. # OAuth Setup Source: https://docs.hymalaia.com/connectors/google-drive-OAuth-setup OAuth Setup for Google Drive Connector This section walks through setting up the Google Drive connector using an OAuth-enabled Google App. Anyone can do this (even without a paid Google Workspace)! If you’re an organization with a Google Workspace, and you’d rather use a Service Account to access Google Drive, checkout the section [here](#). ## Authorization ### Create a Google Cloud Project * Visit the Google Cloud Console to create a new project: [Create Project](https://console.cloud.google.com/projectcreate) ### Enable the Google Drive API * On the left panel, open **APIs & services**. * Go to **Enabled APIs and services**. * Click **+ ENABLE APIS AND SERVICES** at the top. * Search for **Google Drive API** and click **ENABLE**. * Alternatively, visit this link, select your project, and enable the Google Drive API. ### Enable the Admin SDK API * Click on **+ ENABLE APIS AND SERVICES** again. * Search for **Admin SDK API** and click **ENABLE**. * Alternatively, visit this link, select your project, and enable the Admin SDK API. ### Enable the Google Sheets API * Click on **+ ENABLE APIS AND SERVICES** again. * Search for **Google Sheets API** and click **ENABLE**. * Alternatively, visit this link, select your project, and enable the Google Sheets API. ### Enable the Google Docs API * Click on **+ ENABLE APIS AND SERVICES** again. * Search for **Google Docs API** and click **ENABLE**. * Alternatively, visit this link, select your project, and enable the Google Docs API. ### Set up the OAuth consent screen * Under **APIs & services**, select the **OAuth consent screen** tab. * If you don’t have a Google Organization, select **External** for **User Type**. * Call the app **Hymalaia** (or whatever you prefer). * For the required emails, use any email of your choice or **[support@hymalaia.com](mailto:support@hymalaia.com)** if you wish for the Hymalaia team to help handle issues. * Click **SAVE AND CONTINUE**. ### Set up Scopes * Add the scope `.../auth/drive.readonly` for Google Drive API. * Add the scope `.../auth/drive.metadata.readonly` for Google Drive API. * Add the scope `.../auth/admin.directory.user.readonly` for Admin SDK API. * Add the scope `.../auth/admin.directory.group.readonly` for Admin SDK API. **Important:** If you plan on using permission syncing for this connector, the account performing the OAuth flow must have an Admin role in the Google Workspace that has access to the “Groups > Read” privilege. This can be set by an admin in the admin panel of the Google Workspace under **Account > Admin roles**. ### Set up Test users This step is only applicable for users without a Google Organization. * Typically for a company, Hymalaia would be set up as an internal app, so this step would not apply. * Add at least one test user email. Only the email accounts added here will be allowed to run the OAuth flow to index new documents. * Click **SAVE AND CONTINUE**, review the changes, and click **BACK TO DASHBOARD**. ### Create Credentials * Go to the **Credentials** tab and select **+ CREATE CREDENTIALS** -> **OAuth client ID**. * Choose **Web application** and give it a name like **HymalaiaConnector**. * Add an **Authorized JavaScript origin** for `http://localhost:3000` (or `https://` if you have set up Hymalaia for production use). * Add an **Authorized redirect URI** for `http://localhost:3000/admin/connectors/google-drive/auth/callback` (or `https:///admin/connectors/google-drive/auth/callback` if you have set up Hymalaia for production use). * Click **Create** and on the right-hand side, next to **Client secret**, there is an option to download the credentials as a **JSON**. Download the JSON for use in the next step. # Google Drive Connector Overview Source: https://docs.hymalaia.com/connectors/google-drive-connector Access knowledge from your Files ## How it works The Google Drive connector ingests your drive documents. It syncs the latest information from your Google Drive every 10 minutes. Currently, it supports: * Google Docs * Google Sheets * PDF files ## Setting up **Note**: This Connector is relatively involved to set up. If you want to set up the connector via individual account OAuth, follow the guide here. This does not require a business Google Workspace. If you want to set up the connector via Service Accounts, follow the guide here. This does require a business Google Workspace / access to the Admin panel. If you are an organization that meets these pre-requisites, then this is likely the preferred approach. # Google Sites Connector Source: https://docs.hymalaia.com/connectors/google-sites-connector Access sites and pages from Google Sites ## How it works Export your Google Site using [Google Takeout](https://takeout.google.com/), and then upload the zip to Hymalaia. We'll then index all your pages, and allow you to ask questions based on the site's content! ## Setting up ### Exporting Your Google Site Follow the guide [here](https://www.steegle.com/google-sites/how-to/export-with-takeout) to export your Google Site. Be sure to include ONLY the Google Site in the folder. ### Indexing Navigate to the Admin Panel and select the **Google Sites** Connector. Find and enter the base URL of your Google Site. This is the URL used to access the root page of the site. Upload the Zip file downloaded in the export step. Click the **Upload** button. Your site will be indexed and searchable upon completion. Hymalaia Google Sites connector configuration UI # Google Storage Connector Source: https://docs.hymalaia.com/connectors/google-storage-connector Access documents stored in Google Cloud Storage buckets ## How it works The Google Cloud Storage connector pulls in all documents from a specified GCS bucket.\ It supports multiple file types including **PDF, DOC, DOCX, TXT**, and more. > Documents are automatically synced and updated every **24 hours**. *** ## Setting up ### Authorization 1. Log into your [Google Cloud Console](https://console.cloud.google.com/). 2. Navigate to **IAM & Admin** > **Service Accounts**. 3. Click **Create Service Account**. 4. Set a name for the account (e.g., `hymalaia-gcs-connector`) and click **Create**. 5. Under **Role**, select `Storage Object Viewer` or another read-only role, then click **Continue**. 6. Click **Done** to finish creating the account. 7. On the **Service Accounts** page, select the newly created account. 8. In the **Keys** section, click **Add Key** → **Create new key**. 9. Choose **JSON** and click **Create**. 10. A JSON file will be downloaded – this contains your credentials. From the JSON file, extract the following: * `project_id` * `client_id` (→ **Access Key ID**) * `private_key` (→ **Secret Access Key**) *** ### Indexing 1. Go to the **Admin Dashboard** in Hymalaia. 2. Select the **Google Cloud Storage Connector**. 3. In **Step 1**, provide: * **GCS Project ID** * **Access Key ID** (from `client_id`) * **Secret Access Key** (from `private_key`) 4. Click **Update** to save the credentials. 5. In **Step 2**, specify the **GCS Bucket** you want to index. 6. Click **Connect** to begin indexing. *** ## Understanding Google Cloud Storage Structure Google Cloud Storage organizes your data into **buckets**.\ Each bucket can contain an unlimited number of **objects (files)**. You can think of a **bucket** as a root folder and the **objects** as its files. For more details, see the [Google Cloud Storage documentation](https://cloud.google.com/storage/docs/introduction). # Guru Connector Source: https://docs.hymalaia.com/connectors/guru-connector Access and index Guru Cards using a User Access Token ## How it works The Guru connector pulls in all **Cards** your user has access to, using a **User Access Token**. > Guru Cards are refreshed automatically **every 10 minutes**. *** ## Setting up ### Authorization 1. Obtain a **User Access Token** from your Guru account. 2. Follow the official [Guru API guide](https://developer.getguru.com/reference/authentication) for detailed steps on creating a token. *** ### Indexing 1. Go to the **Admin Dashboard** in Hymalaia. 2. Select the **Guru Connector**. 3. In **Step 1**, enter: * Your **Username** (usually your email) * The **Access Token** obtained above 4. Click **Connect** to start indexing your Guru Cards. > Once connected, Hymalaia will automatically keep your Guru content up to date. # Highspot Connector Source: https://docs.hymalaia.com/connectors/highspot-connector Index and search your Highspot content using Hymalaia ## How it works The Highspot connector indexes documents from your Highspot instance. It can index: * **Specific spots** that you add manually * Or **all spots** your user can view and download > Content is pulled in securely based on your access permissions. *** ## Setting up ### ⚠️ Prerequisite: Platform Plus Add-on > The **Highspot Platform Plus** add-on is required to access API features.\ > Without this, the connector will not work. Please confirm your organization has access. *** ## Authorization ### Enabling Developer Options 1. Log into Highspot as an **admin**. 2. Click on your **profile icon** → select **Settings**. 3. Under **Company Settings**, select your company. 4. Navigate to **Access and Privacy** → click **API Access**. 5. Add the user(s) who should be able to generate API credentials. 6. Make sure **API Access for Users** is enabled. *** ### Generating API Credentials 1. Log in as the user with API access. 2. Go to your **profile icon** → **Settings**. 3. Open the **Developer** tab. 4. Generate a new **API key and secret**. 5. Note down your: * **API Key** * **Secret** * **Base URL** *** ## Indexing 1. Navigate to the **Admin Dashboard** in Hymalaia. 2. Select the **Highspot Connector**. 3. Provide the following: * API Key * Secret * Base URL 4. Choose your indexing option: * Index **specific spots** * Index **all accessible spots** 5. Click **Connect** to begin syncing your Highspot content. > Your Highspot data will now be indexed and searchable within Hymalaia. # HubSpot Connector Source: https://docs.hymalaia.com/connectors/hubSpot-connector Access CRM data from HubSpot ## How it works The HubSpot connector pulls in data from your HubSpot CRM, including: * **Tickets** - Support tickets with their title, content, associated emails and notes * **Companies** - Company records with associated data and relationships * **Deals** - Sales opportunities with pipeline information and associated contacts * **Contacts** - Contact records with their information and associated activities You can configure which object types to index based on your needs. All selected data types are updated every **10** minutes. ## Setting up ### Authorization Create a Private App Integration (see below). Creating a Private App in HubSpot settings Under **Scopes** (top bar), select the appropriate scopes based on what data you want to index: * For **Tickets**: Select the `Tickets` scope * For **Companies**: Select the `Companies` scope * For **Deals**: Select the `Deals` scope * For **Contacts**: Select the `Contacts` scope Selecting HubSpot OAuth scopes for Contacts, Companies, Deals, and Tickets Copy the Access Token that is shown when the App is created. ### Indexing Navigate to the Admin Panel and select the **HubSpot** Connector In **Step 1**, provide the Access Token from above In **Step 2**, select which object types you want to index: * **Companies** - Index company records and their associated data * **Deals** - Index sales opportunities and pipeline information * **Contacts** - Index contact records and their activities * **Tickets** - Index support tickets and related communications Click `Connect` to begin indexing your selected HubSpot data types Make sure your HubSpot Access Token has the appropriate scopes enabled for the object types you want to index. The connector will only be able to access data for which you've granted the necessary permissions. # Jira Connector Source: https://docs.hymalaia.com/connectors/jira-connector Sync and search Jira issues and project updates with Hymalaia ## How it works The Jira connector pulls in all tickets from specified projects **every 10 minutes**. For each issue, it collects: * **Title** * **Description** * **Common fields** (assignee, reporter, status, etc.) * **Custom fields** * **Comments** *** ## Setting up ### Authorization * **Jira Cloud**: Follow [this guide](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3LO-apps/) to obtain an **Access Token**. * **Jira Server**: Follow [this guide](https://developer.atlassian.com/server/jira/platform/oauth/) to obtain a **Personal Access Token**. *** ## Indexing 1. Go to the **Admin Dashboard** in Hymalaia. 2. Select the **Jira Connector**. ### For Jira Cloud: * Enter your **Access Token** and the **Username** it's associated with. ### For Jira Server: * Enter your **Personal Access Token**. *** ## Selecting Projects to Index * For each Jira project you want to index, provide the **URL to any page within the project**. * Optionally, specify **users whose comments should be excluded** (e.g., bots). ```txt theme={null} Example: Project URL: https://yourcompany.atlassian.net/browse/PROJECTKEY Ignore Comments from: jira-bot@example.com, deploy-bot@example.com ``` ### Start Indexing Click **Connect** to start syncing! > From now on, Hymalaia will index your Jira tickets every 10 minutes. # Linear Connector Source: https://docs.hymalaia.com/connectors/linear-connector Sync and search Linear issues with Hymalaia ## How it works The Linear connector pulls in: * All **issues** * All **associated comments** > Data is refreshed every **10 minutes**. *** ## Setup ### (Self-Hosted Only) Configure your Linear Application > ⚠️ **Skip this section** if you're using **Hymalaia Cloud**. * Create a **Linear Application** from your [Linear Developer settings](https://linear.app/settings/developers). * You must be an **admin** of the Linear workspace. **Set callback URL** to: ``` /connector/oauth/callback/linear ``` For example: ``` http://localhost:3000/connector/oauth/callback/linear ``` **Set environment variables** using the Client ID and Signing Secret from Linear: ```env theme={null} LINEAR_CLIENT_ID=your-client-id LINEAR_CLIENT_SECRET=your-client-secret ``` Then **restart** your Hymalaia instance. *** ## Indexing 1. Go to the **Admin Dashboard** in Hymalaia. 2. Select the **Linear Connector**. 3. Click **Create New** to start the OAuth flow. 4. After authorizing the app, you'll be redirected back to Hymalaia. 5. Select the new credential and click **Continue**. 6. Enter a name and any permissions info. 7. Click **Create Connector** to start indexing your issues and comments. > 🎉 Your Linear workspace is now connected and searchable in Hymalaia! # Notion Connector Source: https://docs.hymalaia.com/connectors/notion-connector Access pages and databases from Notion ## How it works The Notion connector uses the Notion search API to fetch all pages that the connector has access to within a workspace. For follow up indexing runs, the connector only retrieves pages that have been updated since the last indexing attempt. Indexing is configured to run every **10 minutes**, so page updates should appear within 10 minutes. ## Setting up ### Authorization In order to authorize Hymalaia to connect to your Notion workspace, you'll need to create a new integration in Notion, which will then provide you with a secret token. These steps are pulled from [this Notion guide](https://developers.notion.com/docs/create-a-notion-integration) which you can also follow. #### Step 1: Create an integration Visit [https://www.notion.com/my-integrations](https://www.notion.com/my-integrations) in your browser. Click the + New integration button. Name the integration (something like "Hymalaia" could work). Select "Read content" as the only capability required for Hymalaia. Click Submit to create the integration. On the next page, you'll find your Notion integration token, also called an API key. You'll need this token to configure Hymalaia to index Notion, so make a copy of it. The integration has been added to the workspace, so any member can share pages and databases with it. There's no requirement to be an Admin to share information with an integration.