# Helios > Helios is an AI-native workflow automation platform. Describe what you want in plain language and Helios builds agentic workflows that connect your tools — Slack, GitHub, Notion, Stripe, HubSpot, and more — and run them automatically. --- # Helios - AI Operations Platform | Automate, Assist, Build | Helios URL: https://www.heliosapp.com/ Description: Automate workflows, get real-time AI assistance, and build custom internal tools - all from one platform. Connect 1000+ apps with natural language. Free to start. # Automate. Assist. Build. The AI-native platform that automates workflows, powers intelligent assistants, and builds internal tools - with all your integrations. [Get started for free](https://app.heliosapp.com/)[Request a demo](https://cal.com/suryao/helios) ALWAYS ON AGENTIC AI START IN MINUTES NO LEARNING CURVE Workflow automation ![Helios workflow automation interface](/images/screenshots/clean-canvas.png?dpl=dpl_DvG5zUPURLYpKPeiWHjJxA9K355b) AI assistant ![Helios AI assistant conversation](/images/screenshots/ai-agent-prompt.png?dpl=dpl_DvG5zUPURLYpKPeiWHjJxA9K355b) Custom apps ![Helios custom app dashboard](/images/screenshots/dashboard.png?dpl=dpl_DvG5zUPURLYpKPeiWHjJxA9K355b) Platform ## One platform. Three capabilities. Live ### Workflows Describe what you need in plain English. Helios builds the automation, connects your tools, and runs it - on triggers, schedules, or on-demand. * Describe workflows in plain English - AI builds and deploys them * 1000+ native integrations including Slack, Gmail, Notion, Stripe * Event triggers, scheduled runs, webhooks - always on * Visual editor available for power users who want fine control [Start building workflows](https://app.heliosapp.com/) ![Helios workflow automation interface](/images/screenshots/clean-canvas.png?dpl=dpl_DvG5zUPURLYpKPeiWHjJxA9K355b) Beta ### Assistant An AI teammate that lives wherever you work. Ask questions across your connected tools, get real-time answers, and execute actions - all conversationally. * Ask questions across all your connected apps in natural language * Execute multi-step actions on your behalf * Context-aware responses grounded in your live data ![Helios AI assistant conversation](/images/screenshots/ai-agent-prompt.png?dpl=dpl_DvG5zUPURLYpKPeiWHjJxA9K355b) [Try the assistant](https://app.heliosapp.com/) Beta ### Apps Turn any workflow into a polished internal tool. Build dashboards, forms, and admin panels - powered by the automations and integrations you already have. * Transform workflows into shareable internal tools * Built-in role-based access control and approval flows * Powered by your existing integrations and data sources ![Helios custom app dashboard](/images/screenshots/dashboard.png?dpl=dpl_DvG5zUPURLYpKPeiWHjJxA9K355b) [Try apps](https://app.heliosapp.com/) Integrations ## Connect once, use everywhere Every integration works across Workflows, Assistant, and Apps. Connect your tools once and use them in any capability - no duplicate setup, no scattered credentials. [![slack](/static/img/assets/slack-light.svg)![slack](/static/img/assets/slack-dark.svg)SlackSend messages and automate team communication.](/docs/integrations/apps/slack/)[GitHubManage repos, PRs, and automate dev workflows.](/docs/integrations/apps/github/)[NotionCreate pages, manage databases, and sync docs.](/docs/integrations/apps/notion/)[StripeProcess payments and manage subscriptions.](/docs/integrations/apps/stripe/)[DiscordSend messages and manage server channels.](/docs/integrations/apps/discord/)[HubSpotSync contacts, deals, and automate CRM flows.](/docs/integrations/apps/hubspot/)[![resend](/static/img/assets/resend-light.svg)![resend](/static/img/assets/resend-dark.svg)ResendSend transactional and marketing emails.](/docs/integrations/apps/resend/)[![gmail](/static/img/assets/gmail-light.svg)![gmail](/static/img/assets/gmail-dark.svg)GmailRead, send, and automate email workflows.](/docs/integrations/apps/google-gmail/)[![google-sheets](/static/img/assets/google-sheets-light.svg)![google-sheets](/static/img/assets/google-sheets-dark.svg)Google SheetsRead, write, and sync spreadsheet data.](/docs/integrations/apps/google-sheets/)[Google DriveManage files and folders in Drive.](/docs/integrations/apps/google-drive/)[![google-docs](/static/img/assets/google-docs-light.svg)![google-docs](/static/img/assets/google-docs-dark.svg)Google DocsCreate and edit documents programmatically.](/docs/integrations/apps/google-docs/)[RedditMonitor posts and automate community tasks.](/docs/integrations/apps/reddit/)[![typeform](/static/img/assets/typeform-light.svg)![typeform](/static/img/assets/typeform-dark.svg)TypeformCreate forms, surveys, and collect responses.](/docs/integrations/apps/typeform/)[![apollo](/static/img/assets/apollo-light.svg)![apollo](/static/img/assets/apollo-dark.svg)ApolloEnrich contacts and automate outbound.](/docs/integrations/apps/apollo/)[![apify](/static/img/assets/apify.svg)ApifyRun web scrapers and extract data at scale.](/docs/integrations/apps/apify/)[![attio](/static/img/assets/attio-light.svg)![attio](/static/img/assets/attio-dark.svg)AttioManage relationships and CRM pipelines.](/docs/integrations/apps/attio/)[![warpbuild](/static/img/assets/warpbuild-light.svg)![warpbuild](/static/img/assets/warpbuild-dark.svg)WarpBuildRun fast CI builds in the cloud.](/docs/integrations/apps/warpbuild/) [View all integrations →](/docs/integrations/) ## Frequently asked questions ### What is Helios? ### How is Helios different from Zapier or Make? ### What can I do with Helios today? ### How does pricing work? ### What integrations does Helios support? ### Is Helios secure? ## Ready to put AI to work? Start with workflows today. Unlock the assistant and custom apps as they launch. Free to get started, no credit card required. [Get started](https://app.heliosapp.com/)[Request a demo](https://cal.com/suryao/helios) --- # About Helios - The Team Building AI-Native Operations | Helios URL: https://www.heliosapp.com/about Description: Meet the Helios team - engineers passionate about developer tools and AI-powered automation. Backed by Y Combinator, we're building the future of operations. Company ## About Helios Building the future of AI-native operations Helios is an AI-native operations platform that automates workflows, powers intelligent assistants, and lets you build custom internal tools — with all your integrations connected. Business operations today are manual, repetitive, and fragmented across dozens of tools. Helios is the solution. We are a team of engineers, building together for years. We share a passion for developer tools and infrastructure, and for making something people want. We are backed by some of the best tech investors who are amazing supporters of builders working on big, ambitious ideas. Backed by ![Y Combinator](/images/yc.svg?dpl=dpl_DvG5zUPURLYpKPeiWHjJxA9K355b) --- # Privacy Policy | Helios | Helios URL: https://www.heliosapp.com/legal/privacy Description: Our Privacy Policy governs your visit to heliosapp.com, and explains how we collect, safeguard and disclose information that results from your use of our Service. [Subscribe](/legal/rss.xml) ## Privacy Policy Last updated January 15, 2025 ## 1\. Introduction Welcome to WarpBuild. At WarpBuild, we believe in transparency and responsible data handling. This privacy policy explains what data we collect, and how we use data to provide you with both our CI/CD infrastructure and Helios AI-powered development tools while respecting your privacy and maintaining security. Argonaut HQ, Inc ("us", "we", or "our") operates (hereinafter referred to as "Service"). Our Privacy Policy governs your visit to , and explains how we collect, and safeguard information that results from your use of our Service. We use your data to provide and improve Service. By using Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, the terms used in this Privacy Policy have the same meanings as in our Terms and Conditions. Our Terms and Conditions ("Terms") govern all use of our Service and together with the Privacy Policy constitutes your agreement with us ("agreement"). ## 2\. Definitions * **SERVICE** means the website operated by Argonaut HQ, Inc * **PERSONAL DATA** means data about a living individual who can be identified from those data (or from those and other information either in our possession or likely to come into our possession). * **USAGE DATA** is data collected automatically either generated by the use of Service or from Service infrastructure itself (for example, the duration of a page visit). * **COOKIES** are small files stored on your device (computer or mobile device). * **DATA CONTROLLER** means a natural or legal person who (either alone or jointly or in common with other persons) determines the purposes for which and the manner in which any personal data are, or are to be, processed. For the purpose of this Privacy Policy, we are a Data Controller of your data. * **DATA PROCESSOR (OR SERVICE PROVIDER)** means any natural or legal person who processes the data on behalf of the Data Controller. We may use the services of various Service Providers in order to process your data more effectively. * **DATA SUBJECT** is any living individual who is the subject of Personal Data. * **THE USER** is the individual using our Service. The User corresponds to the Data Subject, who is the subject of Personal Data. ## 3\. Information Collection and Use We collect several different types of information for various purposes to provide and improve our Service to you. ## 4\. Types of Data Collected ### Personal Data While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you ("Personal Data"). Personally identifiable information may include, but is not limited to: * Email address * First name and last name * Cookies and Usage Data * Rough location (e.g. city, state, country) We may use your Personal Data to contact you with newsletters, marketing or promotional materials and other information that may be of interest to you. You may opt out of receiving any, or all, of these communications from us by following the unsubscribe link. ### Usage Data We may also collect information that your browser sends whenever you visit our Service or when you access Service by or through a mobile device ("Usage Data"). This Usage Data may include information such as your computer's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that you visit, the time and date of your visit, the time spent on those pages, unique device identifiers and other diagnostic data. When you access Service with a mobile device, this Usage Data may include information such as the type of mobile device you use, your mobile device unique ID, the IP address of your mobile device, your mobile operating system, the type of mobile Internet browser you use, unique device identifiers and other diagnostic data. ## 5\. Use of Data Argonaut HQ, Inc uses the collected data for various purposes: * to provide and maintain our Service; * to notify you about changes to our Service; * to allow you to participate in interactive features of our Service when you choose to do so; * to provide customer support; * to gather analysis or valuable information so that we can improve our Service; * to monitor the usage of our Service; * to detect, prevent and address technical issues; * to fulfill any other purpose for which you provide it; * to carry out our obligations and enforce our rights arising from any contracts entered into between you and us, including for billing and collection; * to provide you with notices about your account and/or subscription, including expiration and renewal notices, email-instructions, etc.; * to provide you with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless you have opted not to receive such information; * in any other way we may describe when you provide the information; * for any other purpose with your consent. **Helios**: Source code representation is stored for providing code intelligence services. However, this is not used for any AI model training. We have Zero Data Retention agreements in place with the AI model providers to ensure there is no access to any sensitive data. ## 6\. Retention of Data We will retain your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies. We will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period, except when this data is used to strengthen the security or to improve the functionality of our Service, or we are legally obligated to retain this data for longer time periods. ## 7\. Transfer of Data Your information, including Personal Data, may be transferred to – and maintained on – computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ from those of your jurisdiction. Please note that we transfer the data, including Personal Data, to the United States or where our servers are located and process it there. Your consent to this Privacy Policy followed by your submission of such information represents your agreement to that transfer. Argonaut HQ, Inc will take all the steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of your data and other personal information. ## 8\. Disclosure of Data We may disclose personal information that we collect, or you provide: ### Disclosure for Law Enforcement Under certain circumstances, we may be required to disclose your Personal Data if required to do so by law or in response to valid requests by public authorities. ### Business Transaction If we or our subsidiaries are involved in a merger, acquisition or asset sale, your Personal Data may be transferred. ### Other cases We may disclose your information also: * to our subsidiaries and affiliates; * to contractors, service providers, and other third parties we use to support our business; * to fulfil the purpose for which you provide it; * for the purpose of including your company's logo on our website; * for any other purpose disclosed by us when you provide the information; * with your consent in any other cases; * if we believe disclosure is necessary or appropriate to protect the rights, property, or safety of the Company, our customers, or others. ## 9\. Security of Data The security of your data is important to us. We strive to use commercially acceptable means to protect your Personal Data. We implement industry-standard security measures: * Regular security audits and penetration testing * Access controls and authentication safeguards * SOC 2 compliance ## 10\. Your Data Protection Rights Under General Data Protection Regulation (GDPR) If you are a resident of the European Union (EU) and European Economic Area (EEA), you have certain data protection rights, covered by GDPR. – See more at We aim to take reasonable steps to allow you to correct, amend, delete, or limit the use of your Personal Data. If you wish to be informed what Personal Data we hold about you and if you want it to be removed from our systems, please email us at [support@heliosapp.com](mailto:support@heliosapp.com). In certain circumstances, you have the following data protection rights: * the right to access, update or to delete the information we have on you; * the right of rectification. You have the right to have your information rectified if that information is inaccurate or incomplete; * the right to object. You have the right to object to our processing of your Personal Data; * the right of restriction. You have the right to request that we restrict the processing of your personal information; * the right to data portability. You have the right to be provided with a copy of your Personal Data in a structured, machine-readable and commonly used format; * the right to withdraw consent. You also have the right to withdraw your consent at any time where we rely on your consent to process your personal information; Please note that we may ask you to verify your identity before responding to such requests. Please note, we may not be able to provide Service without some necessary data. You have the right to complain to a Data Protection Authority about our collection and use of your Personal Data. For more information, please contact your local data protection authority in the European Economic Area (EEA). ## 11\. Your Data Protection Rights under the California Privacy Protection Act (CalOPPA) CalOPPA is the first state law in the nation to require commercial websites and online services to post a privacy policy. The law's reach stretches well beyond California to require a person or company in the United States (and conceivable the world) that operates websites collecting personally identifiable information from California consumers to post a conspicuous privacy policy on its website stating exactly the information being collected and those individuals with whom it is being shared, and to comply with this policy. – See more at: According to CalOPPA we agree to the following: * users can visit our site anonymously; * our Privacy Policy link includes the word "Privacy", and can easily be found on the page specified above on the home page of our website; * users will be notified of any privacy policy changes on our Privacy Policy Page; * users are able to change their personal information by emailing us at [support@heliosapp.com](mailto:support@heliosapp.com). ## 12\. Your Data Protection Rights under the California Consumer Privacy Act (CCPA) If you are a California resident, you are entitled to learn what data we collect about you, ask to delete your data and not to sell (share) it. To exercise your data protection rights, you can make certain requests and ask us: ### What personal information we have about you If you make this request, we will return to you: * The categories of personal information we have collected about you. * The categories of sources from which we collect your personal information. * The business or commercial purpose for collecting or selling your personal information. * The categories of third parties with whom we share personal information. * The specific pieces of personal information we have collected about you. * A list of categories of personal information that we have sold, along with the category of any other company we sold it to. If we have not sold your personal information, we will inform you of that fact. * A list of categories of personal information that we have disclosed for a business purpose, along with the category of any other company we shared it with. Please note, you are entitled to ask us to provide you with this information up to two times in a rolling twelve-month period. When you make this request, the information provided may be limited to the personal information we collected about you in the previous 12 months. ### To delete your personal information If you make this request, we will delete the personal information we hold about you as of the date of your request from our records and direct any service providers to do the same. In some cases, deletion may be accomplished through de-identification of the information. If you choose to delete your personal information, you may not be able to use certain functions that require your personal information to operate. ### To stop selling your personal information We do not sell your personal information for monetary consideration. However, under some circumstances, a transfer of personal information to a third party, or within our family of companies, without monetary consideration may be considered a "sale" under California law. If you submit a request to stop selling your personal information, we will stop making such transfers. If you are a California resident, to opt-out of the sale of your personal information, click "Do Not Sell My Personal Information" at the bottom of our home page to submit your request. Please note, if you ask us to delete or stop selling your data, it may impact your experience with us, and you may not be able to participate in certain programs or membership services which require the usage of your personal information to function. But in no circumstances, we will discriminate against you for exercising your rights. To exercise your California data protection rights described above, please send your request(s) by one of the following means: By email: [support@heliosapp.com](mailto:support@heliosapp.com) Your data protection rights, described above, are covered by the CCPA, short for the California Consumer Privacy Act. To find out more, visit the official California Legislative Information website. The CCPA took effect on 01/01/2020. ## 13\. Service Providers We may employ third party companies and individuals to facilitate our Service ("Service Providers"), provide Service on our behalf, perform Service-related services or assist us in analyzing how our Service is used. These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose. We rely on third-party Service Providers to provide our Service. The list of subprocessors is available at . ## 14\. Children's Privacy Our Services are not intended for use by children under the age of 13 ("Children"). We do not knowingly collect personally identifiable information from Children under 13\. If you become aware that a Child has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from Children without verification of parental consent, we take steps to remove that information from our servers. ## 15\. Changes to This Privacy Policy We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. We may let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update "effective date" at the top of this Privacy Policy. You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page. ## 16\. Contact Us If you have any questions about this Privacy Policy, please contact us: By email: [support@heliosapp.com](mailto:support@heliosapp.com) --- # Subprocessors | Helios | Helios URL: https://www.heliosapp.com/legal/subprocessors Description: List of third-party subprocessors used by Helios to deliver our services, including their roles and subprocessing activities. [Subscribe](/legal/rss.xml) ## Subprocessors Last updated April 8, 2026 ## 1\. Introduction To support delivery of our services, Argonaut HQ, Inc. ("Helios", "Company", "Argonaut") uses service providers that may store and process Customer Data (each, a "Subprocessor"). This page provides important information about the identity, location and role of each Subprocessor. Terms used on this page but not defined have the meaning set forth in the [Terms of Service](https://www.heliosapp.com/legal/terms) or superseding written agreement between Customer and Helios (the "Agreement"). ## 2\. Third-Party Subprocessors Helios may use the following Subprocessors to host Customer Data, provide infrastructure that helps with delivery of our Services, or perform other functions related to the Helios Service. Prior to engaging any third party Subprocessor, Helios performs diligence to evaluate their privacy, security and confidentiality practices. We collect several different types of information for various purposes to provide and improve our Service to you. | Entity | Subprocessing Activity | | ------------------------- | --------------------------------------------------------------- | | Amazon Web Services, Inc. | Cloud Service Provider | | Google LLC | Cloud Service Provider, Website Analytics, Email Communications | | Microsoft Azure | Cloud Service Provider | | Cloudflare, Inc. | Web Application Firewall | | Datadog, Inc. | Infrastructure Monitoring | | MacStadium, Inc. | macOS Cloud Infrastructure | | Neon, Inc. | Serverless Database Services | | UnifyGTM | Go-to-Market / Sales Intelligence | | Attio | CRM | | Slack Technologies, Inc. | Messaging Services | | Vercel Inc. | Web Hosting Provider | | GitHub, Inc. | Version Control and Developer Services | | Posthog, Inc. | Session Analytics | | Atlas Support, Inc. | Customer Communications | | Linear Orbit | Project management and Tracking | | OpenAI, L.L.C. | AI Services | | Anthropic, PBC | AI Services | | Stripe, Inc. | Payment Processing | | Hetzner Online GmbH | Cloud Service Provider | | E2B Dev, Inc. | Cloud Sandboxes | | ClickHouse, Inc. | Data Storage and Analytics | | Incident.io Ltd. | Status Page and Incident Management | --- # Terms of Service | Helios | Helios URL: https://www.heliosapp.com/legal/terms Description: Terms of Service for Helios. These Terms govern your use of our web pages and services operated by Argonaut HQ, Inc. [Subscribe](/legal/rss.xml) ## Terms of Service Last updated January 15, 2025 ## 1\. Introduction Welcome to Argonaut HQ, Inc ("Company", "we", "our", "us")! As you have just clicked our Terms of Service, please pause, grab a cup of coffee and carefully read the following pages. It will take you approximately 20 minutes. These Terms of Service ("Terms", "Terms of Service") govern your use of our web pages located at operated by Argonaut HQ, Inc Our Privacy Policy also governs your use of our Service and explains how we collect, safeguard and disclose information that results from your use of our web pages. Please read it here . Your agreement with us includes these Terms and our Privacy Policy ("Agreements"). You acknowledge that you have read and understood Agreements, and agree to be bound by them. If you do not agree with (or cannot comply with) Agreements, then you may not use the Service, but please let us know by emailing at [support@heliosapp.com](mailto:support@heliosapp.com) so we can try to find a solution. These Terms apply to all visitors, users and others who wish to access or use Service. These terms may be superseded by custom agreements with specific customers. Thank you for being responsible. ## 2\. Communications By creating an Account on our Service, you agree to subscribe to newsletters, marketing or promotional materials and other information we may send. However, you may opt out of receiving any, or all, of these communications from us by following the unsubscribe link or by emailing at [support@heliosapp.com](mailto:support@heliosapp.com). ## 3\. Purchases If you wish to purchase any product or service made available through Service ("Purchase"), you may be asked to supply certain information relevant to your Purchase including, without limitation, your credit card number, the expiration date of your credit card, your billing address, and your shipping information. You represent and warrant that: * You have the legal right to use any credit card(s) or other payment method(s) in connection with any Purchase; and that * The information you supply to us is true, correct and complete. We may employ the use of third party services for the purpose of facilitating payment and the completion of Purchases. By submitting your information, you grant us the right to provide the information to these third parties subject to our Privacy Policy. We reserve the right to refuse or cancel your order at any time for reasons including but not limited to: product or service availability, errors in the description or price of the product or service, error in your order or other reasons. We reserve the right to refuse or cancel your order if fraud or an unauthorized or illegal transaction is suspected. ## 4\. Subscriptions Some parts of Service are billed on a subscription basis ("Subscription(s)"). You will be billed in advance on a recurring and periodic basis ("Billing Cycle"). Billing cycles are set either on a monthly or annual basis, depending on the type of subscription plan you select when purchasing a Subscription. At the end of each Billing Cycle, your Subscription will automatically renew unless you cancel it or Argonaut HQ, Inc cancels it. You may cancel your Subscription renewal either through your online account management page or by contacting Argonaut HQ, Inc customer support team. A valid payment method, including credit card, is required to process the payment for your subscription. You shall provide Argonaut HQ, Inc with accurate and complete billing information including full name, address, state, zip code, telephone number, and a valid payment method information. By submitting such payment information, you automatically authorize Argonaut HQ, Inc to charge all Subscription fees incurred through your account to any such payment instruments. Should automatic billing fail to occur for any reason, Argonaut HQ, Inc will issue an electronic invoice indicating that you must proceed manually, within a certain deadline date, with the full payment corresponding to the billing period as indicated on the invoice. ## 5\. Free Trial Argonaut HQ, Inc may, at its sole discretion, offer a Subscription with a free trial for a limited period of time ("Free Trial"). You may be required to enter your billing information in order to sign up for Free Trial. If you do enter your billing information when signing up for Free Trial, you will not be charged by Argonaut HQ, Inc until Free Trial has expired. On the last day of Free Trial period, unless you cancelled your Subscription, you will be automatically charged the applicable Subscription fees for the type of Subscription you have selected. At any time and without notice, Argonaut HQ, Inc reserves the right to: * Modify Terms of Service of Free Trial offer, or * Cancel such Free Trial offer. ## 6\. Fee Changes Argonaut HQ, Inc, in its sole discretion and at any time, may modify Subscription fees for the Subscriptions. Any Subscription fee change will become effective at the end of the then-current Billing Cycle. Argonaut HQ, Inc will provide you with a reasonable prior notice of any change in Subscription fees to give you an opportunity to terminate your Subscription before such change becomes effective. Your continued use of Service after Subscription fee change comes into effect constitutes your agreement to pay the modified Subscription fee amount. ## 7\. Refunds We do not offer refunds for products that are billed on a usage based model. We may offer refunds for products that are billed on a subscription basis, at our sole discretion. ## 8\. Content Our Service allows you to post, link, store, share and otherwise make available certain information, text, graphics, videos, or other material ("Content"). You are responsible for Content that you post on or through Service, including its legality, reliability, and appropriateness. By posting Content on or through Service, You represent and warrant that: * Content is yours (you own it) and/or you have the right to use it and the right to grant us the rights and license as provided in these Terms, and * That the posting of your Content on or through Service does not violate the privacy rights, publicity rights, copyrights, contract rights or any other rights of any person or entity. We reserve the right to terminate the account of anyone found to be infringing on a copyright. You retain any and all of your rights to any Content you submit, post or display on or through Service and you are responsible for protecting those rights. We take no responsibility and assume no liability for Content you or any third party posts on or through Service. Argonaut HQ, Inc has the right but not the obligation to monitor all Content provided by users. You may not distribute, modify, transmit, reuse, download, repost, copy, or use Content, whether in whole or in part, for commercial purposes or for personal gain, without express advance written permission from us. **Source Code Protection.** We do not access, read, or analyze your source code, repositories, or other proprietary code ("Source Code") that you provide to or process through the Service, except as strictly necessary to provide the Service to you (for example, to execute builds or run workflows you have configured). We do not share, sell, license, or disclose your Source Code to any third party. Your Source Code remains your sole property at all times, and we claim no rights, ownership, or interest in it. ## 9\. Prohibited Uses You may use Service only for lawful purposes and in accordance with Terms. You agree not to use Service: * In any way that violates any applicable national or international law or regulation. * For the purpose of exploiting, harming, or attempting to exploit or harm minors in any way by exposing them to inappropriate content or otherwise. * To transmit, or procure the sending of, any advertising or promotional material, including any "junk mail", "chain letter," "spam," or any other similar solicitation. * To impersonate or attempt to impersonate Company, a Company employee, another user, or any other person or entity. * In any way that infringes upon the rights of others, or in any way is illegal, threatening, fraudulent, or harmful, or in connection with any unlawful, illegal, fraudulent, or harmful purpose or activity. * To engage in any other conduct that restricts or inhibits anyone's use or enjoyment of Service, or which, as determined by us, may harm or offend Company or users of Service or expose them to liability. Additionally, you agree not to: * Use Service in any manner that could disable, overburden, damage, or impair Service or interfere with any other party's use of Service, including their ability to engage in real time activities through Service. * Use any robot, spider, or other automatic device, process, or means to access Service for any purpose, including monitoring or copying any of the material on Service. * Use any manual process to monitor or copy any of the material on Service or for any other unauthorized purpose without our prior written consent. * Use any device, software, or routine that interferes with the proper working of Service. * Introduce any viruses, trojan horses, worms, logic bombs, or other material which is malicious or technologically harmful. * Attempt to gain unauthorized access to, interfere with, damage, or disrupt any parts of Service, the server on which Service is stored, or any server, computer, or database connected to Service. * Attack Service via a denial-of-service attack or a distributed denial-of-service attack. * Take any action that may damage or falsify Company rating. * Attempt to interfere with the proper working of Service without proper explicit permission. * Use the Service to compete with Argonaut HQ, Inc. * Otherwise attempt to interfere with the proper working of Service. Violation of any of these Terms will result in fines and penalties as determined by Argonaut HQ, Inc in its sole discretion. ## 10\. Analytics We may use third-party Service Providers as subprocessors to provide analytics services. The list of subprocessors is available at . ## 11\. No Use By Minors Service is intended only for access and use by individuals at least eighteen (18) years old. By accessing or using any of the Company, you warrant and represent that you are at least eighteen (18) years of age and with the full authority, right, and capacity to enter into this agreement and abide by all of the terms and conditions of Terms. If you are not at least eighteen (18) years old, you are prohibited from both the access and usage of Service. ## 12\. Accounts When you create an account with us, you guarantee that you are above the age of 18, and that the information you provide us is accurate, complete, and current at all times. Inaccurate, incomplete, or obsolete information may result in the immediate termination of your account on Service. You are responsible for maintaining the confidentiality of your account and password, including but not limited to the restriction of access to your computer and/or account. You agree to accept responsibility for any and all activities or actions that occur under your account and/or password, whether your password is with our Service or a third-party service. You must notify us immediately upon becoming aware of any breach of security or unauthorized use of your account. You may not use as a username the name of another person or entity or that is not lawfully available for use, a name or trademark that is subject to any rights of another person or entity other than you, without appropriate authorization. You may not use as a username any name that is offensive, vulgar or obscene. We reserve the right to refuse service, terminate accounts, remove or edit content, or cancel orders at our sole discretion. ## 13\. Intellectual Property Service and its original content (excluding Content provided by users), features and functionality are and will remain the exclusive property of Argonaut HQ, Inc and its licensors. Service is protected by copyright, trademark, and other laws of the United States and foreign countries. Our trademarks and trade dress may not be used in connection with any product or service without the prior written consent of Argonaut HQ, Inc. ## 14\. Error Reporting and Feedback You may provide us either directly at [support@heliosapp.com](mailto:support@heliosapp.com) or via third party sites and tools with information and feedback concerning errors, suggestions for improvements, ideas, problems, complaints, and other matters related to our Service ("Feedback"). You acknowledge and agree that: * You shall not retain, acquire or assert any intellectual property right or other right, title or interest in or to the Feedback; * Company may have development ideas similar to the Feedback; * Feedback does not contain confidential information or proprietary information from you or any third party; and * Company is not under any obligation of confidentiality with respect to the Feedback. In the event the transfer of the ownership to the Feedback is not possible due to applicable mandatory laws, you grant Company and its affiliates an exclusive, transferable, irrevocable, free-of-charge, sub-licensable, unlimited and perpetual right to use (including copy, modify, create derivative works, publish, distribute and commercialize) Feedback in any manner and for any purpose. ## 15\. Links To Other Web Sites Our Service may contain links to third party web sites or services that are not owned or controlled by Argonaut HQ, Inc. Argonaut HQ, Inc has no control over, and assumes no responsibility for the content, privacy policies, or practices of any third party web sites or services. We do not warrant the offerings of any of these entities/individuals or their websites. YOU ACKNOWLEDGE AND AGREE THAT ARGONAUT HQ, INC SHALL NOT BE RESPONSIBLE OR LIABLE, DIRECTLY OR INDIRECTLY, FOR ANY DAMAGE OR LOSS CAUSED OR ALLEGED TO BE CAUSED BY OR IN CONNECTION WITH USE OF OR RELIANCE ON ANY SUCH CONTENT, GOODS OR SERVICES AVAILABLE ON OR THROUGH ANY SUCH THIRD PARTY WEB SITES OR SERVICES. WE STRONGLY ADVISE YOU TO READ THE TERMS OF SERVICE AND PRIVACY POLICIES OF ANY THIRD PARTY WEB SITES OR SERVICES THAT YOU VISIT. ## 16\. Disclaimer Of Warranty THESE SERVICES ARE PROVIDED BY COMPANY ON AN "AS IS" AND "AS AVAILABLE" BASIS. COMPANY MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE OPERATION OF THEIR SERVICES, OR THE INFORMATION, CONTENT OR MATERIALS INCLUDED THEREIN. YOU EXPRESSLY AGREE THAT YOUR USE OF THESE SERVICES, THEIR CONTENT, AND ANY SERVICES OR ITEMS OBTAINED FROM US IS AT YOUR SOLE RISK. NEITHER COMPANY NOR ANY PERSON ASSOCIATED WITH COMPANY MAKES ANY WARRANTY OR REPRESENTATION WITH RESPECT TO THE COMPLETENESS, SECURITY, RELIABILITY, QUALITY, ACCURACY, OR AVAILABILITY OF THE SERVICES. WITHOUT LIMITING THE FOREGOING, NEITHER COMPANY NOR ANYONE ASSOCIATED WITH COMPANY REPRESENTS OR WARRANTS THAT THE SERVICES, THEIR CONTENT, OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE SERVICES WILL BE ACCURATE, RELIABLE, ERROR-FREE, OR UNINTERRUPTED, THAT DEFECTS WILL BE CORRECTED, THAT THE SERVICES OR THE SERVER THAT MAKES IT AVAILABLE ARE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS OR THAT THE SERVICES OR ANY SERVICES OR ITEMS OBTAINED THROUGH THE SERVICES WILL OTHERWISE MEET YOUR NEEDS OR EXPECTATIONS. COMPANY HEREBY DISCLAIMS ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED, STATUTORY, OR OTHERWISE, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, AND FITNESS FOR PARTICULAR PURPOSE. THE FOREGOING DOES NOT AFFECT ANY WARRANTIES WHICH CANNOT BE EXCLUDED OR LIMITED UNDER APPLICABLE LAW. ## 17\. Limitation Of Liability EXCEPT AS PROHIBITED BY LAW, YOU WILL HOLD US AND OUR OFFICERS, DIRECTORS, EMPLOYEES, AND AGENTS NOT LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGE, HOWEVER IT ARISES IN CONNECTION WITH THIS AGREEMENT. EXCEPT AS PROHIBITED BY LAW, IF THERE IS LIABILITY FOUND ON THE PART OF COMPANY, IT WILL BE LIMITED TO THE AGGREGATED AMOUNT PAID FOR THE PRODUCTS AND/OR SERVICES IN THE PREVIOUS 12 MONTHS OF THE SPECIFIC CLAIM ARISING, LESS COSTS AND EXPENSES TO PROVIDE THE PRODUCTS AND/OR SERVICES, AND UNDER NO CIRCUMSTANCES WILL THERE BE CONSEQUENTIAL OR PUNITIVE DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF PUNITIVE, INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE PRIOR LIMITATION OR EXCLUSION MAY NOT APPLY TO YOU. ## 18\. Termination We may terminate or suspend your account and bar access to Service immediately, without prior notice or liability, under our sole discretion, for any reason whatsoever and without limitation, including but not limited to a breach of Terms. If you wish to terminate your account, you may simply discontinue using Service. All provisions of Terms which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability. ## 19\. Governing Law These Terms shall be governed and construed in accordance with the laws of State of Delaware without regard to its conflict of law provisions. Our failure to enforce any right or provision of these Terms will not be considered a waiver of those rights. If any provision of these Terms is held to be invalid or unenforceable by a court, the remaining provisions of these Terms will remain in effect. These Terms constitute the entire agreement between us regarding our Service and supersede and replace any prior agreements we might have had between us regarding Service. ## 20\. Changes To Service We reserve the right to withdraw or amend our Service, and any service or material we provide via Service, in our sole discretion without notice. We will not be liable if for any reason all or any part of Service is unavailable at any time or for any period. From time to time, we may restrict access to some parts of Service, or the entire Service, to users, including registered users. ## 21\. Amendments To Terms We may amend Terms at any time by posting the amended terms on this site. It is your responsibility to review these Terms periodically. Your continued use of the Platform following the posting of revised Terms means that you accept and agree to the changes. You are expected to check this page frequently so you are aware of any changes, as they are binding on you. By continuing to access or use our Service after any revisions become effective, you agree to be bound by the revised terms. If you do not agree to the new terms, you are no longer authorized to use Service. ## 22\. Waiver And Severability No waiver by Company of any term or condition set forth in Terms shall be deemed a further or continuing waiver of such term or condition or a waiver of any other term or condition, and any failure of Company to assert a right or provision under Terms shall not constitute a waiver of such right or provision. If any provision of Terms is held by a court or other tribunal of competent jurisdiction to be invalid, illegal or unenforceable for any reason, such provision shall be eliminated or limited to the minimum extent such that the remaining provisions of Terms will continue in full force and effect. ## 23\. Acknowledgement BY USING SERVICE OR OTHER SERVICES PROVIDED BY US, YOU ACKNOWLEDGE THAT YOU HAVE READ THESE TERMS OF SERVICE AND AGREE TO BE BOUND BY THEM. ## 24\. Contact Us Please send your feedback, comments, requests for technical support: By email: [support@heliosapp.com](mailto:support@heliosapp.com). --- # Pricing - The most powerful workflow automation platform | Helios | Helios URL: https://www.heliosapp.com/pricing Description: Simple, transparent pricing for AI-native workflow automation. Start free with 5,000 credits. Growth at $99/mo with 50,000 credits included. Enterprise plans for custom needs. # One platform, simple pricing Workflows, Assistant, and Apps — all included on every plan. Start free, scale with unified credits. ### Free For individuals exploring the platform Free 5,000 credits included [Get started](https://app.heliosapp.com/) * Unlimited workflows & apps * Full assistant access * All integrations & API access * Shared workflows & RBAC * 14-day execution history * Community support ### Growth For teams using the full platform $0/month + usage $0.002/credit [Get started](https://app.heliosapp.com/) * Everything in Free, plus: * 100 concurrent executions * 1 GB knowledge bases * 45-day conversation history * Error notifications (beta) * Email support ### Enterprise For organizations with advanced needs Custom [Contact us](https://cal.com/suryao/helios) * Everything in Growth, plus: * Custom credit volumes * Unlimited history & knowledge bases * Custom branding & domains * SSO / SAML & audit logs * Dedicated infrastructure * BYOK & custom models * SLA guarantees * Dedicated support & onboarding ## Compare plan features Feature Free Growth Enterprise Workflows Credits 5,000 Pay per use Custom volume Credit pricing — $0.002 Custom Active workflows Unlimited Unlimited Unlimited Concurrent executions 5 100 Custom Triggers per workflow Unlimited Unlimited Unlimited Scheduled triggers Webhook triggers Execution history 14 days 14 days Unlimited Version history Error notifications — Beta Beta Approval workflows Assistant Web access Slack access Browser extension Custom instructions Knowledge bases 10 MB 1 GB Unlimited Conversation history 7 days 45 days Unlimited Usage analytics Apps Published apps Unlimited Unlimited Unlimited App viewers Unlimited Unlimited Unlimited Custom branding — — App RBAC Custom domains — — Platform Core integrations All integrations Custom integrations SDK API access Shared workflows RBAC Environment separation Audit logs — — SSO / SAML — — Dedicated infrastructure — — SOC 2 Type II — End-to-end encryption Model Training — — — BYOK for LLM — — Custom Models — — Support Community support Email support — Dedicated support — — SLA guarantees — — Onboarding — — ### How do credits work? ### What counts as an execution? ### What happens if I exceed my included credits? ### Can I upgrade or downgrade my plan? ### How is Helios different from Zapier or Make? ### What happens as my usage grows? ### Do I get access to all three capabilities on every plan? ### What are the Assistant and Apps capabilities? ### Is my data secure? --- # Helios Documentation Base URL: https://www.heliosapp.com/docs # Advanced URL: https://www.heliosapp.com/docs/advanced Description: Advanced usage of Helios --- title: "Advanced" excerpt: "Advanced usage of Helios" description: "Advanced usage of Helios" icon: Code createdAt: "2025-07-31" updatedAt: "2025-07-31" --- # Advanced ## Workflow YAML definition Workflows can be defined in YAML for advanced customization. Some examples are below. #### 1. Webhook Trigger ```yaml trigger: type: webhook events: ["issues.opened"] ``` #### 2. Format Message Node ```javascript // Script node to format the message const issue = triggers['github-issue'].payload; return { text: `🚨 New Issue: ${issue.title}`, url: issue.html_url, author: issue.user.login }; ``` #### 3. Post to Slack Node ```yaml # Slack integration node channel: "#dev-alerts" message: | {{nodes['format-message'].output.text}} Author: {{nodes['format-message'].output.author}} Link: {{nodes['format-message'].output.url}} ``` ### Test Your Workflow 1. **Save** the workflow 2. **Run Test** to verify functionality 3. **Set up webhook** in GitHub repository 4. **Create test issue** to confirm workflow #### 4. Conditional Logic ```yaml # Condition node if: "nodes['format-message'].output.priority === 'high'" then: ["urgent-notification"] else: ["standard-notification"] ``` #### 5. AI Processing ```yaml # AI node for issue analysis model: "gemini-2.5-flash" prompt: "Analyze and categorize this issue: {{trigger.payload.body}}" output_schema: category: ["bug", "feature", "documentation", "question"] priority: ["low", "medium", "high", "critical"] ``` ## Step 4: Manage Variable ### Variables Non-sensitive configuration values with hierarchical scoping. **Create Variable:** 1. Go to **Variables** in project/organization settings 2. Click **Add Variable** 3. Set key-value (e.g., `ENVIRONMENT`: `production`) 4. Reference in workflows: `{{variables.ENVIRONMENT}}` ## Step 5: Monitor and Debug ### Workflow Runs Each execution creates a run record with: - **Status**: Success, failure, or running - **Duration**: Execution time - **Node Results**: Output from each node - **Logs**: Detailed execution information ### Common Issues #### Node Failures - Check logs for error messages - Validate all required inputs - Test integration connections #### Authentication Errors - Verify integration permissions - Check API key validity --- # Quickstart URL: https://www.heliosapp.com/docs/quickstart Description: Create your first Helios workflow in 5 minutes, automate everything. --- title: "Quickstart" excerpt: "Create your first Helios workflow" description: "Create your first Helios workflow in 5 minutes, automate everything." icon: FastForward createdAt: "2025-07-31" updatedAt: "2025-07-31" --- import { Step, Steps } from 'fumadocs-ui/components/steps'; import { Callout } from 'fumadocs-ui/components/callout'; # Quickstart This guide walks you through creating your first project, setting up integrations, and building your first workflow. ## Create Project Projects organize related workflows, variables, and integrations. 1. Navigate to **Projects** in sidebar 2. Click **Create Project** 3. Fill in details: - **Name**: Descriptive project name - **Description**: Optional purpose description 4. **Set Visibility**: - **Organization**: All team members can access - **Restricted**: Only explicitly granted users 5. Click **Create** Your project now contains workflows, variables, integrations, and team access settings. ## Set Up Integrations Integrations connect workflows to external services securely. 1. Go to your project → **Integrations** 2. Select a service 3. Choose authentication method: - **Helios App**: Built-in OAuth (recommended) - **API Key**: Enter service API key - **BYO App**: Use your OAuth credentials 4. Name your integration for easy identification For detailed setup instructions and examples, see the **[Integrations](/docs/integrations)** section. ## Create Your First Workflow Let's build a workflow that posts GitHub issues to Slack. 1. In your project, click **Create Workflow** 2. **Name**: "GitHub Issue to Slack" 3. **Description** (optional): "Post new GitHub issues to Slack channel" ### Trigger Triggers are the starting point of a workflow. They can be configured to listen to events from external services, or periodically run on a schedule. The payload of the trigger is available in the `{{ trigger.payload }}` variable. You can use it in any node. #### Example Listen for new issues in a GitHub repository. Select the `Integration Trigger` node and select the `GitHub` integration you created in the previous step. Prompt it in natural language to listen for new issues in the `ExampleOrg/ExampleRepo` repository as follows: ``` Listen for new issues in the `ExampleOrg/ExampleRepo` repository of the type `bug`. ``` The prompt is used to filter the events that are delivered to the workflow. No additional processing is done on the input payload. Use nodes to process the input payload as needed for your workflow. For example, the following is an invalid filter prompt: ``` Listen for new issues in the `ExampleOrg/ExampleRepo` repository of the type `bug` and identify if the issue is a duplicate of an existing issue. ``` The following is a valid filter prompt: ``` Listen for new issues in the `ExampleOrg/ExampleRepo` repository of the type `bug`. ``` ### Add Integration Select the `Slack` node and select the `Slack` integration you created in the previous step. Prompt it in natural language to post a message to the `#dev-alerts` channel as follows: ``` Post a message to the #dev-alerts slack channel with the details of the issue. Format it as a markdown message with the title, author, and link to the issue. Include the issue priority and category. Issue details are here: `{{ trigger.payload }}`. ``` The input and output of each node is available in the `{{ nodes['node-name'].input }}` and `{{ nodes['node-name'].output }}` variables. ## Run the Workflow Create a new issue in the `ExampleOrg/ExampleRepo` repository to see the workflow run. You can: - See the workflow run in the `Workflow Runs` tab. - See the logs of the workflow run in the `Logs` tab. - Change the workflow and re-run it by redelivering the trigger payload. ## Next Steps Explore advanced features: 1. **[User roles and permissions](/docs/basics/roles-permissions)** - Manage team access 2. **[Sharing options](/docs/basics/sharing)** - Share projects and integrations 3. **[Manage Variables](/docs/basics/variables)** - Manage variables 4. **[Workflow YAML definition](/docs/advanced)** - Advanced workflow customization 5. **[Keyboard shortcuts](/docs/basics/keyboard-shortcuts)** - Boost productivity 6. **[Available integrations](/docs/integrations)** - Connect more services 7. **[Key concepts](/docs/basics/concepts)** - Deepen your understanding ## Support Email support@warpbuild.com for assistance or reach out through the in-app chat. --- # What is Helios? URL: https://www.heliosapp.com/docs/what-is-helios Description: Helios is an AI-native collaboration and workflow builder that enables developers to create, manage, and execute automated workflows with seamless integrations and intelligent processing. --- title: "What is Helios?" excerpt: "Introducing Helios - AI-native workflow automation platform built for developers" description: "Helios is an AI-native collaboration and workflow builder that enables developers to create, manage, and execute automated workflows with seamless integrations and intelligent processing." icon: Sun createdAt: "2025-07-31" updatedAt: "2025-07-31" --- import { Card } from 'fumadocs-ui/components/card'; import { Code2, Megaphone, BarChart3, Settings, DollarSign, Users, Target, Heart, GraduationCap, Scale, Factory, ShoppingCart } from 'lucide-react'; # What is Helios? Helios is an **AI-native workflow automation platform**. Create, manage, and execute automated workflows with seamless integrations and intelligent processing. ## Guiding Principles The objective with Helios is to maximally leverage AI to automate all useful work. 1. AI native - It is simpler to automate the task than it is to send a slack message or raise a Linear issue. Creating workflows is 100x easier. 1. Collaboration and team first - create once and reuse across teams. 1. Access 100% of capabilities of integrated product (not just the top 10 actions). 1. Enterprise ready from day one with custom permissions, scopes, SOC2 Type 2 compliance, RBAC, SSO with SCIM, and more. 1. [Coming soon] Appify workflows instantly for maximal reuse and productivity. 1. [Coming soon] Run anywhere, securely - on-prem, cloud, or self-hosted. ## Key Features | Feature | Description | |---------|-------------| | **Extensive Integrations** | Connect with 100+ tools and services including GitHub, Slack, Notion, Stripe, OpenAI, and custom APIs. | | **AI-Powered Processing** | Built-in AI capabilities for content generation, data analysis, code review, and multi-modal processing. | | **Visual Workflow Builder** | Intuitive drag-and-drop interface with real-time collaboration, version control, and easy testing. | | **Scalable Architecture** | Distributed execution with event-driven architecture, fault tolerance, and 99.9% uptime. | | **Enterprise Security** | SOC2 Type 2 compliant with encrypted storage, RBAC, and SSO integration. | ## Core Concepts | Concept | Description | |---------|-------------| | **Workflows** | Directed acyclic graphs (DAGs) of connected nodes that define your automation logic. Triggered manually, by schedules, or via webhooks. | | **Nodes** | Individual processing units that execute tasks, connect to external services, transform data, and support conditional logic. | | **Projects** | Organizational units containing workflows, variables, and integrations. Enable team collaboration and resource sharing. | | **Integrations** | Authenticated connections to external services with secure credential storage and multiple authentication methods. | ## Use Cases Helios is designed to automate any task that can be described in natural language. The objective is to make it as easy to build workflows as it is to send a slack message.
} title='Software Development'> Automated code reviews, PR management, documentation generation, and deployment workflows. } title='Marketing & Content'> Campaign automation, content generation, social media scheduling, and performance analytics. } title='Data & Analytics'> Data processing, report generation, ETL workflows, and predictive analytics dashboards. } title='Operations & Support'> Incident response, ticket routing, system monitoring, and automated customer support. } title='Finance & Accounting'> Invoice processing, expense automation, financial reporting, and compliance tracking. } title='HR & Recruitment'> Candidate screening, onboarding workflows, performance reviews, and employee surveys. } title='Sales & CRM'> Lead qualification, follow-up automation, pipeline management, and customer communications. } title='Healthcare'> Patient scheduling, medical record processing, appointment reminders, and treatment workflows. } title='Education'> Student enrollment, grading automation, course management, and learning analytics. } title='Legal & Compliance'> Contract review, compliance monitoring, document automation, and regulatory reporting. } title='Manufacturing'> Quality control, inventory management, supply chain automation, and production scheduling. } title='E-commerce'> Order processing, inventory updates, customer notifications, and marketplace management.
## Quickstart 1. **[Create your first project](/docs/quickstart)** - Set up projects and understand basics 2. **[Connect your tools](/docs/integrations)** - Set up integrations with your services 3. **[Learn key concepts](/docs/basics/concepts)** - Understand workflows, nodes, and integrations 4. **[Understand permissions](/docs/basics/roles-permissions)** - Learn about user roles and access control 5. **[Master collaboration](/docs/basics/sharing)** - Share projects and integrations with your team 6. **[Boost productivity](/docs/basics/keyboard-shortcuts)** - Master keyboard shortcuts ## Compliance and Security Helios is SOC2 Type 2 compliant. For detailed security documentation, visit our [trust center](https://compliance.warpbuild.com) or contact support@warpbuild.com. No data passing through Helios is used for training or improving AI models. Helios stores data for managing workflows, running workflows, and providing the relevant functionality for users in accordance with our data retention policy. ## Next Steps - [Get started with your first workflow](/docs/quickstart) - [Explore available integrations](/docs/integrations) - [Learn about user roles and permissions](/docs/basics/roles-permissions) - [Master keyboard shortcuts](/docs/basics/keyboard-shortcuts) --- # Workflow triggers (draft) URL: https://www.heliosapp.com/docs/agent-workflows/triggers Description: Reference for agent-workflow trigger types and webhook signing --- title: "Workflow triggers (draft)" description: "Reference for agent-workflow trigger types and webhook signing" draft: true --- import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; # Triggers Agent workflows can be triggered by manual dispatch, cron schedules, integration events, or webhooks. ## Webhook triggers Webhook triggers expose a public URL that any HTTP client can POST to. To prevent anyone with the URL from firing your workflow, every request must carry a valid HMAC-SHA256 signature derived from a per-trigger secret. ### Headers | Header | Value | | -------------------- | ------------------------------------- | | `X-Helios-Timestamp` | Unix seconds at the moment of signing | | `X-Helios-Signature` | `sha256=` | ### Algorithm 1. Capture the raw request body as bytes. 2. Compute `HMAC-SHA256(secret, "${timestamp}.${rawBody}")` and hex-encode it. 3. Send the request with both headers above. The server rejects when: - the signature header is missing or doesn't begin with `sha256=`, - the timestamp is more than 5 minutes off the server's clock, - or the computed digest doesn't match. All failures return `401`. The body is intentionally generic — server-side logs carry the precise reason. ### Examples ```ts import crypto from "node:crypto"; const url = ""; const secret = ""; const ts = Math.floor(Date.now() / 1000); const body = JSON.stringify({ hello: "world" }); const sig = crypto .createHmac("sha256", secret) .update(`${ts}.${body}`) .digest("hex"); await fetch(url, { method: "POST", headers: { "Content-Type": "application/json", "X-Helios-Timestamp": String(ts), "X-Helios-Signature": `sha256=${sig}`, }, body, }); ``` ```bash ts=$(date +%s) body='{"hello":"world"}' sig=$(printf '%s.%s' "$ts" "$body" \ | openssl dgst -sha256 -hmac "$SECRET" -hex \ | awk '{print $2}') curl -X POST "$URL" \ -H "X-Helios-Timestamp: $ts" \ -H "X-Helios-Signature: sha256=$sig" \ -H 'Content-Type: application/json' \ --data "$body" ``` ### Rotating the secret You can rotate a webhook trigger's signing secret from the workflow's trigger panel. Rotation immediately invalidates the previous secret — every existing sender will start receiving `401` until reconfigured with the new value. There is no overlap window. ### Notes - The secret is treated as a UTF-8 string, not raw bytes. Both ends sign the same way; don't `Buffer.from(secret, "hex")` on one side only. - The body is signed exactly as transmitted. If a proxy mutates whitespace or re-encodes JSON, signatures will fail. - Empty bodies are signed as the empty string — sign over `${ts}.` (no body bytes). --- # Key Concepts URL: https://www.heliosapp.com/docs/basics/concepts Description: Core concepts and terminology in Helios workflows, nodes, and integrations --- title: "Key Concepts" excerpt: "Essential concepts and terminology for understanding Helios" description: "Core concepts and terminology in Helios workflows, nodes, and integrations" icon: BookOpen createdAt: "2025-07-31" updatedAt: "2025-07-31" --- # Key Concepts Essential concepts and terminology for understanding Helios. ## Core Concepts ### **Integration** Configured connection to external services with secure credential storage and reusable access across workflows. This is sometimes called a "service". ### **Node** Individual processing unit in workflows that executes tasks, processes data, and connects to external services. **Example Node Types:** - **Script**: Execute custom JavaScript code - **Integration**: Connect to external services - **AI**: Process data using AI models - **Control**: Handle workflow logic (conditions, loops) - **Trigger**: Start workflow execution **Node States:** - **Pending**: Waiting to execute - **Running**: Currently executing - **Succeeded**: Completed successfully - **Failed**: Execution failed - **Suspended**: Paused for external input ### **Project** Organizational unit grouping related workflows, variables, and integrations with team access control. ### **Resource** Manageable entities in Helios including organizations, projects, workflows, integrations, and variables. ### **Role** Permission level determining user actions. Three main types: User (view/use), Editor (create/modify), Admin (full control). ### **Service** External system that Helios integrates with (GitHub, Slack, APIs, databases, AI services). ### **Trigger** Event that initiates workflow execution. Types include manual, webhook, cron, and subworkflow. ### **Variable** Non-sensitive configuration values reusable across workflows with hierarchical scoping. **Variable Precedence:** 1. Workflow-level (highest) 2. User-level 3. Project-level 4. Organization-level (lowest) ### **Visibility** Access control setting determining resource discoverability. "Organization" (all members) or "Restricted" (explicit access only). ### **Webhook** HTTP endpoints receiving external events to trigger workflows with authentication and filtering support. ### **Workflow** Automated process defined as directed acyclic graph (DAG) of connected nodes. **Workflow States:** - **Draft**: Being designed - **Published**: Ready for execution - **Running**: Currently executing - **Completed**: Finished successfully - **Failed**: Execution failed - **Cancelled**: Manually stopped ### **Workflow Run** Specific execution instance with status, duration, trigger data, node results, and logs. --- ## Security Terms ### **Encryption** Data protection through cryptographic methods for data at rest, in transit, and envelope encryption. ### **OAuth** Industry-standard authorization protocol enabling secure authorization without password sharing. ### **RBAC (Role-Based Access Control)** Permission system assigning roles to users with hierarchical permissions and fine-grained access control. ### **SOC2 Type 2** Security certification validating comprehensive security controls and operational effectiveness. --- ## Integration Terms ### **API Version** Specific version of external service API with backward compatibility and feature support considerations. ### **Authentication Method** Different ways to authenticate with services (OAuth 2.0, API key, basic auth, bearer token, custom). ### **Rate Limiting** Restrictions on API call frequency with request limits, throttling, queuing, and backoff strategies. --- ## Related Documentation - [Quickstart Guide](/docs/quickstart) - Learn to use these concepts - [User Roles and Permissions](/docs/basics/roles-permissions) - Detailed role information - [Sharing Guide](/docs/basics/sharing) - Project and integration sharing - [Integrations](/docs/integrations) - Integration setup guides --- # Keyboard Shortcuts URL: https://www.heliosapp.com/docs/basics/keyboard-shortcuts Description: Essential keyboard shortcuts for efficient workflow automation --- title: "Keyboard Shortcuts" excerpt: "Master Helios with these essential keyboard shortcuts for efficient workflow automation" description: "Essential keyboard shortcuts for efficient workflow automation" icon: Keyboard createdAt: "2025-07-31" updatedAt: "2025-07-31" --- # Keyboard Shortcuts Master these essential shortcuts to boost your productivity in Helios. ## Global Navigation ### General | Shortcut | Action | |----------|--------| | `⌘ + /` | Show keyboard shortcuts | | `⌘ + B` | Toggle sidebar | | `⌘ + K` | Open command palette | | `/` | Focus search | | `⌥ + T` | Toggle theme | ### Quick Navigation | Shortcut | Action | |----------|--------| | `g` then `h` | Go to Helios dashboard | | `g` then `c` | Go to CI | | `g` then `s` | Go to Settings | | `g` then `i` | Go to Insights | ### Helios Navigation | Shortcut | Action | |----------|--------| | `h` then `w` | Go to workflow editor | | `h` then `v` | Go to variables | | `h` then `p` | Go to projects | | `h` then `i` | Go to integrations | ### Settings Navigation | Shortcut | Action | |----------|--------| | `s` then `a` | Go to account | | `s` then `b` | Go to billing | | `s` then `k` | Go to API keys | --- ## Workflow Canvas ### Workflow Actions | Shortcut | Action | |----------|--------| | `⌘ + S` | Save workflow | | `⌘ + ⇧ + E` | Toggle editor sidebar | | `⌘ + ⇧ + H` | Toggle history panel | | `⌘ + ⇧ + V` | Show variables modal | ### Canvas Control | Shortcut | Action | |----------|--------| | `⌘ + ⇧ + L` | Auto layout | | `⌘ + 0` | Zoom to fit | | `⌘ + +` | Zoom in | | `⌘ + -` | Zoom out | ### Node Operations | Shortcut | Action | |----------|--------| | `⌘ + A` | Select all nodes | | `Delete` | Delete selected node | | `⌘ + ⇧ + C` | Clone selected node | | `⌘ + Z` | Undo | | `⌘ + ⇧ + Z` | Redo | --- ## Variables ### General Actions | Shortcut | Action | |----------|--------| | `/` | Focus search | | `⌥ + N` | Create new variable | | `⌘ + I` | Import from file | | `⌘ + S` | Save changes | ### Navigation | Shortcut | Action | |----------|--------| | `↑` or `K` | Move up | | `↓` or `J` | Move down | | `X` | Toggle selection | | `⌘ + A` | Select all | | `⌘ + ⌫` | Delete selected | --- ## Form and Modal Controls ### Text Editing | Shortcut | Action | |----------|--------| | `Enter` | Save changes | | `Escape` | Cancel edit | | `Tab` | Next field | | `⇧ + Tab` | Previous field | ### Modal Dialogs | Shortcut | Action | |----------|--------| | `Escape` | Close modal | | `Enter` | Confirm action | ### Dropdowns | Shortcut | Action | |----------|--------| | `↑` / `↓` | Navigate options | | `Enter` | Select option | | `Escape` | Close dropdown | --- ## Resource Management ### Integrations | Shortcut | Action | |----------|--------| | `⌘ + N` | Create new integration | | `⌘ + R` | Refresh integration | | `⌘ + T` | Test connection | | `⌘ + O` | Start OAuth flow | | `⌘ + ⇧ + R` | Refresh token | ### Projects | Shortcut | Action | |----------|--------| | `⌘ + N` | Create new project | | `⌘ + E` | Edit project | | `Enter` | Open project | | `⌘ + ↑` | Go to parent | --- ## Accessibility ### Keyboard Navigation | Shortcut | Action | |----------|--------| | `Tab` | Focus next element | | `⇧ + Tab` | Focus previous element | | `Space` | Activate element | | `Arrow Keys` | Navigate UI | | `Home` | Go to beginning | | `End` | Go to end | | `Page Up` | Previous page | | `Page Down` | Next page | --- ## Platform Notes ### **Windows/Linux** Replace `⌘` with `Ctrl` in all shortcuts. ### **Browser Compatibility** - **Chrome/Edge**: All shortcuts work as documented - **Firefox**: `⌘ + K` may conflict with address bar - **Safari**: Enable "Press Tab to highlight each item" in Preferences > Advanced ## Pro Tips ### Workflow Building 1. Start with `⌘ + K` for quick access to any function 2. Use `⌘ + 0` to zoom to fit, then `⌘ + +/-` to zoom 3. Press `⌘ + ⇧ + L` to auto-arrange nodes 4. Save frequently with `⌘ + S` ### Navigation 1. Master two-key sequences: `g` + `h` for Helios, `h` + `w` for workflows 2. Use `⌘ + B` to toggle sidebar for more space 3. Use `/` to quickly find anything 4. Switch themes with `⌥ + T` based on lighting ### Variables 1. Use `⌥ + N` for quick variable creation 2. Navigate with `J` and `K` for speed 3. Use `⌘ + A` then `X` for bulk operations 4. Save with `⌘ + S` without clicking ## Troubleshooting ### Common Issues - **Shortcuts not working**: Check browser conflicts, reload page - **Platform differences**: Use `Ctrl` instead of `⌘` on Windows/Linux - **Mobile**: Keyboard shortcuts unavailable on mobile devices ### Need Help? Contact support@warpbuild.com if shortcuts aren't working as expected. --- # Roles and Permissions URL: https://www.heliosapp.com/docs/basics/roles-permissions Description: Understanding user roles and access control in Helios --- title: "Roles and Permissions" excerpt: "Understanding user roles, permissions, and access control in Helios" description: "Understanding user roles and access control in Helios" icon: Shield createdAt: "2025-07-31" updatedAt: "2025-07-31" --- # Roles and Permissions Helios uses role-based access control (RBAC) to manage user permissions across the platform with hierarchical organization and resource-specific roles. ## Role Types ### **Organization Roles** Base access level across the entire platform. **Member** - Default role for users - View organization-wide resources with "organization" visibility - Inherit base role for all resource-specific permissions **Admin** - Administrative privileges - Full access to all organization resources and settings - Manage user roles, organization settings, and billing - Override any resource-specific permissions ### **Resource-Specific Roles** Assigned for specific resources (projects, workflows, integrations). **User** - Basic consumption access - View resource details and configuration - Execute workflows and use integrations - Monitor results and logs **Editor** - Create and modify resources - All User permissions - Create, update, and delete resources - Cannot manage permissions or sharing **Admin** - Full control including permission management - All Editor permissions - Modify user access and sharing settings - Complete authority over the resource --- ## Permission System ### **Hierarchy** Permissions follow this structure: 1. **Organization Level** - Base permissions for all users 2. **Project Level** - Permissions for specific projects 3. **Workflow Level** - Permissions for individual workflows 4. **Integration Level** - Permissions for specific integrations ### **Resolution Priority** When determining access, Helios uses this order: 1. **Resource-specific role** (highest priority) 2. **Project-level role** (for resources within projects) 3. **Organization role** (base level) 4. **Default restriction** (lowest priority) --- ## Resource Permissions ### **Projects** #### User Role - View project details and workflows - Use project integrations - View variable/secret names (values hidden) #### Editor Role - Create workflows in project - Modify project details - Create/modify variables - Delete workflows #### Admin Role - Manage project permissions - Delete entire project - Full control over all project resources ### **Workflows** #### User Role - View workflow definition - Trigger execution - View runs and results - Access variables for execution #### Editor Role - Modify workflow definition - Update metadata - Create/modify workflow variables - Cancel running workflows #### Admin Role - Manage workflow permissions - Delete workflow - Full control over workflow settings ### **Integrations** #### User Role - Use integration in workflows - View integration metadata - Test connectivity #### Editor Role - Modify integration configuration - Update authentication credentials - Refresh OAuth tokens #### Admin Role - Manage integration permissions - Delete integration - Full control over integration settings --- ## Visibility and Sharing ### **Organization Visibility** - All members can see and use resource - Members inherit base organization role - Use for shared team resources ### **Restricted Visibility** - Only explicitly granted users can access - No default access - Use for private or sensitive resources --- ## Managing Roles ### Adding Users 1. Navigate to resource settings 2. Click sharing/permissions 3. Add user email or select from members 4. Assign appropriate role 5. Save changes ### Modifying Roles 1. Access resource permissions page 2. Find user in permissions list 3. Select new role from dropdown 4. Save changes ### Removing Access 1. Access resource permissions page 2. Find user in permissions list 3. Click remove/delete button 4. Confirm removal --- ## Best Practices ### **Role Assignment** - **Principle of least privilege**: Give minimum access needed - **Regular reviews**: Update permissions periodically - **Team alignment**: Match permissions to organizational structure - **Documentation**: Document permission rationale ### **Organization Setup** - **Limit admins**: Minimize number of organization admins - **Default policies**: Establish standard visibility and sharing policies - **Standardized onboarding**: Create consistent permission processes - **Proper offboarding**: Remove access when users leave ### **Resource Management** - **Consistent naming**: Use clear, consistent resource names - **Logical grouping**: Group related resources in projects - **Access reviews**: Regularly audit sensitive resource access - **Audit logging**: Monitor permission changes --- ## Security Considerations ### **Sensitive Data** - Limit integration credential access - Monitor audit trails - Ensure compliance requirements are met ### **Access Control** - Strong authentication with 2FA - SSO integration for centralized control - Automatic session timeouts - Regular access audits --- ## Troubleshooting ### Common Issues #### "Permission Denied" Errors - Verify required role for action - Ask admin to grant appropriate permissions - Check resource visibility settings #### Cannot See Resources - Check if resources are "restricted" visibility - Verify organization membership - Request explicit access from admin #### Cannot Share Resources - Admin role required for permission management - Check organization sharing policies - Verify resource type supports sharing ### Getting Help - Contact organization administrator - Email support@warpbuild.com for technical issues - Check [sharing documentation](/docs/basics/sharing) for detailed guidance --- ## Related Documentation - [Sharing Guide](/docs/basics/sharing) - Detailed sharing and collaboration - [Quickstart Guide](/docs/quickstart) - Project and workflow setup - [Key Concepts](/docs/basics/concepts) - Key terms and concepts --- # Sharing URL: https://www.heliosapp.com/docs/basics/sharing Description: Share projects and integrations with your team --- title: "Sharing" excerpt: "Learn how to share projects and integrations, manage access levels, and collaborate effectively in Helios" description: "Share projects and integrations with your team" icon: Share createdAt: "2025-07-31" updatedAt: "2025-07-31" --- # Sharing Helios provides flexible sharing to help teams collaborate effectively while maintaining security and control. ## Visibility Settings ### **Organization** Accessible to all organization members with automatic discovery and inheritance of base organization roles. **Use for:** - Shared development tools (GitHub, Slack integrations) - Common workflow templates - Organization-wide automation ### **Restricted** Only accessible to explicitly granted users with no default access. **Use for:** - Personal projects - Sensitive integrations (billing, customer data) - Experimental workflows - Client-specific automation --- ## Access Levels ### **User** Basic consumption access for shared resources. **Permissions:** - View resource details and configuration - Execute workflows and use integrations - Monitor execution results and logs **Cannot:** Modify or delete resources ### **Editor** Can create and modify shared resources. **Permissions:** - All User permissions - Create new resources - Update existing resources - Delete resources **Cannot:** Manage permissions or sharing settings ### **Admin** Full control including permission management. **Permissions:** - All Editor permissions - Modify user access - Change visibility settings - Complete authority over resource --- ## Sharing Projects ### Quick Setup 1. **Create project** with appropriate visibility 2. **Add team members** with suitable roles 3. **Configure resources** (workflows, variables, integrations) 4. **Document usage** for team clarity ### Example Project Configuration ```yaml project: name: "Team Automation Hub" visibility: "organization" default_role: "user" team_members: - email: "developer@company.com" role: "editor" - email: "manager@company.com" role: "user" - email: "lead@company.com" role: "admin" ``` ### Best Practices - **Clear ownership**: Designate project administrators - **Document purpose**: Explain project goals and usage - **Regular reviews**: Update access permissions periodically - **Principle of least privilege**: Grant minimum necessary access --- ## Sharing Integrations ### Organization-Wide Integration ```yaml integration: name: "GitHub - Organization" service: "github" visibility: "organization" description: "Shared GitHub integration for all teams" ``` ### Team-Specific Integration ```yaml integration: name: "Slack - Marketing Team" service: "slack" visibility: "restricted" users: - email: "marketing-lead@company.com" role: "admin" - email: "marketing-analyst@company.com" role: "user" ``` ### Security Considerations - **Separate credentials** for different teams - **Regular credential rotation** - **Audit access** to sensitive integrations - **Minimal permission scopes** --- ## Managing Access ### Adding Users 1. Navigate to resource settings 2. Click sharing/permissions 3. Add user email or select from members 4. Assign appropriate role 5. Save changes ### API Example ```javascript await fetch('/api/projects/project-id/permissions', { method: 'PUT', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ userRoles: [{ id: 'user-id', role: 'editor' }] }) }); ``` ### Bulk Access Management ```yaml bulk_access: team: "development" role: "editor" resources: - project: "api-automation" - project: "deployment-workflows" - integration: "github-main" ``` --- ## Collaboration Features ### Real-Time Collaboration - **Live editing**: Multiple users can edit simultaneously - **Change tracking**: All changes are tracked and attributed - **Version history**: Complete change history - **Conflict resolution**: Automatic handling of simultaneous edits ### Communication - **Comments**: Add comments to workflows and nodes - **Notifications**: Real-time change notifications - **Activity feed**: Recent activity on shared resources - **Mentions**: Tag team members in discussions ### Workflow Sharing - **Export/Import**: Share workflows as JSON files - **Templates**: Create reusable workflow templates - **Version control**: Track workflow versions --- ## Best Practices ### Security - **Regular access audits**: Review permissions periodically - **Least privilege**: Grant minimum necessary access - **Strong authentication**: Use 2FA and strong passwords - **Credential separation**: Use different service accounts ### Team Collaboration - **Clear documentation**: Document all shared resources - **Change notifications**: Set up alerts for important changes - **Naming conventions**: Use consistent resource naming - **Ownership clarity**: Assign clear resource ownership ### Organization Management - **Access policies**: Establish clear access policies - **Approval processes**: Implement approval for sensitive changes - **Compliance**: Ensure practices meet requirements - **Training**: Provide sharing best practices training --- ## Troubleshooting ### Common Issues #### Cannot Share Resource - Check if you have admin access - Verify organization sharing policies - Confirm resource type supports sharing #### User Cannot Access Resource - Verify user invitation was sent - Check user's role assignment - Confirm user is organization member - Verify resource visibility settings #### Permission Conflicts - Understand role hierarchy - Check for explicit permission overrides - Review permission inheritance ### Getting Help - Check [roles and permissions documentation](/docs/basics/roles-permissions) - Contact organization administrator - Email support@warpbuild.com for technical issues --- ## Related Documentation - [Roles and Permissions](/docs/basics/roles-permissions) - Detailed permissions info - [Quickstart Guide](/docs/quickstart) - Project setup basics - [Integrations](/docs/integrations) - Integration management - [Key Concepts](/docs/basics/concepts) - Key terms and concepts --- # Variables URL: https://www.heliosapp.com/docs/basics/variables Description: Manage variables in Helios --- title: "Variables" excerpt: "Manage variables in Helios" description: "Manage variables in Helios" icon: Key createdAt: "2025-07-31" updatedAt: "2025-07-31" --- # Variables --- # Authentication URL: https://www.heliosapp.com/docs/integrations/auth Description: How to authenticate with Helios --- title: "Authentication" excerpt: "How to authenticate integrations with Helios" description: "How to authenticate with Helios" icon: Key createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## API Key > Many third-party services-Stripe, Twilio, OpenAI, etc.-issue long-lived secret API keys. Helios lets you store those keys securely and attach them to Integration nodes in your workflows. For Helios Integration nodes, the key is injected automatically in API calls. ```http POST https://api.stripe.com/v1/customers Authorization: Bearer {{ connections.stripe_prod.key }} Content-Type: application/x-www-form-urlencoded ``` ### Rotating a key 1. Generate a **new key** in the provider's dashboard. 2. Open **Integrations** in Helios and edit your integration. Paste the new key and click **Save**. 3. Delete the old key in the provider. > Rotating immediately affects new workflow executions; in-flight retries that were already queued will continue with the previous key. --- ## Helios App with OAuth Flow Many services require an OAuth flow to be completed. Helios has a built-in OAuth app with all the integrations that can be used to authenticate with these services. ### When to use the built-in app - You need to connect common SaaS providers such as GitHub, Slack, Notion, Google Sheets, etc. - You do **not** want to manage client IDs, secrets, and refresh logic yourself. - The default set of scopes requested by Helios is sufficient for your use-case. ### Connecting an account 1. Create a new integration in Helios. 2. Select Helios App if it is available 3. A new tab will open in the browser to complete the OAuth flow. 4. Once the flow is complete, you will be redirected back to Helios. 5. The access and refresh tokens are now stored **encrypted** in Helios' vault and automatically refreshed when they expire. Once an account is linked you can reuse it across multiple workflows without re-authentication. --- ## Bring your own (BYO) OAuth App If you want to have more control over the app itself, you can create your own OAuth app. ### Why run your own app? - Custom branding on the consent screen (your logo and company name). - Lower the number of requested scopes or add beta scopes not yet supported by Helios. ### Set-up steps 1. Create an OAuth application at the provider (e.g. GitHub → Developer Settings → OAuth Apps). 2. Note the **Client ID** and **Client Secret**. 3. Perform the OAuth flow and note the token. 4. Inside the **Helios Dashboard → Integrations** page choose BYO App during creation. 5. Select the provider, paste the Client ID, Secret and Access Token, and click **Save**. 6. From now on, pick **My Own App** when connecting accounts in the workflow builder. --- # Database Security Best Practices URL: https://www.heliosapp.com/docs/integrations/databases-security Description: How to safely expose databases to Helios agents via SSH bastions, scoped credentials, and read replicas --- title: "Database Security Best Practices" excerpt: "Recommended hardening for database connections used by Helios agents and workflows" description: "How to safely expose databases to Helios agents via SSH bastions, scoped credentials, and read replicas" icon: ShieldCheck createdAt: "2026-05-10" updatedAt: "2026-05-10" draft: true --- > Draft. These are recommendations for customers connecting databases to Helios. The goal is to bound what an agent running in a sandboxed environment can do with the credentials you provide. ## Threat model When you connect a database to Helios, an LLM-driven agent running inside an isolated sandbox is granted enough access to authenticate to that database. The sandbox holds your SSH key (if you use a bastion) and your database credentials for as long as the session lives. While the sandbox is isolated from the public internet on the inbound side, the agent code running inside it is, by design, untrusted: prompt injection, jailbreaks, or hostile tool output could cause it to use those credentials in ways you didn't intend. The mitigations below are about **bounding the blast radius** of that access. None of them are required for the connection to work, but each one limits what an agent can do if it goes off-script. ## Use a read-only database role The simplest and highest-leverage mitigation. Create a role on your database that only has `SELECT` on the tables you want the agent to introspect, and use that role's credentials in the Helios connection. - The agent cannot write, update, delete, drop, or grant anything. - SQL injection in the agent's prompt cannot mutate data. - Schema introspection still works. For Postgres: ```sql CREATE ROLE helios_readonly LOGIN PASSWORD '...'; GRANT CONNECT ON DATABASE mydb TO helios_readonly; GRANT USAGE ON SCHEMA public TO helios_readonly; GRANT SELECT ON ALL TABLES IN SCHEMA public TO helios_readonly; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO helios_readonly; ``` ## Point Helios at a read replica Even better than a read-only role on the primary. Most managed Postgres services (RDS, Aurora, Supabase, Neon branches, Cloud SQL) let you create a read replica with a click. - Production writes are physically impossible from the replica's endpoint. - Expensive queries from the agent hit the replica, not your primary. - If the agent ever escalates beyond read-only (e.g. a database CVE), the damage is contained to the replica. Use the replica's host in the Helios connection string and a read-only role on that replica. ## Lock down your SSH bastion's `authorized_keys` If you connect via an SSH tunnel, the SSH key you give Helios works for anything the bastion can reach by default: other databases, internal HTTP services, shell access on the bastion itself. To limit that key to forwarding only to the configured database, prepend restriction options to the key's line in `~/.ssh/authorized_keys` on your bastion: ``` no-pty,no-agent-forwarding,permitopen="db.internal:5432" ssh-ed25519 AAAA... helios ``` Replace `db.internal:5432` with your database host and port. Now the bastion refuses any forward request to a different target, so even if an agent had its own SSH client it could not pivot to other hosts. Additional flags you may want depending on your bastion configuration: - `no-X11-forwarding` — disables X11 forwarding. - `no-port-forwarding` — too strict for our case; the tunnel relies on local-forward. - `command="/bin/false"` — refuses interactive shell commands. ## Use a dedicated SSH key Generate a fresh SSH keypair specifically for Helios, rather than reusing one of your developer keys. This makes auditing and revocation simple: rotate or remove the helios key on the bastion any time without affecting other access. ``` ssh-keygen -t ed25519 -f ~/.ssh/helios -C helios ``` Add the public key (`~/.ssh/helios.pub`) to your bastion's `authorized_keys` with the `permitopen` restriction above, and paste the private key into the Helios connection form. ## Restrict network reachability If your bastion sits behind a firewall and you can reach it from the public internet, consider also restricting which source IPs are allowed to dial port 22. Helios connects from a stable egress range; contact support for the current IP list. ## Audit logs All queries the agent runs are visible to you: - Database side: enable query logging on your database (`pg_stat_statements`, etc.) to record what was actually executed against your data. - Helios side: the agent session transcripts capture every tool call, including SQL strings. We recommend keeping database-side logging on for any production-data connection. ## Summary | Mitigation | Bounds | |---|---| | Read-only role | What the agent can do _at the database_ | | Read replica | Where the agent's writes (if any) can land | | `permitopen` on bastion | What the agent can reach _through_ the SSH key | | Dedicated SSH key | How quickly you can rotate / revoke | Layered together, the residual exposure is exactly what you chose to grant: read access to specific tables via a tunnel that can't pivot anywhere else. --- # Integrations URL: https://www.heliosapp.com/docs/integrations Description: Connect Helios to your favorite tools and services with 100+ pre-built integrations --- title: "Integrations" excerpt: "Connect Helios with your favorite tools and services through our comprehensive integration library" description: "Connect Helios to your favorite tools and services with 100+ pre-built integrations" icon: Puzzle createdAt: "2025-07-31" updatedAt: "2025-07-31" --- import { Callout } from 'fumadocs-ui/components/callout'; import { IntegrationsExplorer } from '@/components/docs/IntegrationsExplorer'; # Integrations Helios connects to 100+ popular services, enabling you to automate workflows across your entire tech stack. From communication tools to databases, we provide secure, reliable integrations that just work. **Getting Started:** Most integrations support OAuth for one-click setup. For services requiring API keys, we encrypt and store them securely using industry-standard practices. ## Browse Available Integrations Explore our complete integration library below. Use the search and filter tools to find exactly what you need. ## Authentication Methods Helios supports multiple authentication approaches to work with any service: ### OAuth (Recommended) Pre-built OAuth flows for popular services like Google, Microsoft, Slack, and GitHub. Simply click "Connect" and authorize Helios to access your account. **Benefits:** - One-click setup - No API keys to manage - Automatic token refresh - Fine-grained permissions By default, Helios OAuth apps take broad permissions for maximizing the capabilities accessible in workflows. You can use your own OAuth apps for any integration for controlling scopes and permissions. ### API Keys Direct API key authentication for services that support it. Perfect for services without OAuth or when you need programmatic access. **How it works:** 1. Generate an API key in your service's settings 2. Paste it into Helios during integration setup 3. We encrypt and store it securely 4. Use it across all your workflows ## Common Use Cases ### Marketing and Sales Automation Connect your marketing and sales tools (HubSpot, Salesforce, Instantly, Apollo.io) with communication tools (Slack, Teams) to completely automate outreach, follow-ups, and route conversations efficiently. ### Automate Customer Support Connect your support system (Zendesk, Intercom) with communication tools (Slack, Teams) to notify your team of urgent tickets and route conversations efficiently. You can also use Helios to create tickets in your support system. ### Sync Data Across Platforms Keep your CRM (Salesforce, HubSpot) in sync with your email marketing platform (Mailchimp, ConvertKit) and accounting software (QuickBooks, Stripe). ### Development Workflows Automate your development process by connecting GitHub with project management tools (Jira, Linear) and communication channels (Slack, Discord). ### E-commerce Operations Integrate your store (Shopify, WooCommerce) with inventory management, accounting, and customer support tools for seamless operations. ## Getting Help **Need a custom integration?** Our team can build custom connectors for your specific needs. [Contact our integration team](mailto:integrations@heliosapp.com) for more information. **Having trouble with an integration?** - Check our [integration guides](/docs/integrations/apps) for step-by-step setup instructions - Contact support through the in-app chat or [email us](mailto:support@heliosapp.com) Ready to get started? Head to your [Helios dashboard](https://app.heliosapp.com) and start connecting your first integration. --- # Expressions URL: https://www.heliosapp.com/docs/workflows/expressions --- title: "Expressions" excerpt: "Use JavaScript expressions to dynamically generate values" icon: Braces createdAt: "2025-07-30" updatedAt: "2025-07-30" --- import { ExternalLink } from "lucide-react"; import { CodeBlock } from "@/components/docs/CodeBlock"; Helios uses JavaScript expressions to dynamically generate and transform values from the data available in and out of the workflow. Anything inside double curly braces `{{ }}` is evaluated as JavaScript code. They can be used as standalone expressions: ```javascript {{ 1 + 2 }} {{ Math.max(10, 20, 30) }} {{ JSON.stringify({ key: "value" }) }} ``` or can be used within strings: ```javascript "Hello {{ node.nameGetter.output.name }}! The current time is {{ new Date().toISOString() }}" ``` ## Context Variables Expressions have access to the following context variables that provide data from your workflow: ### Trigger Data Every workflow run starts from a trigger. The trigger data is available in the `trigger` variable. The shape of the object depends on the trigger type as shown below. {/* We should generate the types and use this: https://fumadocs.dev/docs/ui/components/auto-type-table */} ) }, { value: "webhook", label: "Webhook", displayElement: ( ) }, { value: "manual", label: "Manual", displayElement: ( ) }, { value: "integration", label: "Integration", displayElement: ( ) } ]} defaultSelected="cron" /> **Example usage** ```javascript {{ trigger.type === "cron" ? "This is a cron trigger" : "This is not a cron trigger" }} {{ trigger.type === "manual" ? `Triggered by: ${trigger.triggeredByUser}` : "Not a manual trigger" }} {{ trigger.payload?.user?.email || "No email provided" }} {{ trigger.type === "integration" ? trigger.integrationId : trigger.triggerId }} {{ trigger.payload.items.filter(item => item.status === "active").map(item => item.name).join(", ") }} ``` ### Node runs All running and completed node runs are available in the `nodes` context variable. It is an object with the node label as the key and the node run as the value: ```js { "ai_1": NodeRun, "node-67890": NodeRun, myOtherNode: NodeRun, myGitHubNode: NodeRun } ``` Each `NodeRun` object is described according to its status: {/* We should generate the types and use this: https://fumadocs.dev/docs/ui/components/auto-type-table */} ) }, { value: "running", label: "Running", displayElement: ( ) }, { value: "succeeded", label: "Succeeded", displayElement: ( ) }, { value: "failed", label: "Failed", displayElement: ( ) }, { value: "cancelled", label: "Cancelled", displayElement: ( ) }, { value: "suspended", label: "Suspended", displayElement: ( ) } ]} defaultSelected="succeeded" /> You can find the specific `input`, `configuration`, and `output` properties for each node in the specific node documentation. **Example usage** ```javascript {{ nodes.httpRequest.output.data }} {{ nodes.jsonParser.output.parsed }} {{ nodes.filter.output.items }} {{ nodes['node-1'].output.result }} // Accessing nodes with hyphenated labels {{ nodes['node name'].output.items[1] }} // Accessing nodes with spaces in the label {{ nodes['node-2'].status }} {{ nodes['node-2'].error.message }} ``` You can technically access any node via `nodes.nodeLabel` but beware that the **node run may not be available yet**. For example, a parent node trying to access a child or a concurrently running node trying to access a sibling that hasn't started or finished yet. In these cases, the node run will be `undefined` and will fail accordingly. ```javascript {{ nodes.notYetStartedNode.output.data }} // This will fail {{ nodes.notYetStartedNode?.output?.data }} // This will return undefined ``` ### Variables Any [variables](/docs/basics/variables) accessible to the workflow are available in the `vars` context variable. ```javascript {{ vars.counter }} {{ vars.userEmail }} {{ vars.config.environment }} ``` > [!Note] > Secrets or sensitive variables are currently not supported and will be added in the future. ### Loop Context Nodes inside loops have access to iteration-specific data via the `loop` context variable: ```json { "loop": { "currentIteration": { "item": // The current item in the loop, "nodes": NodeRun[] // all the node runs in the loop, }, // The total number of iterations in the loop. // If an array was passed, this will be the length of the array. // If a number was passed, this will be the number of iterations. "totalIterations": 10, } } ``` **Example usage** ```javascript {{ loop.currentIteration.item.data }} {{ loop.currentIteration.nodes.previousNode.output }} {{ loop.totalIterations }} ``` ## Available Global Objects Expressions have access to the following standard JavaScript global objects: - **`Math`** - [MDN Docs ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math) ```javascript {{ Math.max(1, 2, 3) }} {{ Math.floor(3.7) }} {{ Math.random() }} ``` - **`Date`** - [MDN Docs ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) ```javascript {{ new Date().toISOString() }} {{ new Date().getTime() }} ``` - **`Array`** - [MDN Docs ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) ```javascript {{ Array.from({ length: 10 }, (_, i) => i) }} {{ Array.isArray([1, 2, 3]) }} ``` - **`JSON`** - [MDN Docs ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) ```javascript {{ JSON.stringify({ name: "John" }) }} {{ JSON.parse('{"key": "value"}') }} ``` - **`Number`** - [MDN Docs ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) ```javascript {{ Number.parseInt("123") }} {{ Number.parseFloat("123.45") }} ``` ## Examples ```javascript // Combine data from two parent nodes {{ { ...nodes.userProfile.output.data, ...nodes.userPreferences.output.data } }} // Get user's full name from profile data {{ `${nodes.userProfile.output.data.firstName} ${nodes.userProfile.output.data.lastName}` }} // Use fallback value if data is missing {{ nodes.userProfile.output.data?.nickname ?? nodes.userProfile.output.data?.firstName }} // Check if both nodes completed successfully {{ nodes.userProfile.status === "succeeded" && nodes.userPreferences.status === "succeeded" }} // Filter active items from a data source {{ nodes.dataFetcher.output.items.filter(item => item.status === "active") }} // Clean up text using regex {{ nodes.dataFetcher.output.data.description.replace(/\s+/g, ' ').trim() }} // Build API URL based on environment {{ `${vars.environment === "production" ? "https://api.prod.com" : "https://api.dev.com"}/v1/users` }} // Handle different trigger types {{ trigger.type === "manual" ? `Manual run by ${trigger.triggeredByUser}` : `Automated ${trigger.type} trigger` }} // Extract branch name from webhook ref {{ trigger.payload.ref?.match(/refs\/heads\/(.+)/)?.[1] ?? "main" }} // Safe access to potentially failed nodes {{ nodes.dataFetcher?.output?.data ?? [] }} // Check if workflow can proceed (in `if` node, e.g.) {{ nodes.dataFetcher?.status === "succeeded" && nodes.configLoader?.status !== "failed" }} // Get current timestamp {{ new Date().toISOString() }} // Array methods {{ nodes.dataFetcher.output.items.map(item => item.name).join(", ") }} {{ nodes.dataFetcher.output.items.find(item => item.id === vars.targetId) }} {{ nodes.dataFetcher.output.items.filter(item => item.status === "active").length }} // Object operations {{ { id: nodes.userProfile.output.data.id, fullName: `${nodes.userProfile.output.data.firstName} ${nodes.userProfile.output.data.lastName}`, isActive: nodes.userProfile.output.data.status === "active" } }} {{ { ...vars.defaultConfig, ...nodes.configLoader.output.config } }} // Conditional operators {{ vars.environment === "production" ? "prod-api.com" : "dev-api.com" }} {{ trigger.payload?.user?.email ?? vars.defaultEmail ?? "no-email@example.com" }} // JSON operations {{ JSON.parse(nodes.dataFetcher.output.data.config) }} {{ JSON.stringify({ id: nodes.userProfile.output.data.id, name: nodes.userProfile.output.data.name }) }} ``` ## Limitations - Expressions are code that **must evaluate to a value**. Javascript statements are not expressions. That means function, class, or variable declarations are not allowed. - Each expression **must be on a single line**. Multiline expressions are just treated as normal strings. - No access to external APIs or network calls apart from the available [global objects](#available-global-objects). - Limited to synchronous operations. --- # Pricing URL: https://www.heliosapp.com/docs/basics/pricing Description: Understanding Helios' flexible credit-based pricing model for workflows, LLMs, and premium nodes --- title: "Pricing" excerpt: "Understanding Helios' flexible credit-based pricing model" description: "Understanding Helios' flexible credit-based pricing model for workflows, LLMs, and premium nodes" icon: DollarSign createdAt: "2025-07-31" updatedAt: "2025-08-04" --- # Pricing Helios uses a flexible credit-based pricing model that scales with your usage. You only pay for what you use, with no minimum commitments or hidden fees. `Workflow Cost = Node Cost + LLM Cost` Nodes cost 0 credits by default. You can use your own API keys or OAuth integrations for saving credits. Helios is designed to be the most user-friendly way to build workflows and automate **everything**. We are not the cheapest, but we offer the most powerful and flexible platform with 100% coverage of the capabilities of the tools we integrate. ## LLM Costs Different AI models consume different amounts of credits per call. Almost every node in the workflow is agentic and invokes LLM calls to perform its task. ### Model Classes | Model Class | Credits per Call | Example Models | | ------------- | ---------------- | ------------------------------------------ | | **Class 1** | 1 credit | Gemini Flash, GPT-4o Mini | | **Class 2** | 5 credits | Gemini 2.5 Pro, Claude 4 Sonnet, OpenAI o3 | | **Class 3** | 20 credits | Claude-4 Opus | | **BYO Model** | 1 credit | Bring Your Own Model | ### Fallback Pricing For unrecognized or new models that are not yet classified, Helios applies a default rate of **10 credits per call** until the model is properly categorized. For detailed pricing of individual models, see our [Complete Model Pricing Guide](/docs/basics/pricing/model-pricing). Support for custom models and models from other providers is coming soon. Bring Your Own (BYO) models allow you to use your own API keys and pay the same low rate regardless of the model complexity. ## Node Costs Premium nodes provide advanced capabilities and consume credits based on their complexity: | Node Type | Credits per Use | Notes | | -------------------- | --------------- | ------------------------------------------- | | **Apollo** | 30 credits | Advanced data processing | | **AI/ML Models** | 1-20 credits | Same as LLM classes above, 1 credit for BYO | | **Crawler/Scrape** | 5 credits | Per page scraped | | **Search** | 2 credits | Per search query | | **Deep Research** | 60 credits | Comprehensive research tasks | | **BYO Premium Tool** | 1 credit | Using your own API keys | Use your own API keys or OAuth integrations for saving credits. ## Node Costs ### Free Nodes (0 Credits) - **Control nodes**: switch, if, merge, delay, etc. - **Integrations**: HubSpot, Notion, Resend, Slack, Stripe, and 1000+ others - **Basic operations**: Data transformation, filtering, routing ### Premium Nodes (Variable Credits) - **AI/ML inference**: GPT, Claude, Gemini, custom models - **Web scraping**: Automated data extraction - **Search APIs**: Web search, document search - **Advanced processing**: Document analysis, image processing - **Compute-intensive operations**: Complex calculations, data analysis ## How Credits Work Credits are consumed when your workflows execute. The cost depends on the complexity of your workflow and the resources it uses: - **Control nodes** (if, switch, merge, etc.): **0 credits** - **Integrations** (HubSpot, Notion, Slack, etc.): **0 credits** - **Premium nodes**: Variable credit cost based on complexity - **LLM calls**: Credit cost varies by model class ## Credit Tiers Our graduated pricing structure offers better rates as your usage grows: | Tier | Price per Credit | Credit Range | | -------------- | ---------------- | ---------------------- | | **Tier 1** | $0.0020 | 0 - 1,000,000 | | **Tier 2** | $0.0016 | 1,000,000 - 10,000,000 | | **Enterprise** | Custom pricing | 10,000,000+ | Credits are valid for 12 months from purchase and are consumed based on actual usage. --- Ready to get started? [Sign up for free](https://app.heliosapp.com) and get 5,000 credits to explore the platform. --- # Complete Model Pricing Guide URL: https://www.heliosapp.com/docs/basics/pricing/model-pricing Description: Complete reference for pricing of individual AI models including Claude, GPT, Gemini, and Perplexity models --- title: "Complete Model Pricing Guide" excerpt: "Detailed pricing for every LLM model available in Helios" description: "Complete reference for pricing of individual AI models including Claude, GPT, Gemini, and Perplexity models" icon: Calculator createdAt: "2025-08-04" updatedAt: "2025-08-04" --- # Complete Model Pricing Guide This page provides detailed pricing for every LLM model available in Helios. All models are categorized into three classes based on their capabilities and computational requirements. ## Credit Classes - **Class 1**: 1 credit per call - Fast, efficient models optimized for speed - **Class 2**: 5 credits per call - Balanced performance models for most use cases - **Class 3**: 20 credits per call - Most advanced models with superior reasoning capabilities - **BYO Models**: 1 credit per call - Use your own API keys with any model --- ## Anthropic Models (Claude) ### Class 3 Models (20 credits per call) | Model | Credits per Call | Description | | -------------------------- | ---------------- | ------------------------ | | `claude-opus-4-1-20250805` | 20 credits | Latest Claude Opus | | `claude-opus-4-20250514` | 20 credits | Claude 4 Opus | | `claude-3-opus-latest` | 20 credits | Claude 3 Opus (latest) | | `claude-3-opus-20240229` | 20 credits | Claude 3 Opus (Feb 2024) | ### Class 2 Models (5 credits per call) | Model | Credits per Call | Description | | ---------------------------- | ---------------- | ----------------------------- | | `claude-sonnet-4-20250514` | 5 credits | Latest Claude Sonnet | | `claude-3-7-sonnet-20250219` | 5 credits | Claude 3.7 Sonnet (Feb 2025) | | `claude-3-5-sonnet-latest` | 5 credits | Claude 3.5 Sonnet (latest) | | `claude-3-5-sonnet-20241022` | 5 credits | Claude 3.5 Sonnet (Oct 2024) | | `claude-3-5-sonnet-20240620` | 5 credits | Claude 3.5 Sonnet (June 2024) | | `claude-3-sonnet-20240229` | 5 credits | Claude 3 Sonnet (Feb 2024) | ### Class 1 Models (1 credit per call) | Model | Credits per Call | Description | | --------------------------- | ---------------- | --------------------------- | | `claude-3-5-haiku-latest` | 1 credit | Claude 3.5 Haiku (latest) | | `claude-3-5-haiku-20241022` | 1 credit | Claude 3.5 Haiku (Oct 2024) | | `claude-3-haiku-20240307` | 1 credit | Claude 3 Haiku (March 2024) | --- ## OpenAI Models (GPT) ### Class 3 Models (20 credits per call) | Model | Credits per Call | Description | | ----------------------- | ---------------- | ---------------------------- | | `o1` | 20 credits | OpenAI o1 (latest) | | `o1-2024-12-17` | 20 credits | OpenAI o1 (Dec 2024) | | `o1-preview` | 20 credits | OpenAI o1 Preview (latest) | | `o1-preview-2024-09-12` | 20 credits | OpenAI o1 Preview (Sep 2024) | | `o3` | 20 credits | OpenAI o3 (latest) | | `o3-2025-04-16` | 20 credits | OpenAI o3 (April 2025) | ### Class 2 Models (5 credits per call) | Model | Credits per Call | Description | | ---------------------------------- | ---------------- | ---------------------------------- | | `o1-mini` | 5 credits | OpenAI o1 Mini (latest) | | `o1-mini-2024-09-12` | 5 credits | OpenAI o1 Mini (Sep 2024) | | `o3-mini` | 5 credits | OpenAI o3 Mini (latest) | | `o3-mini-2025-01-31` | 5 credits | OpenAI o3 Mini (Jan 2025) | | `gpt-4.1` | 5 credits | GPT-4.1 (latest) | | `gpt-4.1-2025-04-14` | 5 credits | GPT-4.1 (April 2025) | | `gpt-4.1-mini` | 5 credits | GPT-4.1 Mini (latest) | | `gpt-4.1-mini-2025-04-14` | 5 credits | GPT-4.1 Mini (April 2025) | | `gpt-4o` | 5 credits | GPT-4o (latest) | | `gpt-4o-2024-05-13` | 5 credits | GPT-4o (May 2024) | | `gpt-4o-2024-08-06` | 5 credits | GPT-4o (Aug 2024) | | `gpt-4o-2024-11-20` | 5 credits | GPT-4o (Nov 2024) | | `gpt-4o-audio-preview` | 5 credits | GPT-4o Audio Preview (latest) | | `gpt-4o-audio-preview-2024-10-01` | 5 credits | GPT-4o Audio Preview (Oct 2024) | | `gpt-4o-audio-preview-2024-12-17` | 5 credits | GPT-4o Audio Preview (Dec 2024) | | `gpt-4o-search-preview` | 5 credits | GPT-4o Search Preview (latest) | | `gpt-4o-search-preview-2025-03-11` | 5 credits | GPT-4o Search Preview (March 2025) | | `gpt-4-turbo` | 5 credits | GPT-4 Turbo (latest) | | `gpt-4-turbo-2024-04-09` | 5 credits | GPT-4 Turbo (April 2024) | | `gpt-4-turbo-preview` | 5 credits | GPT-4 Turbo Preview | | `gpt-4-0125-preview` | 5 credits | GPT-4 (Jan 2025 Preview) | | `gpt-4-1106-preview` | 5 credits | GPT-4 (Nov 2023 Preview) | | `gpt-4` | 5 credits | GPT-4 (latest) | | `gpt-4-0613` | 5 credits | GPT-4 (June 2023) | | `gpt-4.5-preview` | 5 credits | GPT-4.5 Preview (latest) | | `gpt-4.5-preview-2025-02-27` | 5 credits | GPT-4.5 Preview (Feb 2025) | | `chatgpt-4o-latest` | 5 credits | ChatGPT-4o (latest) | | `computer-use-preview` | 5 credits | Computer Use Preview | ### Class 1 Models (1 credit per call) | Model | Credits per Call | Description | | --------------------------------------- | ---------------- | --------------------------------------- | | `o4-mini` | 1 credit | OpenAI o4 Mini (latest) | | `o4-mini-2025-04-16` | 1 credit | OpenAI o4 Mini (April 2025) | | `gpt-4.1-nano` | 1 credit | GPT-4.1 Nano (latest) | | `gpt-4.1-nano-2025-04-14` | 1 credit | GPT-4.1 Nano (April 2025) | | `gpt-4o-mini-search-preview` | 1 credit | GPT-4o Mini Search Preview (latest) | | `gpt-4o-mini-search-preview-2025-03-11` | 1 credit | GPT-4o Mini Search Preview (March 2025) | | `gpt-4o-mini` | 1 credit | GPT-4o Mini (latest) | | `gpt-4o-mini-2024-07-18` | 1 credit | GPT-4o Mini (July 2024) | | `gpt-3.5-turbo-0125` | 1 credit | GPT-3.5 Turbo (Jan 2025) | | `gpt-3.5-turbo` | 1 credit | GPT-3.5 Turbo (latest) | | `gpt-3.5-turbo-1106` | 1 credit | GPT-3.5 Turbo (Nov 2023) | | `codex-mini-latest` | 1 credit | Codex Mini (latest) | --- ## Google Models (Gemini) ### Class 2 Models (5 credits per call) | Model | Credits per Call | Description | | -------------------------- | ---------------- | ------------------------------ | | `gemini-1.5-pro` | 5 credits | Gemini 1.5 Pro (latest) | | `gemini-1.5-pro-latest` | 5 credits | Gemini 1.5 Pro (latest) | | `gemini-1.5-pro-001` | 5 credits | Gemini 1.5 Pro (001) | | `gemini-1.5-pro-002` | 5 credits | Gemini 1.5 Pro (002) | | `gemini-2.0-pro-exp-02-05` | 5 credits | Gemini 2.0 Pro Experimental | | `gemini-2.5-pro` | 5 credits | Gemini 2.5 Pro (latest) | | `gemini-2.5-pro-exp-03-25` | 5 credits | Gemini 2.5 Pro Experimental | | `gemini-exp-1206` | 5 credits | Gemini Experimental (Dec 2024) | | `gemma-3-27b-it` | 5 credits | Gemma 3 27B Instruction Tuned | ### Class 1 Models (1 credit per call) | Model | Credits per Call | Description | | ------------------------------------- | ---------------- | -------------------------------------- | | `gemini-1.5-flash` | 1 credit | Gemini 1.5 Flash (latest) | | `gemini-1.5-flash-latest` | 1 credit | Gemini 1.5 Flash (latest) | | `gemini-1.5-flash-001` | 1 credit | Gemini 1.5 Flash (001) | | `gemini-1.5-flash-002` | 1 credit | Gemini 1.5 Flash (002) | | `gemini-1.5-flash-8b` | 1 credit | Gemini 1.5 Flash 8B (latest) | | `gemini-1.5-flash-8b-latest` | 1 credit | Gemini 1.5 Flash 8B (latest) | | `gemini-1.5-flash-8b-001` | 1 credit | Gemini 1.5 Flash 8B (001) | | `gemini-2.0-flash` | 1 credit | Gemini 2.0 Flash (latest) | | `gemini-2.0-flash-001` | 1 credit | Gemini 2.0 Flash (001) | | `gemini-2.0-flash-live-001` | 1 credit | Gemini 2.0 Flash Live (001) | | `gemini-2.0-flash-lite` | 1 credit | Gemini 2.0 Flash Lite | | `gemini-2.0-flash-thinking-exp-01-21` | 1 credit | Gemini 2.0 Flash Thinking Experimental | | `gemini-2.0-flash-exp` | 1 credit | Gemini 2.0 Flash Experimental | | `gemini-2.5-flash` | 1 credit | Gemini 2.5 Flash (latest) | | `gemini-2.5-flash-lite` | 1 credit | Gemini 2.5 Flash Lite | | `gemini-2.5-flash-preview-04-17` | 1 credit | Gemini 2.5 Flash Preview (April 2025) | | `gemma-3-12b-it` | 1 credit | Gemma 3 12B Instruction Tuned | --- ## Perplexity Models (Sonar) ### Class 3 Models (20 credits per call) | Model | Credits per Call | Description | | --------------------- | ---------------- | ------------------- | | `sonar-reasoning-pro` | 20 credits | Sonar Reasoning Pro | ### Class 2 Models (5 credits per call) | Model | Credits per Call | Description | | --------------------- | ---------------- | ------------------- | | `sonar-deep-research` | 5 credits | Sonar Deep Research | | `sonar-reasoning` | 5 credits | Sonar Reasoning | | `sonar-pro` | 5 credits | Sonar Pro | ### Class 1 Models (1 credit per call) | Model | Credits per Call | Description | | ------- | ---------------- | ------------- | | `sonar` | 1 credit | Sonar (basic) | --- ## Bring Your Own (BYO) Models When you use your own API keys with any model provider, you pay a flat rate of **1 credit per call** regardless of the model's complexity or class. This provides significant cost savings for high-volume usage. ### Supported BYO Providers - **Anthropic**: Use your own Anthropic API key - **OpenAI**: Use your own OpenAI API key - **Google**: Use your own Google AI API key - **Perplexity**: Use your own Perplexity API key - **Custom providers**: Connect your own model endpoints BYO models always cost 1 credit per call, making them the most cost-effective option for frequent usage. --- ## Cost Calculator To estimate your workflow costs: 1. **Identify your models**: Choose which models your workflow will use 2. **Estimate calls**: Count how many LLM calls your workflow makes 3. **Calculate total**: Multiply calls by credits per model 4. **Add node costs**: Include any premium node costs from the [main pricing page](./) ### Example Calculation A workflow that makes: - 10 calls to `gpt-4o` (5 credits each) = 50 credits - 5 calls to `claude-3-5-haiku-latest` (1 credit each) = 5 credits - 1 Deep Research node = 60 credits - **Total**: 115 credits per workflow execution At Tier 1 pricing ($0.0020 per credit), this would cost $0.23 per execution. --- Ready to get started? [Sign up for free](https://app.heliosapp.com) and get 5,000 credits to explore the platform with any of these models. --- # Apify URL: https://www.heliosapp.com/docs/integrations/apps/apify Description: The Apify integration lets you programmatically manage actors, automate web scraping tasks, handle datasets, and integrate with Apify's automation platform directly from Helios. --- title: "Apify" excerpt: "Automate web scraping, data extraction, and automation workflows with Apify from your Helios workflows." description: "The Apify integration lets you programmatically manage actors, automate web scraping tasks, handle datasets, and integrate with Apify's automation platform directly from Helios." icon: /static/img/assets/apify.svg createdAt: "2025-09-26" updatedAt: "2025-09-26" --- ## Authentication | Method | Type | Description | | --------------------- | ----------- | ------------------------------------------------ | | Personal Access Token | Token-based | Simple token authentication with full API access | ### Personal Access Token The simplest and most secure way to connect Apify is using a Personal Access Token (PAT) for server-to-server authentication. #### Setup Steps 1. Go to your [Apify Console](https://console.apify.com/) 2. Navigate to **Settings → Integrations → Personal Access Tokens** 3. Click **Create new token** 4. Provide a descriptive name for your token 5. Select the appropriate scopes for your use case 6. Click **Create token** 7. Copy the generated token and paste it into Helios 8. Save your integration Store your Personal Access Token securely. It provides full access to your Apify account and cannot be recovered once lost. #### Common Scopes - `actor:read` - Read actor information and configurations - `actor:write` - Create, modify, and delete actors - `run:read` - Read actor runs and their details - `run:write` - Start, stop, and manage actor runs - `dataset:read` - Access dataset contents and metadata - `dataset:write` - Create, modify, and delete datasets - `storage:read` - Read from key-value stores and request queues - `storage:write` - Write to key-value stores and request queues ## Functionality The Apify integration lets your workflows **manage web scraping actors, automate data extraction tasks, handle datasets, and integrate with Apify's automation platform** without writing custom code. | Category | Features | | ---------------------- | ------------------------------------------------------------------------------------------- | | Actor Management | Run Actors, Get Actor Info, List Actors, Get Run Details, Abort Runs | | Data Management | Get Dataset Items, Download Datasets, Get Dataset Info, List Datasets, Create Datasets | | Storage Operations | Key-Value Store Operations, Request Queue Management, Dataset Operations, File Storage | | Monitoring & Analytics | Run Statistics, Usage Analytics, Error Monitoring, Performance Metrics, Billing Information | | Automation Workflows | Scheduled Runs, Webhook Triggers, Chain Multiple Actors, Data Pipeline Automation | | Content Extraction | Web Scraping, Data Mining, Content Monitoring, API Integration, Social Media Scraping | ## API Versions The integration supports the Apify API: ### Apify API v2 Current stable API version with full feature support for actor management, data extraction, and automation workflows. ## Rate Limits Apify API has the following rate limits: - **Free plan**: 1,000 API calls per month - **Personal plan**: 10,000 API calls per month - **Team plan**: 100,000 API calls per month - **Enterprise**: Custom limits Rate limits are applied per account and reset monthly. Monitor your usage in the Apify Console. ## Common Use Cases | Use Case | Description | | ---------------------- | -------------------------------------------------------------- | | E-commerce Monitoring | Track product prices, availability, and competitor analysis | | Lead Generation | Extract contact information from websites and social platforms | | Content Aggregation | Collect news articles, blog posts, and social media content | | SEO Analysis | Monitor search rankings, backlinks, and competitor SEO metrics | | Social Media Analytics | Track mentions, engagement, and sentiment analysis | | Real Estate Data | Extract property listings, pricing trends, and market analysis | --- # Apollo URL: https://www.heliosapp.com/docs/integrations/apps/apollo Description: The Apollo.io integration lets you programmatically search for prospects, enrich contact data, manage sequences, and automate sales workflows directly from Helios. --- title: "Apollo" excerpt: "Automate lead generation, prospecting, and sales outreach with Apollo.io from your Helios workflows." description: "The Apollo.io integration lets you programmatically search for prospects, enrich contact data, manage sequences, and automate sales workflows directly from Helios." icon: /static/img/assets/apollo-light.svg createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## Authentication | Method | Type | Description | | ------------------------------ | ---------------- | ----------------------------------------------- | | Helios OAuth App (Recommended) | OAuth 2.0 | User-specific access with enhanced security | | API Key | Server-to-Server | Simple authentication with your account API key | | BYO OAuth App | OAuth 2.0 | Custom OAuth app for enterprise requirements | ### ✅ Helios OAuth App (Recommended) The Helios OAuth App provides user-specific access with enhanced security. ### API Key The simplest way to connect Apollo.io is using your API key for server-to-server authentication, if you already have one. #### Setup Steps 1. Go to your [Apollo.io account](https://app.apollo.io/) 2. Go to **Settings → Integrations & API → API** 3. Copy your API key 4. Paste the API key into Helios and save your integration #### Common Scopes - `read:contacts` - Read contacts - `write:contacts` - Write contacts - `read:sequences` - Read sequences - `write:sequences` - Write sequences ### BYO OAuth App Create your own Apollo.io OAuth application for enterprise requirements or custom scope management. > Learn more about creating Apollo.io apps in the [Apollo.io documentation](https://apolloio.github.io/apollo-api-docs/). ## Functionality The Apollo.io integration lets your workflows **search for prospects, enrich contact data, manage email sequences, and automate sales processes** without writing custom code. | Category | Features | | -------------------------- | --------------------------------------------------------------------------------------------- | | Prospecting & Search | People Search, Company Search, Contact Enrichment, Email Finder, Phone Number Discovery | | Contact Management | Contact Creation, Contact Updates, Contact Lists, Data Verification, Contact Notes | | Email Sequences & Outreach | Sequence Management, Sequence Enrollment, Email Sending, Template Management, Bounce Handling | | Analytics & Reporting | Sequence Analytics, Contact Engagement, Campaign Performance, Data Export | | Contact Enrichment | Professional Information, Company Data, Contact Details, Technographics, Intent Data | | Company Enrichment | Firmographics, Financial Data, Technology Stack, Employee Information, News and Events | --- # Attio URL: https://www.heliosapp.com/docs/integrations/apps/attio Description: The Attio integration lets you programmatically manage CRM records, automate sales processes, track interactions, and sync data with Attio's customizable platform directly from Helios. --- title: "Attio" excerpt: "Manage contacts, companies, deals, and automate your CRM workflows with Attio from Helios." description: "The Attio integration lets you programmatically manage CRM records, automate sales processes, track interactions, and sync data with Attio's customizable platform directly from Helios." icon: /static/img/assets/attio-light.svg createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## How to connect | Method | Type | Description | | ------------------------------ | --------- | ----------------------------------------------- | | Helios Attio App (Recommended) | OAuth 2.0 | Pre-configured scopes for common CRM operations | | BYO Attio App | OAuth 2.0 | Custom OAuth app for enterprise requirements | #### Helios Attio App (Recommended) The Helios Attio App provides a seamless setup with pre-configured permissions for most common CRM use cases. ##### Permissions The Helios Attio App includes scopes for: **Core CRM Objects:** - Read and write contacts, companies, deals, and custom objects - Manage lists and list entries - Access public and private collections **Collaboration:** - Read and write comments, tasks, and notes - Access meeting and call recording data **Administration:** - User management and workspace configuration - Webhook management for real-time event delivery #### BYO Attio App Create your own Attio OAuth application for custom control over scopes and branding. ##### Setup Steps 1. Go to [Attio Developer Settings](https://app.attio.com) 2. Create a new OAuth application 3. Configure the required scopes for your use case 4. Copy the client ID and client secret into Helios > Learn more about creating Attio apps in the [Attio API documentation](https://developers.attio.com). ## Functionality The Attio integration lets your workflows **manage CRM records, automate sales pipelines, track customer interactions, and access workspace data** without writing custom code. | Category | Features | | --------------- | --------------------------------------------------------------- | | CRM Operations | Contacts, Companies, Deals, Custom Objects, Lists, List Entries | | Collaboration | Comments, Tasks, Notes, Meetings, Call Recordings | | Data Management | Record Merging, Attribute Management, Object Configuration | ## Real-time Events | Event Category | Event Types | | --------------------- | ------------------------------------------ | | Record Events | Created, updated, merged, deleted | | List Events | List created, updated, deleted | | List Entry Events | Entry added, updated, removed | | Note Events | Created, updated, deleted, content updated | | Task Events | Created, updated, deleted | | Comment Events | Created, resolved, unresolved, deleted | | Call Recording Events | Recording completed | | Workspace Events | Member added | --- # Discord URL: https://www.heliosapp.com/docs/integrations/apps/discord Description: The Discord integration lets you programmatically interact with Discord to read/send messages, manage channels, automate community interactions and much more. --- title: "Discord" excerpt: "Send messages, manage channels, and automate community interactions with Discord from your Helios workflows." description: "The Discord integration lets you programmatically interact with Discord to read/send messages, manage channels, automate community interactions and much more." icon: Si-Discord createdAt: "2025-09-29" updatedAt: "2025-09-29" --- import { Step, Steps } from 'fumadocs-ui/components/steps'; import { Callout } from 'fumadocs-ui/components/callout'; ## How to connect | Method | Type | Description | | --------------- | --------- | --------------------------------------------------------------------- | | BYO Discord Bot | Bot Token | Custom app with complete control over the permission set and branding | Helios bot is not supported for Discord due to permissions limitations. #### BYO Discord Bot Create your own Discord bot application for interacting with Discord through Helios. ##### Setup Steps Go to [Discord Developer Portal](https://discord.com/developers/applications). Click **New Application** and give it a name. ![New Application](./img/discord_setup_step_2.png) Navigate to the 'Installation' section and scroll to the bottom of the page to the 'Default Install Settings'. ![Default Install Settings](./img/discord_setup_step_3.png) Click on the Guild Install scope dropdown > Select 'bot' from the scope list. ![Default Install Settings - Update Guild Install](./img/discord_setup_step_4.png) A new permissions section will show up for the Guild Install. Click on the dropdown and select the appropriate permissions for your bot. You can either give the bot exact permission set or you can give it 'Administrator' permission. 'Administrator' permission has complete access to the Discord API. Finally, click 'Save Changes'. ![Default Install Settings - Add bot permissions](./img/discord_setup_step_5.png) Discord should give you a confirmation at the top of the page. ![Default Install Settings - Save confirmation](./img/discord_setup_step_6.png) Copy and paste the install link in your browser. ![Install screen](./img/discord_setup_step_7.png) Click on 'Add to Server'. Select your server. Click on 'Continue'. ![Install screen - Select Server](./img/discord_setup_step_8.png) Click on 'Authorize' on the next screen. ![Install screen - Authorize](./img/discord_setup_step_9.png) Discord should redirect you to a success screen here. ![Install screen - Success](./img/discord_setup_step_10.png) Close the tab and go back to your application settings. Navigate to the OAuth2 section. Copy the 'Client ID' from this page. ![Client credentials](./img/discord_setup_step_11.png) Navigate to the [create Discord integration](http://localhost:3000/helios/integrations/discord?modal=true&mode=create) page. Give the integration a name. Paste your client ID. Navigate back to your Discord application page and click on 'Reset Secret' under the 'Client Secret' section. This will open a verification popup. ![Client credentials - Discord Client Secret Popup](./img/discord_setup_step_13.png) Click on 'Yes, do it!'. Discord may ask you to perform additional steps for verification like password verification. It should show a newly generated secret in the 'Client Secret' section. Please copy it. The client secret here is sensitive information, do not share this with anyone. We show the token here for simplicity; the token shown here is revoked and is no longer in use. ![Client credentials - Discord Client Secret Gen](./img/discord_setup_step_14.png) Navigate back to the 'Create Discord Integration' tab on Helios and paste the token in the Client Secret section. Navigate back to the Discord applications tab > Go to the Bot section. Generate and copy the 'Token'. You'll need to follow steps similar to the 'Client Secret' generation. ![Bot token - Discord Bot Generate](./img/discord_setup_step_16.png) Copy the token and navigate back to the 'Create Discord Integration' tab on Helios. Paste the Bot Token and click on 'Test Connection' to validate. Click on 'Create Integration'. Learn more about creating Discord bots in the [Discord documentation](https://discord.com/developers/docs/quick-start/overview-of-apps). ## Functionality The Discord integration lets your workflows **send messages, manage channels, handle interactions, and automate community management** without writing custom code. | Category | Features | | ----------------- | ------------------------------------------------------------- | | Core Capabilities | Messaging, Channel Management, User Operations | | Message Features | Rich Embeds, Mentions, Threads, Reactions, Scheduled Messages | ## Real-time Events ### Webhook Setup Discord in Helios supports 'Interaction API'. Interactions are the way Discord sends Helios information about slash commands which you can configure to trigger your workflows. Go to [Discord integrations page](http://localhost:3000/helios/integrations/discord) > Click 'Manage' for your Discord integration > Click 'Advanced Configuration' > Copy the URL > Go to Discord Developer Portal > General Information > Paste the URL in 'Interactions Endpoint URL'. Don't click on 'Save Changes' yet on Discord. Go to Discord Developer Portal > General Information > Copy the Public Key > Paste in the public key section in the Manage Discord modal in Helios > Click 'Save Changes' on Helios. Go back to the Discord Developer Portal > Click 'Save Changes'. This configures Discord to send notifications to Helios. ### Setup slash commands Discord integration supports slash commands as a way for directly interacting with Helios from Discord. These commands are available to you in a Discord server when you type / (slash). Since these are custom commands, they need to be registered per Discord application + server. For example, if we want to create a command which sends a message to Helios like `/helios `, we could use the following curl command to register this command to our server. ```bash curl -X POST \ "https://discord.com/api/v10/applications//guilds//commands" \ -H "Authorization: Bot " \ -H "Content-Type: application/json" \ -d '{ "name": "helios", "description": "Ask Helios something", "options": [ { "name": "statement", "description": "What you want to tell or ask Helios", "type": 3, "required": true } ] }' ``` Fetching the details: - `application_id`: Application ID can be located in Discord application settings > General Information > Application ID section. - `guild_id`: A Discord guild is a Discord server. This is your Discord server ID. To fetch the guild_id you need to enable developer mode in Discord. To enable developer mode, go to Discord > User Settings (click on the gear icon) > Advanced (Under App Settings) > Enable Developer Mode. Navigate back to Discord home screen > Right click on the server icon > Click 'Copy Server ID'. - `bot_token`: The token for the Discord bot. After updating the values and running the curl command, you should be able to see a `/helios` command in your server. Do a test run, say hello. ```bash /helios statement:hello ``` This should return an acknowledgment message to you. You can customize this further and use slash commands to trigger various workflows in Helios. --- # GitHub URL: https://www.heliosapp.com/docs/integrations/apps/github Description: The GitHub integration lets you programmatically manage repositories, automate pull request workflows, handle issues, manage CI/CD pipelines, and integrate with GitHub's development platform directly from Helios. --- title: "GitHub" excerpt: "Automate repository management, pull requests, issues, and CI/CD workflows with GitHub from your Helios workflows." description: "The GitHub integration lets you programmatically manage repositories, automate pull request workflows, handle issues, manage CI/CD pipelines, and integrate with GitHub's development platform directly from Helios." icon: Si-Github createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## Authentication | Method | Type | Description | | ------------------------------- | ----------- | ----------------------------------------------- | | Helios GitHub App (Recommended) | GitHub App | Seamless integration with automatic permissions | | Personal Access Token | Token-based | Simple token authentication with custom scopes | | BYO GitHub App | GitHub App | Custom GitHub App for enterprise requirements | ### ✅ Helios GitHub App (Recommended) The Helios GitHub App provides seamless integration with automatic permission management and webhook configuration. ### Personal Access Token Another simple way to connect GitHub is using a Personal Access Token (PAT) with the required scopes for your use case. #### Setup Steps 1. Go to [GitHub Settings → Developer settings → Personal access tokens](https://github.com/settings/tokens) 2. Click **Generate new token → Generate new token (classic)** 3. Select the required scopes for your workflows 4. Copy the generated token and paste it into Helios 5. Save your integration #### Common Scopes - `repo` - Full access to repositories - `public_repo` - Access to public repositories only - `workflow` - Update GitHub Actions workflows - `read:org` - Read organization membership - `user:email` - Access user email addresses ### BYO GitHub App Create your own GitHub App for enterprise requirements or custom permission management. #### Setup Steps 1. Go to [GitHub Settings → Developer settings → GitHub Apps](https://github.com/settings/apps) 2. Click **New GitHub App** 3. Configure app permissions, webhook URL, and events 4. Generate and download a private key 5. Install the app on your repositories 6. Configure the app in Helios with app ID, installation ID, and private key Learn more about creating GitHub Apps in the [GitHub documentation](https://docs.github.com/en/developers/apps/building-github-apps). ## Functionality The GitHub integration lets your workflows **manage repositories, automate development workflows, handle CI/CD processes, and integrate with GitHub's ecosystem** without writing custom code. | Category | Features | | ---------------------------- | ------------------------------------------------------------------------------------------------------------ | | Repository Management | Code Operations, Branch Management, Tag and Release Management, Repository Settings, Collaborator Management | | Issue and Project Management | Issues, Labels, Milestones, Projects, Discussions | | Pull Request Automation | PR Management, Code Reviews, Status Checks, Comments, Draft PRs | | CI/CD Integration | GitHub Actions, Deployment Status, Check Runs, Artifacts | ## Webhook Events | Event Category | Event Types | | ------------------- | ----------------------------------------------------------------- | | Repository Events | Push, Branch, Tag, Repository | | Issue Events | Issues, Issue Comments, Milestones | | Pull Request Events | Pull Requests, Pull Request Reviews, Pull Request Review Comments | | Workflow Events | Workflow Run, Workflow Job, Check Run | | Security Events | Security Advisory, Vulnerability Alert, Code Scanning | ## API Versions The integration supports multiple GitHub API versions: ### GitHub.com (2022-11-28) Latest API version for GitHub.com with all current features. ### GitHub Enterprise Cloud (GHEC) API version for GitHub Enterprise Cloud with enterprise-specific features. ### GitHub Enterprise Server (GHES 3.17) API version for self-hosted GitHub Enterprise Server instances. ## Rate Limits // TODO: Add the link to GitHub rate limits --- # Google Docs URL: https://www.heliosapp.com/docs/integrations/apps/google-docs Description: The Google Docs integration lets you programmatically create and edit documents, manage content, and automate document workflows directly from Helios. --- title: "Google Docs" excerpt: "Create, edit, and manage documents with real-time collaboration using Google Docs from your Helios workflows." description: "The Google Docs integration lets you programmatically create and edit documents, manage content, and automate document workflows directly from Helios." icon: /static/img/assets/google-docs-light.svg createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## How to connect | Method | Type | Description | | ------------------------------------ | --------- | --------------------------------------------- | | Helios Google Docs App (Recommended) | OAuth 2.0 | Pre-configured scopes for document operations | | BYO Google Docs App | OAuth 2.0 | Custom OAuth app for enterprise requirements | #### Helios Google Docs App (Recommended) The Helios Google Docs App provides seamless setup with pre-configured permissions for most common document use cases. ##### Permissions The Helios Google Docs App includes scopes for: - Read and write Google Docs documents - Read-only access to Google Drive for document discovery - File-level access to Drive for document management #### BYO Google Docs App Create your own Google OAuth application for custom control over scopes and branding. ##### Setup Steps 1. Go to [Google Cloud Console](https://console.cloud.google.com/) 2. Create a new project or select an existing one 3. Enable the Google Docs API 4. Configure the OAuth consent screen 5. Create OAuth 2.0 credentials (client ID and client secret) 6. Add the Helios redirect URI to your OAuth client 7. Copy the client ID and client secret into Helios > Learn more in the [Google Docs API documentation](https://developers.google.com/docs/api). ## Functionality The Google Docs integration lets your workflows **create documents, edit content, manage formatting, and automate document-based processes** without writing custom code. | Category | Features | | ------------------- | ---------------------------------- | | Document Operations | Create, read, update documents | | Content Management | Text insertion, formatting, styles | | Collaboration | Comments, suggestions, sharing | --- # Google Drive URL: https://www.heliosapp.com/docs/integrations/apps/google-drive Description: The Google Drive integration lets you programmatically upload, organize, and manage files and folders, and automate file-based workflows directly from Helios. --- title: "Google Drive" excerpt: "Store, share, and manage files and folders with Google Drive from your Helios workflows." description: "The Google Drive integration lets you programmatically upload, organize, and manage files and folders, and automate file-based workflows directly from Helios." icon: Si-Googledrive createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## How to connect | Method | Type | Description | | ------------------------------------- | --------- | ---------------------------------------------------- | | Helios Google Drive App (Recommended) | OAuth 2.0 | Pre-configured scopes for file and folder operations | | BYO Google Drive App | OAuth 2.0 | Custom OAuth app for enterprise requirements | #### Helios Google Drive App (Recommended) The Helios Google Drive App provides seamless setup with pre-configured permissions for most common file management use cases. ##### Permissions The Helios Google Drive App includes scopes for: - Read and manage files and folders - Access file metadata - Read-only access to photos and Meet recordings - App data folder management #### BYO Google Drive App Create your own Google OAuth application for custom control over scopes and branding. ##### Setup Steps 1. Go to [Google Cloud Console](https://console.cloud.google.com/) 2. Create a new project or select an existing one 3. Enable the Google Drive API 4. Configure the OAuth consent screen 5. Create OAuth 2.0 credentials (client ID and client secret) 6. Add the Helios redirect URI to your OAuth client 7. Copy the client ID and client secret into Helios > Learn more in the [Google Drive API documentation](https://developers.google.com/drive/api). ## Functionality The Google Drive integration lets your workflows **upload files, organize folders, manage permissions, and automate file-based processes** without writing custom code. | Category | Features | | ----------------- | -------------------------------------------- | | File Operations | Upload, download, copy, move, delete files | | Folder Management | Create, organize, list folder contents | | Metadata | Read and update file metadata, search files | | Sharing | Manage file permissions and sharing settings | --- # Gmail URL: https://www.heliosapp.com/docs/integrations/apps/google-gmail Description: The Gmail integration lets you programmatically send and receive emails, manage labels, organize your inbox, and automate email-based workflows directly from Helios. --- title: "Gmail" excerpt: "Send, receive, and manage emails with Gmail from your Helios workflows." description: "The Gmail integration lets you programmatically send and receive emails, manage labels, organize your inbox, and automate email-based workflows directly from Helios." icon: /static/img/assets/gmail-light.svg createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## How to connect | Method | Type | Description | | ------------------------------ | --------- | -------------------------------------------- | | Helios Gmail App (Recommended) | OAuth 2.0 | Pre-configured scopes for email operations | | BYO Gmail App | OAuth 2.0 | Custom OAuth app for enterprise requirements | #### Helios Gmail App (Recommended) The Helios Gmail App provides seamless setup with pre-configured permissions for most common email use cases. ##### Permissions The Helios Gmail App includes scopes for: - Compose and send emails - Read and modify emails and threads - Manage labels and filters - Access basic email settings and sharing configuration #### BYO Gmail App Create your own Google OAuth application for custom control over scopes and branding. ##### Setup Steps 1. Go to [Google Cloud Console](https://console.cloud.google.com/) 2. Create a new project or select an existing one 3. Enable the Gmail API 4. Configure the OAuth consent screen 5. Create OAuth 2.0 credentials (client ID and client secret) 6. Add the Helios redirect URI to your OAuth client 7. Copy the client ID and client secret into Helios > Learn more in the [Gmail API documentation](https://developers.google.com/gmail/api). ## Functionality The Gmail integration lets your workflows **send emails, manage your inbox, organize with labels, and automate email-based processes** without writing custom code. | Category | Features | | ---------------- | ------------------------------------------------- | | Email Operations | Send, read, reply, forward, delete emails | | Organization | Labels, filters, threads, search | | Settings | Email signatures, forwarding, vacation responders | ## Real-time Events | Event Category | Event Types | | -------------- | ------------------------------------------------------ | | Message Events | Messages added, messages deleted | | Label Events | Labels added to messages, labels removed from messages | --- # Google Sheets URL: https://www.heliosapp.com/docs/integrations/apps/google-sheets Description: The Google Sheets integration lets you programmatically create and edit spreadsheets, manage data, and automate spreadsheet-based workflows directly from Helios. --- title: "Google Sheets" excerpt: "Create, edit, and analyze spreadsheet data with Google Sheets from your Helios workflows." description: "The Google Sheets integration lets you programmatically create and edit spreadsheets, manage data, and automate spreadsheet-based workflows directly from Helios." icon: /static/img/assets/google-sheets-light.svg createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## How to connect | Method | Type | Description | | -------------------------------------- | --------- | ------------------------------------------------ | | Helios Google Sheets App (Recommended) | OAuth 2.0 | Pre-configured scopes for spreadsheet operations | | BYO Google Sheets App | OAuth 2.0 | Custom OAuth app for enterprise requirements | #### Helios Google Sheets App (Recommended) The Helios Google Sheets App provides seamless setup with pre-configured permissions for most common spreadsheet use cases. ##### Permissions The Helios Google Sheets App includes scopes for: - Read and write spreadsheet data - Read-only access to Google Drive for spreadsheet discovery - File-level access to Drive for spreadsheet management #### BYO Google Sheets App Create your own Google OAuth application for custom control over scopes and branding. ##### Setup Steps 1. Go to [Google Cloud Console](https://console.cloud.google.com/) 2. Create a new project or select an existing one 3. Enable the Google Sheets API 4. Configure the OAuth consent screen 5. Create OAuth 2.0 credentials (client ID and client secret) 6. Add the Helios redirect URI to your OAuth client 7. Copy the client ID and client secret into Helios > Learn more in the [Google Sheets API documentation](https://developers.google.com/sheets/api). ## Functionality The Google Sheets integration lets your workflows **create spreadsheets, read and write data, manage formatting, and automate data-driven processes** without writing custom code. | Category | Features | | ---------------------- | -------------------------------------------------------- | | Data Operations | Read, write, append, clear cell data | | Spreadsheet Management | Create spreadsheets, manage sheets and tabs | | Formatting | Cell formatting, conditional formatting, data validation | | Analysis | Formulas, charts, pivot tables, filters | --- # HubSpot URL: https://www.heliosapp.com/docs/integrations/apps/hubspot Description: The HubSpot integration lets you programmatically manage CRM data, automate sales processes, sync marketing activities, and integrate with HubSpot's comprehensive platform directly from Helios. --- title: "HubSpot" excerpt: "Manage contacts, companies, deals, and automate your sales and marketing workflows with HubSpot from Helios." description: "The HubSpot integration lets you programmatically manage CRM data, automate sales processes, sync marketing activities, and integrate with HubSpot's comprehensive platform directly from Helios." icon: Si-Hubspot createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## Authentication | Method | Type | Description | | ------------------------------ | ----------------- | ----------------------------------------------- | | Helios OAuth App (Recommended) | OAuth 2.0 | Comprehensive access with pre-configured scopes | | Personal Access Token | Private App Token | Simple server-to-server authentication | | BYO OAuth App | OAuth 2.0 | Custom OAuth app for enterprise requirements | #### Personal Access Token The simplest way to connect HubSpot is using a Personal Access Token for server-to-server authentication. ##### Setup Steps 1. Go to your [HubSpot account settings](https://app.hubspot.com/settings/) 2. Navigate to **Integrations → Private Apps** 3. Click **Create a private app** 4. Configure the required scopes for your use case 5. Generate the access token and paste it into Helios #### Helios OAuth App The Helios OAuth app provides comprehensive access with pre-configured scopes for most common CRM operations. {/* TODO: Add the link to HubSpot rate limits */} ##### Permissions The Helios OAuth app includes scopes for: **Core CRM Objects (Required):** - Read contacts, companies, deals, products, line items - Read conversations and tickets - Access to custom objects **Extended CRM Objects (Optional):** - Write access to all CRM objects - Custom object management - Lists and workflows - Commerce objects (subscriptions, orders, carts) - Reports and analytics **Marketing & Content:** - Email marketing and campaigns - Blog posts and landing pages - Files and media management - Social media accounts **Settings & Administration:** - Account and user information - Business units and teams - Integrations and apps management #### BYO OAuth App Create your own HubSpot OAuth application for enterprise requirements or custom scope management. > Learn more about creating HubSpot apps in the [HubSpot developer documentation](https://developers.hubspot.com/docs/api/private-apps). ## Functionality The HubSpot integration lets your workflows **manage CRM data, automate sales processes, sync marketing activities, and access comprehensive business intelligence** without writing custom code. | Category | Features | | -------------------- | --------------------------------------------------------------------------- | | CRM Operations | Contacts, Companies, Deals, Tickets, Custom Objects, Lists | | Marketing Automation | Email Campaigns, Landing Pages, Forms, Blog Posts, Social Media | | Sales Intelligence | Pipeline Management, Activity Tracking, Quote Generation, Revenue Analytics | ## Real-time Events | Event Category | Event Types | | ---------------- | -------------------------------------------- | | Contact Events | Creation, updates, deletion, merge | | Company Events | Creation, updates, property changes | | Deal Events | Stage changes, amount updates, close dates | | Ticket Events | Status changes, priority updates, assignment | | Form Submissions | New leads from HubSpot forms | | Email Events | Opens, clicks, bounces, unsubscribes | --- # Notion URL: https://www.heliosapp.com/docs/integrations/apps/notion Description: The Notion integration lets you programmatically interact with Notion workspaces-create pages, update database entries, query data, search content, and automate content workflows directly from Helios. --- title: "Notion" excerpt: "Create, update and query pages and databases in Notion from your Helios workflows." description: "The Notion integration lets you programmatically interact with Notion workspaces-create pages, update database entries, query data, search content, and automate content workflows directly from Helios." icon: Si-Notion createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## Authentication | Method | Type | Description | | ------------------------------ | ------------ | ---------------------------------------------- | | Helios OAuth App (Recommended) | OAuth 2.0 | Full-featured integration for all workspaces | | Internal Integration | Secret Token | Workspace-specific integration with secret | | BYO OAuth App | OAuth 2.0 | Custom public integration for advanced control | #### Helios OAuth App (Recommended) The Helios OAuth app is a full-featured integration that can be used to access all Notion workspaces. It requires the OAuth flow to be completed. ##### Permissions The Helios OAuth app requires the following permissions: - Read, Update and Insert Content - Read and Insert Comments - Read user information including email addresses #### Internal Integration An internal integration in Notion only has access to the workspace it is created in. This type of integration can be used without the OAuth flow directly with a secret. > Learn more about internal integrations in the [Notion documentation](https://developers.notion.com/docs/authorization#what-is-an-internal-integration). #### BYO OAuth App (Public Integration) If you want more granular control over the integration itself, you can create a custom OAuth app in Notion. However, this requires additional setup and is not recommended for most users. > Learn more about public integrations in the [Notion documentation](https://developers.notion.com/docs/authorization#what-is-a-public-integration). ## Functionality The Notion integration lets your workflows **read, create, update and search content inside a Notion workspace** without writing custom code. Typical use-cases include: - **Create database pages** - add new rows to a database when an event happens in another service. - **Update page properties** - keep Notion dashboards in sync with external data sources. - **Query databases** - pull structured information out of Notion and pass it downstream in the workflow. - **Retrieve or append blocks** - fetch the full page content or add text, headings, to-dos, images and more. - **Search workspace** - quickly locate pages or databases by keyword. - **Comment on pages** - add comments to pages. ### As Trigger Node Trigger node allows you to use the webhooks from notion to trigger your workflows. You can find the webhooks that Notion sends in the [Notion Webhook Reference](https://developers.notion.com/reference/webhooks-events-delivery#supported-webhook-event-types) The filter prompt in the trigger node is used to filter the webhooks with natural language prompt. For example, you can filter the webhooks to only trigger when a new page is created in a specific database or when a user comments on a page. ### As Integration Node When placed as an integration node, the Notion node lets you perform actions against pages, databases, blocks and more. All the public API operations are supported. See what operations are supported in the [Notion API Reference](https://developers.notion.com/reference/capabilities). ## Outputs Depending on the operation the node performs, it returns one of the standard Notion API payloads. You can check the output payloads of different operations in the [Notion API Reference](https://developers.notion.com/reference/intro). Example: If the node created a comment, the output value would be: ```json { "object": "comment", "id": "b52b8ed6-e029-4707-a671-832549c09de3", "parent": { "type": "page_id", "page_id": "5c6a2821-6bb1-4a7e-b6e1-c50111515c3d" }, "discussion_id": "f1407351-36f5-4c49-a13c-49f8ba11776d", "created_time": "2022-07-15T20:53:00.000Z", "last_edited_time": "2022-07-15T20:53:00.000Z", "created_by": { "object": "user", "id": "067dee40-6ebd-496f-b446-093c715fb5ec" }, "rich_text": [ { "type": "text", "text": { "content": "Hello world", "link": null }, "annotations": { "bold": false, "italic": false, "strikethrough": false, "underline": false, "code": false, "color": "default" }, "plain_text": "Hello world", "href": null } ], "attachments": [ { "category": "image", "file": { "url": "https://s3.us-west-2.amazonaws.com/...", "expiry_time": "2025-06-10T21:58:51.599Z" } } ], "display_name": { "type": "integration", "resolved_name": "Public Integration" } } ``` To reference the output in other nodes, you can use the `[[nodes["notion"].output]]` syntax in prompts. ## Limitations The Notion public API is still evolving. Keep the following constraints in mind when designing workflows: - **Rate limits** - The node automatically respects the per-second limit but high-volume jobs may require batching. - **Permissions** - the integration token can access only the pages and databases that have been explicitly shared with it. ### ✅ What you can do All of the Notion public API operations are supported which include but are not limited to: - Add or update content in any shared database or page. - Query databases with complex filter and sort combinations. - Append rich-text, headings, to-dos, images, code blocks and more. - Migrate content by iterating over databases and writing to external systems. - Build dashboards that stay in sync by periodically updating Notion properties. Read more about the endpoints and their capabilities in the [Notion API Reference](https://developers.notion.com/reference/intro). ### ❌ What you can't do - Access pages that have **not** been explicitly shared with the integration. - Share pages with other users via the integration. - Respond to discussions on pages. Comments are only allowed at page level. --- # Reddit URL: https://www.heliosapp.com/docs/integrations/apps/reddit Description: The Reddit integration lets you programmatically manage subreddits, automate content posting, handle community moderation, track submissions and comments, and integrate with Reddit's platform directly from Helios. --- title: "Reddit" excerpt: "Automate subreddit management, content posting, moderation, and community engagement with Reddit from your Helios workflows." description: "The Reddit integration lets you programmatically manage subreddits, automate content posting, handle community moderation, track submissions and comments, and integrate with Reddit's platform directly from Helios." icon: Si-Reddit createdAt: "2025-09-26" updatedAt: "2025-09-26" --- ## Authentication | Method | Type | Description | | ------------------------------- | ---------- | ----------------------------------------------- | | Helios Reddit App (Recommended) | Reddit App | Seamless integration with automatic permissions | | BYO Reddit App | Reddit App | Custom Reddit App for enterprise requirements | ### ✅ Helios Reddit App (Recommended) The Helios Reddit App provides seamless integration with automatic permission management and secure OAuth flow. ### BYO Reddit App Create your own Reddit application for enterprise requirements or custom permission management. #### Setup Steps 1. **Create the Reddit App** - Go to [Reddit App Preferences](https://www.reddit.com/prefs/apps) - Click **Create App** or **Create Another App** - **Important**: Choose **web app** (this is required for OAuth flow) - Fill in the app details: - **Name**: Your app name (e.g., "MyHeliosApp") - **Description**: Brief description of your app - **About URL**: Optional URL with information about your app - **Redirect URI**: Set to your OAuth callback URL (e.g., `https://your-app.com/auth/reddit/callback`) - Click **Create app** - Copy the **Client ID** (displayed under the app name) and **Client Secret** 2. **Generate Access and Refresh Tokens** - Direct users to the authorization URL: ``` https://www.reddit.com/api/v1/authorize?client_id=YOUR_CLIENT_ID&response_type=code&state=RANDOM_STRING&redirect_uri=YOUR_REDIRECT_URI&duration=permanent&scope=REQUIRED_SCOPES ``` - After user authorization, Reddit will redirect to your callback URL with an authorization code - Exchange the authorization code for access and refresh tokens: ``` POST https://www.reddit.com/api/v1/access_token ``` - Include the authorization code, client ID, client secret, and redirect URI in the request - Save both the access token (short-lived) and refresh token (for token renewal) 3. **Configure in Helios** - **Client ID**: The client ID from your Reddit app - **Client Secret**: The client secret from your Reddit app - **Access Token**: The access token obtained from the OAuth flow - **Refresh Token**: The refresh token for automatic token renewal - **App Name**: Your app identifier in format `MyHeliosApp:v1.0.0` (used for Reddit API requests) - **Username**: Your Reddit username in format `/u/heliosuser` (the account associated with the app) - Helios will automatically handle token refresh when needed The **App Name** and **Username** fields are required by Reddit's API for authentication and rate limiting purposes. Make sure the username matches the account that created the Reddit app. #### Common OAuth Scopes - `identity` - Access to account information - `edit` - Edit and delete posts and comments - `flair` - Manage user and link flair - `history` - Access to post and comment history - `modconfig` - Manage subreddit configuration and rules - `modflair` - Manage user and link flair in moderated subreddits - `modlog` - Access to moderation log - `modposts` - Approve/remove posts and comments - `modself` - Accept moderator invitations - `modwiki` - Manage wiki pages in moderated subreddits - `mysubreddits` - Access to subscribed and moderated subreddits - `privatemessages` - Access to private messages - `read` - Read posts and comments - `report` - Report posts and comments - `save` - Save and unsave posts and comments - `submit` - Submit posts and comments - `subscribe` - Subscribe/unsubscribe from subreddits - `vote` - Submit and change votes on posts and comments - `wikiedit` - Edit wiki pages - `wikiread` - Read wiki pages Learn more about creating Reddit apps in the [Reddit API documentation](https://reddit.com/dev/api/). ## Functionality The Reddit integration lets your workflows **manage subreddits, automate content creation, handle community moderation, and engage with Reddit's community platform** without writing custom code. | Category | Features | | -------------------- | -------------------------------------------------------------------------------------------- | | Content Management | Submit Posts, Submit Comments, Edit Content, Delete Content, Vote on Content | | Subreddit Management | Subreddit Creation, Settings Management, Rules Management, Flair Management, Wiki Management | | User Management | Profile Management, Friend Lists, Blocked Users, User Preferences | | Moderation Tools | Remove Posts/Comments, Ban/Unban Users, Approve Content, Mod Actions, Mod Queue Management | | Community Engagement | Message Users, Reply to Comments, Award Content, Follow Users, Join/Leave Subreddits | | Data Retrieval | Get Posts, Get Comments, Search Content, Get User Info, Get Subreddit Info | ## API Versions The integration supports the Reddit API: ### Reddit API (OAuth 2.0) Current stable API version with full feature support for content management and community interaction. ## Data Retrieval Reddit does not support webhooks. Data must be retrieved through polling or on-demand API calls from your workflows. ## Rate Limits Reddit API has rate limiting in place: - **OAuth requests**: 60 requests per minute - **Read operations**: Higher limits for GET requests - **Write operations**: Lower limits for POST/PUT/DELETE requests Be mindful of Reddit's rate limits when building high-frequency workflows. --- # Resend URL: https://www.heliosapp.com/docs/integrations/apps/resend Description: Resend integration --- title: "Resend" excerpt: "Resend integration" description: "Resend integration" icon: /static/img/assets/resend-light.svg createdAt: "2025-07-31" updatedAt: "2025-07-31" --- The Resend integration lets your workflows **send transactional emails, manage templates, contacts, domains and react to delivery events** without custom code. ## Authentication | Method | Type | Description | | -------------- | ------------ | ----------------------------------------------- | | Resend API Key | API Key | Server-to-server authentication with Resend API | | Webhooks | Event-driven | Real-time event notifications (trigger only) | #### Resend API Key (Required) Generate an API key from your Resend dashboard and paste it into the Resend credential in Helios. This key authenticates every request sent to the Resend REST API. > OAuth flows are **not** supported by this integration. #### Webhooks (Trigger only) - After creating the integration, reopen it to enable webhooks. - Copy the **webhook URL** generated by Helios. - In your Resend dashboard (Settings → Webhooks) create a new webhook, paste the URL and pick the events you want to listen to (e.g. `email.delivered`). - Copy the **signing secret** shown by Resend and paste it back into the Helios integration, then save. - Add integration trigger to your workflow. Once saved, matching Resend events will trigger your workflow in real time. ### Permissions The node can only perform the actions permitted by **your** Resend API key. Create a key with the required privileges (e.g. sending email, viewing templates) and add it to Helios. Any operation beyond those privileges will be rejected by Resend. ## Functionality ### As Trigger Node Fire the workflow whenever Resend emits an event such as `email.bounced` or `email.delivered`. Combine with the natural-language filter prompt to target specific messages. ### As Integration Node Within a workflow you can perform any action exposed by the Resend REST API, including: - Send single or batch emails - Retrieve message status - Manage templates - Add or verify sender domains See the [Resend API reference](https://resend.com/docs/api-reference) for the full list of operations. ## Outputs The Resend node returns the full response from the Resend API. You can reference the output in other nodes using the `[[nodes["resend"].output]]` syntax in prompts. ## Limitations ### ✅ What you can do We support full range of operations from the Resend API. Read more about the endpoints and their capabilities in the [Resend API reference](https://resend.com/docs/api-reference). Some of the operations include: - Send transactional emails - Manage templates - Add or verify sender domains - Manage contacts - React to delivery events #### ❌ What you can't do - Access emails that have **not** been explicitly shared with the integration. --- # Slack URL: https://www.heliosapp.com/docs/integrations/apps/slack Description: The Slack integration lets you programmatically send messages, manage channels, handle user interactions, and automate team communication directly from Helios. --- title: "Slack" excerpt: "Send messages, manage channels, and automate team communication with Slack from your Helios workflows." description: "The Slack integration lets you programmatically send messages, manage channels, handle user interactions, and automate team communication directly from Helios." icon: /static/img/assets/slack-light.svg createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## How to connect | Method | Type | Description | | ------------------------------ | --------- | ----------------------------------------------- | | Helios OAuth App (Recommended) | OAuth 2.0 | Pre-configured permissions for common use cases | | BYO Slack App | OAuth 2.0 | Custom control over permissions and branding | #### Helios OAuth App (Recommended) The Helios OAuth app provides a seamless setup with pre-configured permissions for most common use cases. ##### Permissions The Helios OAuth app includes the following permissions: - Send messages to channels and users - Read channel and user information - Manage channels and groups - Upload and manage files - Access workspace information - Receive real-time events #### BYO Slack App Create your own Slack application for custom control over permissions, branding, and distribution. ##### Setup Steps 1. Go to [Slack App Management](https://api.slack.com/apps) 2. Click **Create New App → From scratch** 3. Configure OAuth scopes, event subscriptions, and bot permissions 4. Install the app to your workspace 5. Copy the client ID, client secret, and configure in Helios > Learn more about creating Slack apps in the [Slack documentation](https://api.slack.com/start/quickstart). ## Functionality The Slack integration lets your workflows **send messages, manage channels, handle interactions, and automate team communication** without writing custom code. | Category | Features | | ---------------------- | --------------------------------------------------------------------------------------------------------- | | Core Capabilities | Messaging, Channel Management, User Operations, File Operations, Interactive Components, Real-time Events | | Message Features | Rich Formatting, Mentions, Threads, Reactions, Scheduled Messages | | Interactive Components | Button Clicks, Modal Submissions, Slash Commands, Shortcuts | ## Real-time Events | Event Category | Event Types | | -------------- | ----------------------------------------------- | | Messages | New messages in channels or direct messages | | Reactions | Emoji reactions added or removed | | Channel Events | Channel created, archived, renamed | | User Events | User joined, left, presence changed | | App Events | App installed, uninstalled, permissions changed | --- # Stripe URL: https://www.heliosapp.com/docs/integrations/apps/stripe Description: Stripe integration --- title: "Stripe" excerpt: "Stripe integration" description: "Stripe integration" icon: Si-Stripe createdAt: "2025-07-31" updatedAt: "2025-07-31" --- The Stripe integration lets your workflows **create payments, manage customers, handle subscriptions** and listen to events-without writing custom code. ## How to connect | Method | Type | Description | | -------------- | ------- | ----------------------------------------------- | | Secret API Key | API Key | Server-to-server authentication with Stripe API | #### Secret API Key The Stripe node authenticates requests with a secret API key. Obtain it from **Stripe → Developers → API keys** and paste it into the Stripe credential in Helios. Both _test_ and _live_ keys are supported-remember that data is isolated per environment. OAuth flows are **not** supported by this integration. #### Webhooks (Trigger only) - After creating the integration, reopen it to add a Stripe Trigger. - Copy the **webhook URL** generated by Helios. - In your Stripe dashboard (Developers → Webhooks) click **+ Add endpoint**, paste the URL and pick the events you want to forward (e.g. `invoice.payment_succeeded`). - Stripe will display a **signing secret**-copy it and paste it back into the Helios integration, then save. - Add integration trigger to your workflow. Once saved, the selected Stripe events will trigger your workflow in real time. ### Permissions The node can only perform the actions allowed by **your** API key. Generate a key in Stripe with the minimum required scopes (e.g. `read_write` on Payments, Customers, etc.) and paste it into Helios. Any operation outside those scopes will be rejected by Stripe. ## Functionality ### As Trigger Node Receive real-time events such as `invoice.payment_succeeded` or `customer.created`. Use the natural-language filter prompt to run the workflow only for relevant events. For example, “When a payment fails for invoices over $100”. ### As Integration Node Inside a workflow you can perform any Stripe API call, for example: - Create or confirm a _PaymentIntent_ - Issue a refund - Fetch a list of customers - Update a subscription item See the full list of operations in the [Stripe API reference](https://stripe.com/docs/api). ## Outputs The Stripe node returns the full response from the Stripe API. You can reference the output in other nodes using the `[[nodes["stripe_node_name"].output]]` syntax in prompts. ## Limitations - Standard Stripe API [rate limits](https://stripe.com/docs/rate-limits) apply. - Test and live modes are completely separate-keys and data do not overlap. ### ✅ What you can do - Invoke any REST endpoint exposed by Stripe. - Listen to any event emitted via webhooks. ### ❌ What you can't do - Perform actions that require Stripe Connect OAuth (e.g. acting on behalf of a connected account). --- # Typeform URL: https://www.heliosapp.com/docs/integrations/apps/typeform Description: The Typeform integration lets you programmatically create forms, manage surveys, collect responses, and automate form workflows directly from Helios. --- title: "Typeform" excerpt: "Create and manage forms, surveys, and collect responses with Typeform from your Helios workflows." description: "The Typeform integration lets you programmatically create forms, manage surveys, collect responses, and automate form workflows directly from Helios." icon: /static/img/assets/typeform-light.svg createdAt: "2025-07-31" updatedAt: "2025-07-31" --- import { Callout } from 'fumadocs-ui/components/callout'; ## Authentication | Method | Type | Description | | ------------------------------ | ----------- | ---------------------------------------------- | | Helios OAuth App (Recommended) | OAuth 2.0 | Seamless setup with automated token management | | Personal Access Token | Token-based | Simple token-based authentication | | BYO OAuth App | OAuth 2.0 | Custom OAuth app for advanced control | Typeform requires separate webhooks for each form for receiving response events. Create a `Webhook` node for each form and configure that value in the form settings. ## Functionality The Typeform integration lets your workflows **create forms, manage surveys, collect responses, and automate form workflows** without writing custom code. | Category | Features | | ----------------- | ------------------------------------------------------------------------------------------------------------------ | | Core Capabilities | Form Management, Response Collection, Webhook Configuration, Theme Management, Workspace Operations, Image Uploads | ## Real-time Events | Event Category | Event Types | | -------------- | ----------------------------------------------------------------- | | Form Events | New responses submitted, Forms completed, Partial responses saved | --- # WarpBuild URL: https://www.heliosapp.com/docs/integrations/apps/warpbuild Description: The WarpBuild integration lets you programmatically manage CI/CD runners, builders, cloud integrations, and monitor build infrastructure directly from Helios. --- title: "WarpBuild" excerpt: "Manage CI/CD runners, builders, and infrastructure with WarpBuild from your Helios workflows." description: "The WarpBuild integration lets you programmatically manage CI/CD runners, builders, cloud integrations, and monitor build infrastructure directly from Helios." icon: /static/img/assets/warpbuild-light.svg createdAt: "2025-07-31" updatedAt: "2025-07-31" --- ## How to connect | Method | Type | Description | | --------------------- | ---- | ------------------------------------------------------- | | Personal Access Token | PAT | Authenticate using your WarpBuild Personal Access Token | #### Personal Access Token Authenticate using a WarpBuild Personal Access Token (PAT) for direct API access. ##### Setup Steps 1. Go to your [WarpBuild dashboard](https://app.warpbuild.com) 2. Navigate to your account settings 3. Generate a Personal Access Token (format: `wb_pat_xxxxxxxxxxxxxxxxx`) 4. Paste the token into Helios ## Functionality The WarpBuild integration lets your workflows **manage CI/CD runners, monitor builds, track costs, and automate infrastructure operations** without writing custom code. | Category | Features | | ------------------ | ----------------------------------------------------------------------------------- | | Runner Management | List runner images, manage runner instances, configure runner pools, label matching | | Builder Management | List builders, manage builder profiles, handle build sessions | | Cloud Integrations | GCP, AWS, and Azure cloud provider connections | | Monitoring | Job tracking, cost analysis, usage reporting, daily cost snapshots | | Infrastructure | Stack management, snapshot operations, VCS integrations | --- # If Node URL: https://www.heliosapp.com/docs/workflows/control-nodes/if Description: Conditional branching node that executes different paths based on true/false evaluation --- title: "If Node" excerpt: "Execute different workflow paths based on boolean conditions" description: "Conditional branching node that executes different paths based on true/false evaluation" icon: GitBranch createdAt: "2025-07-31" updatedAt: "2025-07-31" --- import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; import { Tabs, Tab } from 'fumadocs-ui/components/tabs'; # If Node The If node provides conditional branching in your workflows. It evaluates a boolean condition and executes different sets of nodes based on whether the condition is true or false. ## Configuration ### Input Schema | Field | Type | Required | Description | |-------|-----------------|----------|------------------------------------------------| | `if` | `boolean` | Yes | The boolean condition to evaluate | | `then`| `string[]` | Yes | Array of node IDs to execute if condition is true | | `else`| `string[]` | Yes | Array of node IDs to execute if condition is false | ### Output Schema | Field | Type | Description | |-------|-----------|--------------------------------| | `output` | `boolean` | The evaluated condition value | ## Basic Usage ```yaml # Simple condition check - id: user_check type: condition input: if: "{{ user.isPremium }}" then: ["premium_features"] else: ["upgrade_prompt"] ``` ## Advanced Examples ```yaml # API response validation - id: validate_response type: condition input: if: "{{ api_response.status === 200 }}" then: ["process_data", "save_result"] else: ["log_error", "retry_request", "notify_admin"] ``` Handle API responses gracefully by checking status codes and routing to appropriate error handling or success flows. ```yaml # Environment-based routing - id: feature_toggle type: condition input: if: "{{ env.FEATURE_ENABLED && user.betaAccess }}" then: ["new_feature_flow"] else: ["legacy_feature_flow"] ``` Control feature rollout by combining environment variables with user permissions for gradual feature deployment. ```yaml # Input validation - id: validate_input type: condition input: if: "{{ data.email && data.email.includes('@') }}" then: ["send_email", "log_success"] else: ["validation_error", "request_correction"] ``` Validate user input before processing to ensure data integrity and provide appropriate feedback for invalid inputs. ## Integration Patterns ### With HTTP Nodes ```yaml - id: api_call type: http input: url: "https://api.example.com/data" method: "GET" - id: response_check type: condition input: if: "{{ api_call.output.ok }}" then: ["parse_response"] else: ["retry_api_call"] ``` ### With AI Nodes ```yaml - id: content_check type: condition input: if: "{{ content.length > 1000 }}" then: ["ai_summarize"] else: ["direct_process"] ``` ### With Loop Nodes ```yaml - id: batch_check type: condition input: if: "{{ items.length > 10 }}" then: ["batch_process_loop"] else: ["single_process"] ``` ## Troubleshooting - Check variable existence with optional chaining: `variable?.property` - Verify data types: `"5" !== 5` - Use explicit comparisons: `value === true` instead of just `value` - Ensure both then and else arrays contain valid node IDs - Verify referenced nodes exist in the workflow - Check for typos in node references - Add logging nodes to debug condition evaluation - Use simple test conditions first - Verify input data structure matches expectations ## Debugging Tips ```yaml # Add debug logging - id: debug_condition type: condition input: if: "{{ debug.log(user.status) || user.status === 'active' }}" then: ["log_true_path", "active_user_flow"] else: ["log_false_path", "inactive_user_flow"] ``` The If node is fundamental to creating intelligent, responsive workflows that adapt to different conditions and scenarios. --- # Loop Node URL: https://www.heliosapp.com/docs/workflows/control-nodes/loop Description: Iteration node that processes arrays sequentially or in parallel with configurable execution modes --- title: "Loop Node" excerpt: "Iterate over data sets or repeat execution a specified number of times" description: "Iteration node that processes arrays sequentially or in parallel with configurable execution modes" icon: RotateCcw createdAt: "2025-07-31" updatedAt: "2025-07-31" --- import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; import { Tabs, Tab } from 'fumadocs-ui/components/tabs'; # Loop Node The Loop node enables iteration in your workflows. It can iterate over arrays of data (`forEach`) or repeat execution a specified number of times (`forN`). The node supports both sequential and parallel execution modes for optimal performance. ## Configuration ### Input Schema The Loop node accepts one of two input modes: #### forEach Mode | Field | Type | Required | Description | |-----------|---------------|----------|--------------------------------| | `forEach` | `JsonValue[]` | Yes | Array of items to iterate over | | `forN` | `undefined` | No | Must be undefined in forEach mode | #### forN Mode | Field | Type | Required | Description | |-----------|-------------|----------|---------------------------------------| | `forN` | `number` | Yes | Number of iterations (minimum 1) | | `forEach` | `undefined` | No | Must be undefined in forN mode | ### Configuration Schema | Field | Type | Required | Description | |--------|----------------------------|----------|---------------------------------| | `mode` | `"sequential" \| "parallel"` | Yes | Execution mode for iterations | ### Output Schema | Field | Type | Description | |------------------|---------------|------------------------------------| | `totalIterations`| `number` | Total number of iterations executed| | `iterations` | `JsonValue[]` | Array of results from each iteration| ## Basic Usage ### Array Iteration (forEach) ```yaml # Process a list of users - id: process_users type: loop input: forEach: "{{ users }}" configuration: mode: "sequential" ``` ### Count-based Iteration (forN) ```yaml # Retry an operation 3 times - id: retry_operation type: loop input: forN: 3 configuration: mode: "sequential" ``` ## Advanced Examples ```yaml # Process files in parallel for speed - id: process_files_parallel type: loop input: forEach: "{{ uploadedFiles }}" configuration: mode: "parallel" ``` Use parallel mode when operations are independent and can benefit from concurrent execution. Perfect for file processing, image resizing, or API calls that don't depend on each other. ```yaml # Process orders one by one to maintain inventory state - id: process_orders type: loop input: forEach: "{{ orders }}" configuration: mode: "sequential" ``` Use sequential mode when order matters or when operations depend on shared state. Essential for inventory management, account balance updates, or any workflow requiring consistency. ```yaml # Process data in batches - id: create_batches type: loop input: forN: "{{ Math.ceil(data.length / batchSize) }}" configuration: mode: "sequential" ``` Use forN mode with calculated iterations for batch processing. Ideal for handling large datasets by processing them in manageable chunks. ## Use Cases Transform each item in an array: ```yaml # Resize multiple images - id: resize_images type: loop input: forEach: "{{ images }}" configuration: mode: "parallel" # Child nodes would access {{ loop.current }} for each image ``` Perfect for applying the same operation to multiple items like image processing, data cleaning, or format conversion. Fetch all pages of data: ```yaml # Fetch all pages from paginated API - id: fetch_all_pages type: loop input: forN: "{{ totalPages }}" configuration: mode: "sequential" # Child nodes would use {{ loop.index }} for page number ``` Ideal for systematically fetching all data from paginated APIs where you need to iterate through page numbers. Process large datasets in chunks: ```yaml # Process users in batches of 100 - id: batch_process_users type: loop input: forN: "{{ Math.ceil(users.length / 100) }}" configuration: mode: "sequential" ``` Essential for handling large datasets by breaking them into manageable chunks to avoid memory issues or API rate limits. Implement retry mechanisms: ```yaml # Retry failed operations - id: retry_with_backoff type: loop input: forN: 5 configuration: mode: "sequential" # Child nodes implement exponential backoff ``` Build robust workflows by automatically retrying failed operations with configurable attempts and backoff strategies. Execute independent operations concurrently: ```yaml # Send notifications to multiple channels - id: send_notifications type: loop input: forEach: "{{ notificationChannels }}" configuration: mode: "parallel" ``` Maximize throughput by executing independent operations simultaneously, perfect for notifications, file uploads, or API calls. ## Loop Context Variables Available when iterating over arrays: - `{{ loop.current }}` - Current item being processed - `{{ loop.index }}` - Zero-based index of current iteration - `{{ loop.isFirst }}` - True if this is the first iteration - `{{ loop.isLast }}` - True if this is the last iteration - `{{ loop.total }}` - Total number of items Perfect for array processing where you need access to both the item and its position. Available when using count-based iteration: - `{{ loop.index }}` - Zero-based index of current iteration (0 to N-1) - `{{ loop.iteration }}` - One-based iteration number (1 to N) - `{{ loop.isFirst }}` - True if this is the first iteration - `{{ loop.isLast }}` - True if this is the last iteration - `{{ loop.total }}` - Total number of iterations Ideal for retry logic, pagination, or any scenario requiring a specific number of iterations. ## Best Practices **Use Sequential Mode When:** - Order of execution matters - Operations modify shared state - Each iteration depends on previous results - Memory usage needs to be controlled ```yaml # Sequential for state-dependent operations - id: process_transactions type: loop input: forEach: "{{ transactions }}" configuration: mode: "sequential" # Maintain account balance consistency ``` **Use Parallel Mode When:** - Operations are independent - Performance is critical - No shared state modifications - I/O bound operations ```yaml # Parallel for independent operations - id: validate_emails type: loop input: forEach: "{{ emailList }}" configuration: mode: "parallel" # Each validation is independent ``` Key optimization strategies: - **Batch size**: For large arrays, consider chunking data - **Resource limits**: Be mindful of memory and CPU usage - **Timeouts**: Implement timeouts for long-running operations - **Error handling**: Plan for partial failures in parallel mode ```yaml # Good: Controlled batch processing - id: controlled_processing type: loop input: forEach: "{{ data.slice(0, 1000) }}" # Limit batch size configuration: mode: "parallel" ``` Implement robust error resilience: ```yaml # Implement error resilience - id: resilient_loop type: loop input: forEach: "{{ items }}" configuration: mode: "sequential" # Child nodes should include error handling ``` - Always plan for partial failures in parallel mode - Use try-catch patterns in child nodes - Consider circuit breaker patterns for external API calls - Implement proper logging for debugging failed iterations ## Integration Patterns ```yaml # Fetch data from multiple endpoints - id: multi_endpoint_fetch type: loop input: forEach: "{{ endpoints }}" configuration: mode: "parallel" # Child HTTP node - id: fetch_endpoint type: http input: url: "{{ loop.current.url }}" method: "GET" ``` Perfect for parallel API calls, batch data fetching, and distributed service communication. ```yaml # Process multiple prompts - id: ai_batch_processing type: loop input: forEach: "{{ prompts }}" configuration: mode: "sequential" # Respect rate limits # Child AI node - id: process_prompt type: ai input: prompt: "{{ loop.current }}" ``` Ideal for bulk content processing, batch analysis, and respecting AI provider rate limits. ```yaml # Send Slack messages to multiple channels - id: broadcast_message type: loop input: forEach: "{{ channels }}" configuration: mode: "parallel" # Child Slack node - id: send_slack_message type: slack input: channel: "{{ loop.current }}" message: "{{ broadcastMessage }}" ``` Essential for multi-channel notifications, bulk email sending, and broadcast communications. ## Nested Loops ```yaml # Outer loop: Process each user - id: process_users type: loop input: forEach: "{{ users }}" configuration: mode: "sequential" # Inner loop: Process each user's orders - id: process_user_orders type: loop input: forEach: "{{ loop.current.orders }}" configuration: mode: "parallel" ``` ## Troubleshooting - Verify input array is not empty - Check that forEach/forN values are properly set - Ensure loop context variables are accessible - Consider switching between sequential/parallel modes - Reduce batch sizes for large datasets - Implement timeouts and resource limits - Process data in smaller chunks - Use sequential mode for memory-intensive operations - Clear unnecessary variables between iterations - Ensure child nodes reference `loop.current` correctly - Verify loop context is available in nested nodes - Check variable scoping in complex workflows ### Debugging Tips ```yaml # Add logging to track loop progress - id: debug_loop type: loop input: forEach: "{{ items }}" configuration: mode: "sequential" # Debug child node - id: log_iteration type: script input: script: | console.log(`Processing item ${loop.index}: ${JSON.stringify(loop.current)}`); return loop.current; ``` The Loop node is essential for processing collections and implementing retry logic, making it a cornerstone of data processing workflows. --- # Merge Node URL: https://www.heliosapp.com/docs/workflows/control-nodes/merge Description: Synchronization node that combines results from parallel workflows with configurable merge strategies --- title: "Merge Node" excerpt: "Combine outputs from multiple parallel execution paths" description: "Synchronization node that combines results from parallel workflows with configurable merge strategies" icon: Merge createdAt: "2025-07-31" updatedAt: "2025-07-31" --- import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; import { Tabs, Tab } from 'fumadocs-ui/components/tabs'; # Merge Node The Merge node synchronizes and combines outputs from multiple parallel execution paths. It provides different merging strategies to handle various parallel processing scenarios, making it essential for workflows that split execution and need to converge. ## Configuration ### Configuration Schema | Field | Type | Required | Description | |--------|-----------------------------------|----------|---------------------------------| | `mode` | `"onFirstComplete" \| "onAllComplete"` | Yes | Strategy for merging parallel outputs | ### Output Schema The output varies based on the merge mode: #### onFirstComplete Mode | Field | Type | Description | |----------|-------------|---------------------------------------| | `output` | `JsonValue` | The output of the first completed path | #### onAllComplete Mode | Field | Type | Description | |----------|---------------|--------------------------------------| | `output` | `JsonValue[]` | Array of outputs from all paths | ## Merge Modes ### onFirstComplete Completes when the first parallel path finishes execution. Useful for race conditions, fallback mechanisms, and performance optimization. ```yaml # API fallback with multiple endpoints - id: api_race type: merge configuration: mode: "onFirstComplete" # Returns the first successful API response ``` ### onAllComplete Waits for all parallel paths to complete before continuing. Useful for data aggregation, comprehensive validation, and ensuring all operations finish. ```yaml # Data aggregation from multiple sources - id: aggregate_data type: merge configuration: mode: "onAllComplete" # Returns array of all results ``` ## Use Cases Execute multiple API calls and use the fastest response: ```yaml # Try multiple endpoints for best performance - id: endpoint_race type: switch input: switch: "{{ dataSource }}" cases: - id: primary case: "primary" then: ["call_primary_api"] - id: backup case: "backup" then: ["call_backup_api", "call_tertiary_api"] - id: fastest_response type: merge configuration: mode: "onFirstComplete" ``` Perfect for performance optimization when multiple services can provide the same data with different latencies. Collect data from multiple sources: ```yaml # Gather user data from different services - id: user_data_sources type: condition input: if: true then: ["get_profile", "get_preferences", "get_activity"] else: [] - id: aggregate_user_data type: merge configuration: mode: "onAllComplete" ``` Essential for building comprehensive data views from distributed microservices or multiple data sources. Run multiple validation checks: ```yaml # Comprehensive validation - id: validation_checks type: condition input: if: true then: ["validate_format", "validate_business_rules", "validate_permissions"] else: [] - id: validation_results type: merge configuration: mode: "onAllComplete" ``` Ensure data quality by running independent validation checks simultaneously for faster processing. Implement graceful degradation: ```yaml # Try premium service, fall back to basic - id: service_fallback type: condition input: if: "{{ user.isPremium }}" then: ["premium_service", "basic_service"] else: ["basic_service"] - id: service_response type: merge configuration: mode: "onFirstComplete" ``` Build resilient systems that gracefully degrade when premium services are unavailable or fail. Process multiple items and collect results: ```yaml # Process files in parallel - id: file_processing type: loop input: forEach: "{{ files }}" configuration: mode: "parallel" - id: collect_results type: merge configuration: mode: "onAllComplete" ``` Efficiently handle bulk operations by processing items in parallel and collecting all results. ## Advanced Patterns ```yaml # Dynamic merge strategy based on context - id: dynamic_merge type: merge configuration: mode: "{{ urgentRequest ? 'onFirstComplete' : 'onAllComplete' }}" ``` Dynamically choose merge strategy based on runtime conditions like priority, user type, or system load. ```yaml # Merge with timeout consideration - id: parallel_operations type: condition input: if: true then: ["fast_operation", "slow_operation_with_timeout"] else: [] - id: merge_with_timeout type: merge configuration: mode: "onFirstComplete" # Don't wait for slow operations ``` Prevent slow operations from blocking workflows by using first-complete strategy with timeout-aware design. ```yaml # Multiple levels of merging - id: regional_data type: loop input: forEach: "{{ regions }}" configuration: mode: "parallel" - id: merge_regional type: merge configuration: mode: "onAllComplete" - id: global_processing type: condition input: if: true then: ["process_global", "process_summary"] else: [] - id: final_merge type: merge configuration: mode: "onAllComplete" ``` Build complex hierarchical workflows with multiple merge levels for sophisticated data aggregation patterns. ## Best Practices **Use onFirstComplete When:** - Performance is critical - Implementing fallback mechanisms - Racing multiple options - Any single result is sufficient ```yaml # Good: Performance-critical scenarios - id: cache_or_compute type: merge configuration: mode: "onFirstComplete" ``` **Use onAllComplete When:** - All results are needed - Data aggregation is required - Comprehensive validation needed - State consistency is important ```yaml # Good: Comprehensive data collection - id: complete_user_profile type: merge configuration: mode: "onAllComplete" ``` ```yaml # Robust error handling with merge - id: parallel_with_fallback type: condition input: if: true then: ["primary_operation", "backup_operation"] else: [] - id: merge_results type: merge configuration: mode: "onFirstComplete" # Handle case where all operations fail - id: validate_merge_result type: condition input: if: "{{ merge_results.output !== null }}" then: ["process_result"] else: ["handle_all_failed"] ``` Always plan for scenarios where parallel operations might fail or return unexpected results. Key optimization strategies: - **Balance parallelism**: Too many parallel paths can overwhelm resources - **Consider timeouts**: Prevent slow operations from blocking onAllComplete - **Monitor resource usage**: Track memory and CPU usage in parallel operations - **Use appropriate merge mode**: Match the mode to your use case Profile your workflows to find the optimal balance between speed and resource consumption. ## Integration Patterns ```yaml # Parallel loop with result aggregation - id: parallel_processing type: loop input: forEach: "{{ items }}" configuration: mode: "parallel" - id: collect_loop_results type: merge configuration: mode: "onAllComplete" ``` ```yaml # Multiple API calls with fastest response - id: api_endpoints type: condition input: if: true then: ["call_api_us", "call_api_eu", "call_api_asia"] else: [] - id: fastest_api type: merge configuration: mode: "onFirstComplete" ``` ```yaml # Multiple AI models for comparison - id: ai_comparison type: condition input: if: true then: ["gpt_analysis", "claude_analysis", "gemini_analysis"] else: [] - id: ai_consensus type: merge configuration: mode: "onAllComplete" ``` ## Data Processing ### Result Structure #### onFirstComplete Output ```json { "output": "first_completed_result", "completedPath": "path_identifier", "completionTime": "2024-01-01T12:00:00Z" } ``` #### onAllComplete Output ```json { "output": [ "result_from_path_1", "result_from_path_2", "result_from_path_3" ], "totalPaths": 3, "completionTime": "2024-01-01T12:00:05Z" } ``` ### Accessing Merge Results ```yaml # Process onFirstComplete result - id: process_first_result type: condition input: if: "{{ merge_results.output !== null }}" then: ["handle_success"] else: ["handle_failure"] # Process onAllComplete results - id: process_all_results type: loop input: forEach: "{{ merge_results.output }}" configuration: mode: "sequential" ``` ## Troubleshooting - Check if all parallel paths can complete successfully - Verify no infinite loops in parallel paths - Implement timeouts for long-running operations - Check for unhandled errors in parallel paths - Verify the fastest path returns the expected data format - Consider adding validation to filter invalid early results - Check if the "first" result is actually the desired one - Monitor for race condition edge cases - Limit the number of parallel paths - Use streaming for large data sets - Implement garbage collection between merges - Monitor memory usage in parallel operations - Reduce parallel operation complexity - Implement proper error handling to prevent retries - Use resource pooling for parallel operations - Monitor execution time patterns ## Debugging Tips ```yaml # Add logging to track merge behavior - id: debug_merge type: merge configuration: mode: "onAllComplete" # Log results for analysis - id: log_merge_results type: script input: script: | console.log('Merge completed:', { mode: 'onAllComplete', resultCount: merge_results.output.length, results: merge_results.output }); return merge_results.output; ``` --- # Suspend Node URL: https://www.heliosapp.com/docs/workflows/control-nodes/suspend Description: Control workflow timing with flexible suspension modes for approvals, delays, and event-driven resumption --- title: "Suspend Node" excerpt: "Pause workflow execution and resume based on conditions or timing" description: "Control workflow timing with flexible suspension modes for approvals, delays, and event-driven resumption" icon: Pause createdAt: "2025-01-08" updatedAt: "2025-01-08" --- import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; import { Tabs, Tab } from 'fumadocs-ui/components/tabs'; # Suspend Node The Suspend node pauses workflow execution and resumes based on specified conditions. It supports time-based suspension, duration delays, and integration event-driven resumption, making it essential for approval workflows and human-in-the-loop processes. ## Configuration ### Input Schema The Suspend node accepts one of three suspension modes: #### Integration Mode | Field | Type | Required | Description | |-----------------|----------|----------|---------------------------------------------| | `type` | `string` | Yes | Must be `"integration"` | | `integrationId` | `string` | Yes | ID of integration to monitor for events | | `filterPrompt` | `string` | Yes | Prompt to filter which events resume workflow | #### Until Mode | Field | Type | Required | Description | |--------|----------|----------|------------------------------------------| | `type` | `string` | Yes | Must be `"until"` | | `until`| `string` | Yes | ISO datetime when workflow should resume | #### Duration Mode | Field | Type | Required | Description | |------------|----------|----------|----------------------------------------------| | `type` | `string` | Yes | Must be `"duration"` | | `duration` | `string` | Yes | ISO 8601 duration (e.g., "PT1H30M", "PT5M") | ### Output Schema | Field | Type | Description | |--------------|----------|------------------------------------------------| | `suspendType`| `string` | The type of suspension used | | `resumeAt` | `string` | ISO datetime when workflow will resume (optional) | ## Basic Usage ### Simple Time Delay ```yaml - id: wait_5_minutes type: suspend input: type: "duration" duration: "PT5M" ``` ### Schedule for Specific Time ```yaml - id: wait_until_midnight type: suspend input: type: "until" until: "2024-12-31T23:59:59Z" ``` ### Wait for Integration Event ```yaml - id: wait_for_approval type: suspend input: type: "integration" integrationId: "slack-approval-bot" filterPrompt: "Resume when message contains 'APPROVED' from manager" ``` ## Advanced Examples ```yaml - id: submit_for_approval type: http input: url: "{{ approval_api }}" method: "POST" body: request: "{{ approval_request }}" requester: "{{ user.id }}" - id: wait_for_approval type: suspend input: type: "integration" integrationId: "approval-system" filterPrompt: "Approved by manager with ID matching {{ user.managerId }}" - id: process_approved_request type: condition input: if: true then: ["execute_approved_action", "notify_success"] else: [] ``` Human-in-the-loop workflow that pauses execution until external approval is received through integrations. ```yaml - id: collect_daily_data type: http input: url: "{{ data_api }}/daily" - id: wait_for_next_day type: suspend input: type: "until" until: "{{ tomorrow_at_midnight }}" - id: process_batch type: loop input: forEach: "{{ collect_daily_data.output }}" configuration: mode: "parallel" ``` Schedule workflows to run at specific times, perfect for daily reports, batch processing, or maintenance tasks. ```yaml - id: process_items type: loop input: forEach: "{{ items_to_process }}" configuration: mode: "sequential" - id: api_call type: http input: url: "{{ rate_limited_api }}" body: "{{ item }}" - id: respect_rate_limit type: suspend input: type: "duration" duration: "PT1S" # 1 second delay between calls ``` Respect API rate limits by adding delays between requests to avoid hitting usage quotas. ```yaml - id: technical_review type: suspend input: type: "integration" integrationId: "github-reviews" filterPrompt: "Technical approval from engineering team lead" - id: business_review type: suspend input: type: "integration" integrationId: "slack-approvals" filterPrompt: "Business approval from product manager" - id: final_approval type: suspend input: type: "integration" integrationId: "executive-approval" filterPrompt: "Executive sign-off for deployment" - id: deploy_changes type: http input: url: "{{ deployment_api }}" method: "POST" ``` Implement complex approval chains with multiple stakeholders and different approval systems. ```yaml - id: check_system_load type: http input: url: "{{ monitoring_api }}/load" - id: conditional_delay type: condition input: if: "{{ check_system_load.output.cpu > 80 }}" then: ["wait_for_low_load"] else: ["proceed_immediately"] - id: wait_for_low_load type: suspend input: type: "duration" duration: "PT10M" # Wait 10 minutes during high load ``` Dynamically delay execution based on system conditions, perfect for load management and resource optimization. ## Duration Format Reference ```yaml # Minutes duration: "PT5M" # 5 minutes duration: "PT30M" # 30 minutes # Hours duration: "PT1H" # 1 hour duration: "PT2H30M" # 2 hours 30 minutes # Seconds (rounded up to next minute) duration: "PT30S" # 30 seconds (becomes 1 minute) duration: "PT90S" # 90 seconds (becomes 2 minutes) # Complex durations duration: "PT1H15M" # 1 hour 15 minutes duration: "PT45M" # 45 minutes ``` Follow ISO 8601 duration format for consistent, machine-readable timing. ```yaml # Good: Clear, human-readable duration: "PT5M" # 5 minutes duration: "PT1H" # 1 hour # Avoid: Overly complex duration: "PT1H23M45S" # Too precise, rounds to minutes anyway ``` Keep durations simple and readable since seconds are rounded up to the next minute anyway. ## Error Handling ### Timeout Management ```yaml - id: timed_approval type: suspend input: type: "integration" integrationId: "approval-system" filterPrompt: "Approval from authorized user" configuration: timeoutMs: 3600000 # 1 hour timeout - id: handle_timeout type: condition input: if: "{{ timed_approval.timedOut }}" then: ["escalate_approval", "notify_timeout"] else: ["process_approval"] ``` ### Fallback Mechanisms ```yaml - id: primary_approval type: suspend input: type: "integration" integrationId: "primary-approver" filterPrompt: "Approval from primary manager" configuration: timeoutMs: 1800000 # 30 minutes - id: backup_approval type: suspend input: type: "integration" integrationId: "backup-approver" filterPrompt: "Approval from backup manager if primary unavailable" ``` ## Best Practices - Implementing rate limiting - Adding processing delays - Waiting for system recovery - Scheduled batch intervals - Scheduling for specific times - Daily/weekly/monthly processing - Maintenance windows - Business hour restrictions - Human approvals required - External event triggers - Dynamic conditions - Interactive workflows --- # Switch Node URL: https://www.heliosapp.com/docs/workflows/control-nodes/switch Description: Multi-path routing node that executes different paths based on value matching with support for complex data types --- title: "Switch Node" excerpt: "Route workflow execution based on multiple value matches using switch-case logic" description: "Multi-path routing node that executes different paths based on value matching with support for complex data types" icon: Route createdAt: "2025-07-31" updatedAt: "2025-07-31" --- import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; import { Tabs, Tab } from 'fumadocs-ui/components/tabs'; # Switch Node The Switch node provides multi-path routing in your workflows. It evaluates a value against multiple cases and executes the corresponding path when a match is found. It supports deep equality comparison for objects and arrays. ## Configuration ### Input Schema | Field | Type | Required | Description | |-----------|-------------|----------|------------------------------------------------| | `switch` | `JsonValue` | Yes | The value to compare against cases | | `cases` | `Case[]` | Yes | Array of case objects with matching values | | `default` | `string[]` | No | Array of node IDs to execute if no case matches | #### Case Object Schema | Field | Type | Required | Description | |-------|-------------|----------|------------------------------------| | `id` | `string` | Yes | Unique identifier for this case | | `case`| `JsonValue` | Yes | Value to match against switch input| | `then`| `string[]` | Yes | Node IDs to execute on match | ### Output Schema | Field | Type | Description | |----------|-------------|--------------------------| | `output` | `JsonValue` | The original switch value| ## Basic Usage ```yaml # Status-based routing - id: order_router type: switch input: switch: "{{ order.status }}" cases: - id: pending case: "pending" then: ["validate_payment", "check_inventory"] - id: confirmed case: "confirmed" then: ["prepare_shipment"] - id: shipped case: "shipped" then: ["track_package", "notify_customer"] default: ["log_unknown_status", "manual_review"] ``` ## Advanced Examples ```yaml # HTTP status code handling - id: http_status_router type: switch input: switch: "{{ response.status }}" cases: - id: success case: 200 then: ["process_data", "cache_result"] - id: created case: 201 then: ["process_created", "send_confirmation"] - id: not_found case: 404 then: ["log_not_found", "try_alternative"] - id: server_error case: 500 then: ["log_error", "retry_request", "notify_admin"] default: ["handle_unexpected_status"] ``` Perfect for handling API responses, error codes, or any numeric categorization where different values require different processing paths. ```yaml # User role and permission routing - id: permission_router type: switch input: switch: "{{ user.role }}" cases: - id: admin_case case: { "type": "admin", "level": "super" } then: ["admin_dashboard", "system_management"] - id: manager_case case: { "type": "manager", "department": "sales" } then: ["sales_dashboard", "team_reports"] - id: user_case case: { "type": "user", "verified": true } then: ["user_dashboard"] default: ["access_denied", "redirect_login"] ``` Use object matching for complex conditions where multiple properties must match exactly. Supports deep equality comparison for nested objects. ```yaml # Feature flag routing - id: feature_router type: switch input: switch: "{{ user.features }}" cases: - id: beta_features case: ["beta", "experimental", "advanced"] then: ["beta_dashboard", "experimental_features"] - id: premium_features case: ["premium", "advanced"] then: ["premium_dashboard"] - id: basic_features case: ["basic"] then: ["basic_dashboard"] default: ["default_features"] ``` Match exact array configurations for feature flags, permissions lists, or any scenario where array order and content matter. ## Use Cases Route based on different response types: ```yaml - id: api_response_router type: switch input: switch: "{{ api_response.type }}" cases: - id: user_data case: "user" then: ["process_user", "update_profile"] - id: product_data case: "product" then: ["process_product", "update_catalog"] - id: order_data case: "order" then: ["process_order", "update_inventory"] default: ["log_unknown_type", "generic_processor"] ``` Perfect for microservices architectures where different services return different data types that require specialized processing. Handle different content formats: ```yaml - id: content_processor type: switch input: switch: "{{ file.type }}" cases: - id: image_case case: "image" then: ["resize_image", "optimize_quality", "generate_thumbnails"] - id: video_case case: "video" then: ["compress_video", "extract_frames", "generate_preview"] - id: document_case case: "document" then: ["extract_text", "generate_summary", "index_content"] default: ["unsupported_format", "notify_user"] ``` Essential for media processing workflows where different file types require completely different processing pipelines and tools. Route based on deployment environment: ```yaml - id: env_router type: switch input: switch: "{{ env.NODE_ENV }}" cases: - id: development case: "development" then: ["dev_config", "debug_logging", "mock_services"] - id: staging case: "staging" then: ["staging_config", "limited_logging"] - id: production case: "production" then: ["prod_config", "error_logging", "monitoring"] default: ["default_config"] ``` Critical for deployment workflows where different environments require different configurations, logging levels, and service integrations. ## Best Practices - **Use meaningful case IDs**: Make them self-documenting - **Order cases by likelihood**: Put most common cases first - **Always provide a default**: Handle unexpected values gracefully ```yaml # Good: Clear case organization cases: - id: success_response case: 200 then: ["process_success"] - id: client_error case: 400 then: ["handle_client_error"] - id: server_error case: 500 then: ["handle_server_error"] default: ["handle_unknown_error"] # Avoid: Unclear and incomplete cases: - id: case1 case: 200 then: ["node1"] # Missing default case ``` - **Be explicit with types**: `"5"` vs `5` are different - **Use deep equality for objects**: Switch node handles this automatically - **Consider null/undefined cases**: Include them explicitly if needed ```yaml # Good: Explicit type handling cases: - id: string_zero case: "0" then: ["handle_string_zero"] - id: number_zero case: 0 then: ["handle_number_zero"] - id: null_case case: null then: ["handle_null"] ``` Critical for avoiding subtle bugs in production workflows. - **Limit case count**: Too many cases can impact performance - **Use simple values when possible**: Complex object matching is slower - **Consider using multiple switch nodes**: For complex nested logic ```yaml # Good: Simple value matching switch: "{{ user.status }}" # Consider restructuring if you have 20+ cases # Use nested switches or separate logic nodes instead ``` ## Integration Patterns ```yaml - id: fetch_data type: http input: url: "{{ api.endpoint }}" - id: status_handler type: switch input: switch: "{{ fetch_data.output.status }}" cases: - id: ok case: 200 then: ["parse_response"] - id: unauthorized case: 401 then: ["refresh_token", "retry_request"] default: ["handle_error"] ``` Perfect for handling different HTTP response codes and routing to appropriate error handling or success flows. ```yaml - id: content_classifier type: ai input: prompt: "Classify this content: {{ content }}" - id: classification_router type: switch input: switch: "{{ content_classifier.output.category }}" cases: - id: spam case: "spam" then: ["delete_content", "log_spam"] - id: appropriate case: "appropriate" then: ["approve_content", "publish"] ``` Ideal for content moderation, sentiment analysis routing, and AI-driven decision workflows. ```yaml # First level: User type - id: user_type_router type: switch input: switch: "{{ user.type }}" cases: - id: premium case: "premium" then: ["premium_feature_router"] - id: basic case: "basic" then: ["basic_feature_router"] # Second level: Premium features - id: premium_feature_router type: switch input: switch: "{{ request.feature }}" cases: - id: analytics case: "analytics" then: ["premium_analytics"] - id: export case: "export" then: ["premium_export"] ``` Essential for complex hierarchical routing with multiple decision layers and nested logic flows. ## Troubleshooting - Verify case values match exactly (type and value) - Check for unexpected data transformations - Always provide a default case for safety - Ensure object properties are in the same order - Use consistent property naming - Consider using simpler value comparisons - Reduce the number of cases if possible - Simplify complex case values - Consider alternative routing strategies ## Debugging Tips ```yaml # Add logging to debug case matching - id: debug_switch type: switch input: switch: "{{ debug.log('Switch value:', switchValue) || switchValue }}" cases: - id: debug_case case: "expected" then: ["log_match_found", "continue_flow"] default: ["log_no_match", "investigate_value"] ``` The Switch node is powerful for creating complex routing logic that can handle multiple scenarios with clean, maintainable case-based organization. --- # Cron Trigger URL: https://www.heliosapp.com/docs/workflows/triggers/cron Description: Time-based workflow triggering with flexible scheduling patterns and timezone support --- title: "Cron Trigger" excerpt: "Schedule workflows to run at specific times using cron expressions" description: "Time-based workflow triggering with flexible scheduling patterns and timezone support" icon: Clock createdAt: "2025-07-31" updatedAt: "2025-07-31" --- import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; # Cron Trigger The Cron trigger enables time-based workflow execution using standard cron expression syntax. It provides reliable, scheduled automation for recurring tasks, reports, maintenance jobs, and periodic data processing. ## Configuration ### Input Schema | Field | Type | Required | Description | |------------------|----------|----------|---------------------------------------| | `cronExpression` | `string` | Yes | Standard cron expression (5 or 6 fields) | | `timezone` | `string` | No | IANA timezone identifier (defaults to UTC) | | `defaultInput` | `object` | No | Default data to pass to the workflow | ### Basic Configuration ```yaml triggers: daily_report: type: "cron" input: cronExpression: "0 9 * * 1-5" # 9 AM on weekdays timezone: "America/New_York" defaultInput: reportType: "daily" includeMetrics: true ``` ## Cron Expression Syntax **Cron Expression Builder**: Use [crontab.guru](https://crontab.guru/) to easily build and validate your cron expressions. This interactive tool helps you visualize when your cron jobs will run and catch syntax errors before deployment. Cron expressions use 5 or 6 fields separated by spaces: ``` ┌───────────── minute (0 - 59) │ ┌─────────── hour (0 - 23) │ │ ┌───────── day of month (1 - 31) │ │ │ ┌─────── month (1 - 12) │ │ │ │ ┌───── day of week (0 - 6) (Sunday to Saturday) │ │ │ │ │ * * * * * ``` ### Special Characters | Character | Description | Example | |-----------|-------------|---------| | `*` | Any value | `* * * * *` (every minute) | | `,` | Value list separator | `0,30 * * * *` (every 30 minutes) | | `-` | Range of values | `0 9-17 * * *` (every hour 9 AM to 5 PM) | | `/` | Step values | `*/15 * * * *` (every 15 minutes) | | `?` | No specific value | `0 0 ? * MON` (Mondays at midnight) | ### Common Patterns ```yaml # Every minute cronExpression: "* * * * *" # Every hour at 30 minutes past cronExpression: "30 * * * *" # Daily at 2:30 AM cronExpression: "30 2 * * *" # Weekdays at 9 AM cronExpression: "0 9 * * 1-5" # Every Sunday at 3 AM cronExpression: "0 3 * * 0" # First day of every month at midnight cronExpression: "0 0 1 * *" ``` ## Pattern Examples ```yaml # Every minute cronExpression: "* * * * *" # Every hour at 30 minutes past cronExpression: "30 * * * *" # Daily at 2:30 AM cronExpression: "30 2 * * *" ``` Basic recurring patterns for frequent automation tasks and regular monitoring. ```yaml # Weekdays at 9 AM cronExpression: "0 9 * * 1-5" # Every Sunday at 3 AM cronExpression: "0 3 * * 0" # First day of every month at midnight cronExpression: "0 0 1 * *" ``` Perfect for weekly reports, monthly billing processes, and weekend maintenance tasks. ```yaml # Every 15 minutes during business hours cronExpression: "*/15 9-17 * * 1-5" # Lunch break automation (12:30 PM weekdays) cronExpression: "30 12 * * 1-5" # End of business day (5:30 PM weekdays) cronExpression: "30 17 * * 1-5" ``` Ideal for business process automation, status updates, and team notifications during working hours. ```yaml # Quarterly: first day of quarter at 6 AM cronExpression: "0 6 1 1,4,7,10 *" # Bi-weekly on Mondays and Thursdays cronExpression: "0 9 * * 1,4" # Every 6 hours starting at midnight cronExpression: "0 */6 * * *" ``` Complex scheduling patterns for quarterly reports, multi-day cycles, and sophisticated automation workflows. ## Advanced Scheduling ```yaml # Send status updates every 2 hours during business hours triggers: business_hours_update: type: "cron" input: cronExpression: "0 */2 9-17 * * 1-5" timezone: "America/New_York" defaultInput: updateType: "status" audience: "team" ``` Perfect for automating tasks during working hours like status updates, notifications, and team communications. Ensures activities happen when people are available to respond. ```yaml # Global reports at local business hours triggers: us_morning_report: type: "cron" input: cronExpression: "0 9 * * 1-5" timezone: "America/New_York" defaultInput: region: "US" eu_morning_report: type: "cron" input: cronExpression: "0 9 * * 1-5" timezone: "Europe/London" defaultInput: region: "EU" asia_morning_report: type: "cron" input: cronExpression: "0 9 * * 1-5" timezone: "Asia/Tokyo" defaultInput: region: "ASIA" ``` Essential for global teams and services. Run the same schedule at appropriate local times across different regions for consistent user experience. ```yaml # Summer schedule (May-September) triggers: summer_maintenance: type: "cron" input: cronExpression: "0 2 * 5-9 6" # Saturdays at 2 AM, May-Sept timezone: "UTC" defaultInput: season: "summer" maintenanceType: "light" # Winter schedule (October-April) triggers: winter_maintenance: type: "cron" input: cronExpression: "0 2 * 10-12,1-4 6" # Saturdays at 2 AM, Oct-Apr timezone: "UTC" defaultInput: season: "winter" maintenanceType: "heavy" ``` Adapt scheduling based on seasons, business cycles, or varying operational needs. Useful for maintenance windows, resource allocation, and seasonal campaigns. ## Common Use Cases ```yaml # Generate and send daily analytics report triggers: daily_analytics: type: "cron" input: cronExpression: "0 8 * * 1-5" # 8 AM weekdays timezone: "America/Los_Angeles" defaultInput: reportType: "analytics" recipients: ["team@company.com"] timeframe: "yesterday" ``` ```yaml # Sync data every 4 hours triggers: data_sync: type: "cron" input: cronExpression: "0 */4 * * *" defaultInput: syncType: "incremental" sources: ["database", "api", "files"] # Daily database backup triggers: daily_backup: type: "cron" input: cronExpression: "0 3 * * *" # 3 AM daily defaultInput: backupType: "full" retention: "7days" ``` ```yaml # Weekly cleanup on Sunday nights triggers: weekly_cleanup: type: "cron" input: cronExpression: "0 2 * * 0" # Sundays at 2 AM defaultInput: cleanupTasks: ["logs", "temp_files", "old_backups"] retentionDays: 30 # System health check every 15 minutes triggers: health_check: type: "cron" input: cronExpression: "*/15 * * * *" defaultInput: checkType: "system" services: ["api", "database", "cache"] alertOnFailure: true ``` ## Best Practices ### Scheduling Guidelines - **Avoid peak hours**: Schedule resource-intensive tasks during off-peak times - **Consider dependencies**: Ensure dependent workflows run in the correct order - **Use appropriate frequencies**: Don't over-schedule unnecessary tasks - **Plan for maintenance windows**: Schedule around known system maintenance ```yaml # Good: Off-peak scheduling triggers: data_processing: type: "cron" input: cronExpression: "0 2 * * *" # 2 AM when traffic is low # Avoid: Peak hour scheduling triggers: heavy_processing: type: "cron" input: cronExpression: "0 12 * * *" # Noon when traffic is high ``` ### Timezone Management - **Be explicit**: Always specify timezone when time matters - **Consider users**: Use timezone appropriate for your audience - **Document assumptions**: Make timezone choices clear in comments - **Handle DST**: Be aware of daylight saving time changes ```yaml # Good: Explicit timezone triggers: user_notification: type: "cron" input: cronExpression: "0 9 * * 1-5" timezone: "America/New_York" # Clear timezone # Avoid: Ambiguous timing triggers: unclear_timing: type: "cron" input: cronExpression: "0 9 * * 1-5" # What timezone? ``` ## Monitoring and Debugging ### Cron Context Variables Access scheduling information in your workflows: ```yaml # Available cron context - "{{ trigger.scheduledTime }}" # When it was supposed to run - "{{ trigger.actualTime }}" # When it actually ran - "{{ trigger.cronExpression }}" # The cron expression - "{{ trigger.timezone }}" # The configured timezone - "{{ trigger.defaultInput }}" # The default input provided ``` ### Execution Monitoring ```yaml # Log cron execution details - id: log_cron_execution type: script input: script: | console.log('Cron Execution:', { expression: trigger.cronExpression, scheduled: trigger.scheduledTime, actual: trigger.actualTime, delay: new Date(trigger.actualTime) - new Date(trigger.scheduledTime), timezone: trigger.timezone }); ``` ### Common Issues & Solutions **Jobs not running** - Verify cron expression syntax - Check timezone settings - Confirm system time is correct - Review workflow permissions **Inconsistent timing** - Monitor system load during execution - Check for competing scheduled jobs - Verify timezone handling - Review execution logs Most timing issues stem from incorrect cron expressions or timezone misconfigurations. Always test with a simple expression first. **Performance problems** - Analyze job duration patterns - Check resource consumption - Consider staggering job start times - Implement job timeouts **Resource optimization** - Use appropriate cron frequencies - Monitor memory and CPU usage - Implement circuit breakers - Consider job queuing for heavy tasks Performance issues often occur when multiple jobs run simultaneously. Stagger start times to distribute load. ```yaml # Test cron expressions triggers: test_cron: type: "cron" input: cronExpression: "* * * * *" # Every minute for testing defaultInput: testMode: true # Add execution tracking - id: track_execution type: script input: script: | const now = new Date(); const scheduled = new Date(trigger.scheduledTime); const delay = now - scheduled; console.log(`Cron job executed with ${delay}ms delay`); return { executionTime: now.toISOString(), scheduledTime: trigger.scheduledTime, delay: delay }; ``` Use frequent testing intervals during development, then adjust to production schedules. Monitor execution delays to identify system performance issues. ## Summary The Cron trigger is essential for creating reliable, time-based automation that keeps your systems running smoothly and your data up to date. --- # Integration Trigger URL: https://www.heliosapp.com/docs/workflows/triggers/integration Description: Event-driven workflow triggering with real-time processing and AI-powered filtering --- title: "Integration Trigger" excerpt: "Respond to events from connected services and applications with intelligent filtering" description: "Event-driven workflow triggering with real-time processing and AI-powered filtering" icon: Zap createdAt: "2025-07-31" updatedAt: "2025-07-31" --- import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; import { Tabs, Tab } from 'fumadocs-ui/components/tabs'; # Integration Trigger The Integration trigger enables event-driven workflow execution by responding to events from connected services and applications. It provides real-time processing with intelligent filtering capabilities to ensure workflows are triggered only when relevant events occur. ## Configuration ### Input Schema | Field | Type | Required | Description | |-----------------|----------|----------|------------------------------------------| | `integrationId` | `string` | Yes | ID of the connected integration service | | `eventTypes` | `string[]` | No | Specific event types to listen for | | `filterPrompt` | `string` | No | AI-powered filtering criteria | ### Basic Configuration ```yaml triggers: github_pr_trigger: type: "integration" input: integrationId: "github_main_repo" eventTypes: ["pull_request.opened", "pull_request.synchronized"] filterPrompt: "Only trigger for pull requests targeting the main branch" ``` ## Event Context Integration triggers provide rich context about the triggering event: ### Common Context Variables ```yaml # Available for all integration triggers - "{{ trigger.integrationId }}" # Source integration - "{{ trigger.eventType }}" # Specific event type - "{{ trigger.originalPayload }}" # Raw event data - "{{ trigger.filteredPayload }}" # Processed event data - "{{ trigger.source }}" # Event source system - "{{ trigger.timestamp }}" # When event occurred ``` ### Service-Specific Context ```yaml - "{{ trigger.repository }}" # Repository information - "{{ trigger.pullRequest }}" # PR details (if applicable) - "{{ trigger.author }}" # Event author - "{{ trigger.changes }}" # Files changed - "{{ trigger.labels }}" # Associated labels ``` ```yaml - "{{ trigger.channel }}" # Channel information - "{{ trigger.user }}" # Message author - "{{ trigger.message }}" # Message content - "{{ trigger.thread }}" # Thread context - "{{ trigger.mentions }}" # User mentions ``` ```yaml - "{{ trigger.table }}" # Affected table - "{{ trigger.operation }}" # CRUD operation - "{{ trigger.record }}" # Record data - "{{ trigger.changes }}" # Changed fields - "{{ trigger.metadata }}" # Transaction metadata ``` ## AI-Powered Filtering ### Smart Event Filtering Integration triggers use AI to intelligently filter events based on natural language criteria: ```yaml # Complex filtering with natural language triggers: smart_pr_review: type: "integration" input: integrationId: "github_repo" filterPrompt: | Trigger for pull requests that: - Have more than 100 lines of code changes - Modify files in the /src directory - Are not from dependabot - Target the main or develop branch - Include tests or documentation updates ``` ### Content-Based Filtering ```yaml # Filter based on content analysis triggers: content_moderation: type: "integration" input: integrationId: "social_platform" filterPrompt: | Trigger for posts that may need moderation: - Contain potentially offensive language - Have been reported by multiple users - Include suspicious links or attachments - Are from new accounts with no verification ``` ### Business Logic Filtering ```yaml # Business rule-based filtering triggers: high_value_customer: type: "integration" input: integrationId: "crm_system" filterPrompt: | Trigger for customer interactions where: - Customer lifetime value > $10,000 - Account status is 'premium' or 'enterprise' - Previous support tickets were escalated - Contact method preference is 'phone' or 'priority email' ``` ## Use Cases ### Automated Code Review ```yaml # AI-powered code review triggering triggers: code_review_trigger: type: "integration" input: integrationId: "github_main" filterPrompt: | Trigger automated review for pull requests that: - Modify critical system files (auth, payment, security) - Have more than 200 lines of changes - Are from external contributors - Touch database migration files ``` ### Customer Support Automation ```yaml # Intelligent support ticket routing triggers: support_ticket_router: type: "integration" input: integrationId: "zendesk_integration" filterPrompt: | Route urgent tickets that: - Contain keywords like 'down', 'broken', 'critical', 'urgent' - Are from enterprise customers - Relate to payment or billing issues - Were submitted outside business hours ``` ### Security Incident Response ```yaml # Security event monitoring triggers: security_incident: type: "integration" input: integrationId: "security_logs" filterPrompt: | Trigger security response for events indicating: - Multiple failed login attempts from same IP - Access attempts to restricted resources - Unusual data download patterns - Login from unexpected geographic locations ``` ### Content Management ```yaml # Social media content monitoring triggers: content_monitor: type: "integration" input: integrationId: "social_platform" filterPrompt: | Monitor content that may need attention: - Posts with high engagement but negative sentiment - Content flagged by community moderators - Brand mentions with complaint keywords - Viral content requiring quick response ``` ### Data Pipeline Triggers ```yaml # Data processing pipeline triggers: data_pipeline: type: "integration" input: integrationId: "data_warehouse" filterPrompt: | Start data processing when: - New data files are uploaded to staging - Files are larger than 100MB - Data contains customer transaction records - Upload occurs during processing windows ``` ## Advanced Patterns ### Multi-Integration Orchestration Coordinate events from multiple services to create sophisticated automation workflows: ```yaml # Coordinate events from multiple services triggers: deployment_trigger: type: "integration" input: integrationId: "github_repo" filterPrompt: "Release tagged and CI tests passed" notification_trigger: type: "integration" input: integrationId: "slack_devops" filterPrompt: "Deployment started or completed messages" monitoring_trigger: type: "integration" input: integrationId: "monitoring_system" filterPrompt: "Performance alerts after deployment" ``` ### Context-Aware Filtering Create intelligent filters that consider business context, time zones, and operational requirements: ```yaml # Business hours and user context triggers: business_hours_support: type: "integration" input: integrationId: "customer_portal" filterPrompt: | During business hours (9 AM - 6 PM EST), trigger for: - All customer inquiries - Any technical issues - Billing questions Outside business hours, only trigger for: - Critical system outages - Enterprise customer escalations - Security incidents ``` ### Workflow Suspension and Resume Resume suspended workflows based on external approval events and validation processes: ```yaml # Resume suspended workflows based on integration events triggers: workflow_resume: type: "integration" input: integrationId: "approval_system" filterPrompt: | Resume workflows when: - Manager approves pending requests - Budget approval is granted - Legal review is completed - External validation is received ``` ## Troubleshooting **Common symptoms:** - Workflows not starting despite events occurring - Integration showing as connected but no activity - Expected events not appearing in logs **Solutions:** - Verify integration connectivity - Check webhook configuration - Review event type filters - Validate filter prompt logic Most integration issues stem from connectivity problems or misconfigured event filtering. Always test with a simple, broad filter first. **Common symptoms:** - Workflows triggering for irrelevant events - High resource usage from unnecessary runs - Notification spam from over-active triggers **Solutions:** - Refine filter criteria - Add more specific conditions - Test with recent event data - Consider event volume patterns Over-triggering usually indicates filter criteria that are too broad. Use specific business logic and test with real event data to refine filters. **Common symptoms:** - Workflows receiving incomplete data - Expected variables are undefined - Missing payload fields in trigger context **Solutions:** - Verify integration permissions - Check payload parsing logic - Review service API changes - Validate webhook configuration Context issues often result from insufficient permissions or API changes. Review integration logs to identify missing data fields. ## Summary Integration triggers enable powerful, intelligent automation that responds to real-world events across your entire technology stack, making your workflows truly reactive and responsive to business needs. --- # Manual Trigger URL: https://www.heliosapp.com/docs/workflows/triggers/manual Description: Start workflows manually --- title: "Manual Trigger" excerpt: "Start workflows manually" description: "Start workflows manually" icon: Hand createdAt: "2023-11-07" updatedAt: "2025-07-31" --- import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; # Manual Trigger The Manual trigger enables you to start workflows manually. This is useful for testing and debugging workflows, or running workflows that are not triggered by an external event. ## Configuration ### Input Schema The Manual trigger allows you to provide test data that mimics other trigger types. This is essential for testing and debugging workflows without waiting for real events to occur. ## Test Data Examples Test integration triggers with realistic event data: ```json { "event": "pull_request", "action": "opened", "repository": "https://github.com/ExampleOrg/ExampleRepo", "ref": "refs/heads/feature-branch", "commit": "abc123def456789", "author": { "username": "developer", "email": "dev@example.com" }, "pullRequest": { "id": 123, "title": "Add new feature", "base": "main", "head": "feature-branch" } } ``` Common integration event types to test: - GitHub: `pull_request`, `push`, `issues`, `release` - Slack: `message`, `app_mention`, `reaction_added` - Database: `record.created`, `record.updated`, `record.deleted` Test webhook triggers with HTTP-style payloads: ```json { "method": "POST", "endpoint": "/test-webhook", "headers": { "content-type": "application/json", "authorization": "Bearer test-token", "user-agent": "TestClient/1.0" }, "body": { "userId": "user_123", "action": "order_completed", "data": { "orderId": "order_456", "amount": 99.99, "currency": "USD" }, "timestamp": "2024-01-15T10:30:00Z" }, "query": { "source": "test", "version": "v1" }, "remoteIp": "192.168.1.100" } ``` Test cron triggers with scheduling context: ```json { "cronExpression": "0 9 * * 1-5", "timezone": "America/New_York", "scheduledTime": "2024-01-15T09:00:00-05:00", "actualTime": "2024-01-15T09:00:02-05:00", "defaultInput": { "reportType": "daily", "includeMetrics": true } } ``` Useful for testing: - Scheduled report generation - Maintenance workflows - Data synchronization processes Test any workflow with custom data: ```json { "testMode": true, "testData": { "customField1": "value1", "customField2": 42, "customField3": ["item1", "item2", "item3"] }, "environment": "development", "timestamp": "2024-01-15T10:30:00Z" } ``` Best practices for manual testing: - Use realistic data that matches production patterns - Include edge cases and error conditions - Test with both valid and invalid data - Verify all required fields are present Ensure that the mandatory fields for the trigger type are provided in the input. Missing required fields will prevent workflow execution. ## Debugging and Best Practices ### Testing Guidelines - **Start simple**: Begin with minimal valid payloads, then add complexity - **Test edge cases**: Include boundary conditions and error scenarios - **Validate schemas**: Ensure your test data matches expected trigger formats - **Use realistic data**: Mirror production data patterns as closely as possible - **Test error handling**: Verify workflows handle invalid or missing data gracefully ### Common Issues **Missing required fields** - Workflows will fail silently if mandatory trigger fields are absent - Review trigger documentation for required fields - Use schema validation during testing **Invalid data types** - Ensure numeric fields contain numbers, strings contain text, etc. - Validate data types match expected trigger formats - Test with both valid and invalid data types Always validate your test data structure matches the expected trigger schema before execution. **Malformed JSON** - Verify JSON syntax is correct before testing - Use JSON validators to check syntax - Watch for trailing commas and quote mismatches **Timezone mismatches** - Use consistent timezone formats for time-based data - Prefer ISO 8601 format for timestamps - Be explicit about timezone assumptions JSON formatting errors are the most common cause of manual trigger failures. Always validate JSON before testing. ### Debugging Tips ```yaml # Add debugging output to your workflows - id: debug_trigger_data type: script input: script: | console.log('Manual trigger data:', { triggerType: typeof trigger, triggerKeys: Object.keys(trigger || {}), triggerData: trigger }); return { debugInfo: 'Check logs for trigger details', triggerReceived: !!trigger }; ``` --- # Webhook Trigger URL: https://www.heliosapp.com/docs/workflows/triggers/webhook Description: HTTP-based workflow triggering with custom endpoints, authentication, and real-time payload processing --- title: "Webhook Trigger" excerpt: "Start workflows via HTTP endpoints with flexible authentication and validation" description: "HTTP-based workflow triggering with custom endpoints, authentication, and real-time payload processing" icon: Globe createdAt: "2023-11-07" updatedAt: "2025-07-31" --- import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; # Webhook Trigger The Webhook trigger enables HTTP-based workflow execution by exposing custom endpoints that external systems can call. It provides flexible authentication, payload validation, and real-time processing capabilities for seamless integration with third-party services. ## Configuration ### Input Schema | Field | Type | Required | Description | |----------------|-------------------|----------|------------------------------------------------| | `endpoint` | `string` | Yes | Custom endpoint path (e.g., "/my-webhook") | | `method` | `"GET" \| "POST"` | No | HTTP method to accept (defaults to POST) | | `authentication` | `object` | No | Authentication configuration | | `validation` | `object` | No | Payload validation rules | | `response` | `object` | No | Custom response configuration | ### Basic Configuration ```yaml triggers: simple_webhook: type: "webhook" input: endpoint: "/deploy-notification" method: "POST" ``` ## Authentication Options ```yaml # Public webhook (use with caution) triggers: public_webhook: type: "webhook" input: endpoint: "/public-endpoint" method: "POST" ``` Use for internal services or non-sensitive data. Not recommended for production environments with external access. ```yaml # Secure with bearer token triggers: secure_webhook: type: "webhook" input: endpoint: "/secure-endpoint" method: "POST" authentication: type: "bearer" secret: "{{ secrets.webhook_token }}" ``` Standard OAuth-style authentication. Simple and secure for most third-party integrations. ```yaml # API key in header triggers: api_key_webhook: type: "webhook" input: endpoint: "/api-endpoint" authentication: type: "api_key" header: "X-API-Key" secret: "{{ secrets.api_key }}" ``` Common pattern for API services. Customize the header name to match your service requirements. ```yaml # Multiple custom headers triggers: custom_auth_webhook: type: "webhook" input: endpoint: "/custom-auth" authentication: type: "custom" required_headers: - "X-Source-System" - "X-Request-ID" secrets: X-Auth-Token: "{{ secrets.auth_token }}" ``` Maximum flexibility for complex authentication schemes requiring multiple headers or custom validation. ```yaml # GitHub-style signature verification triggers: github_webhook: type: "webhook" input: endpoint: "/github-events" authentication: type: "signature" algorithm: "sha256" header: "X-Hub-Signature-256" secret: "{{ secrets.github_webhook_secret }}" ``` Highest security level. Verifies payload integrity and authenticity using cryptographic signatures. ## Payload Validation ### Schema Validation ```yaml # Validate incoming payload structure triggers: validated_webhook: type: "webhook" input: endpoint: "/user-data" validation: schema: type: "object" required: ["userId", "action", "timestamp"] properties: userId: type: "string" pattern: "^user_[0-9]+$" action: type: "string" enum: ["created", "updated", "deleted"] timestamp: type: "string" format: "date-time" ``` ### Content Type Validation ```yaml # Ensure proper content type triggers: json_webhook: type: "webhook" input: endpoint: "/json-only" validation: content_type: "application/json" max_size: "1MB" ``` ## Response Configuration ### Custom Response ```yaml # Return custom response triggers: custom_response_webhook: type: "webhook" input: endpoint: "/custom-response" response: status: 200 headers: Content-Type: "application/json" X-Processed-By: "Helios" body: status: "received" message: "Webhook processed successfully" timestamp: "{{ now() }}" ``` ### Conditional Responses ```yaml # Different responses based on processing triggers: conditional_webhook: type: "webhook" input: endpoint: "/conditional" response: success: status: 200 body: { status: "success" } error: status: 400 body: { status: "error", message: "Invalid payload" } timeout: status: 408 body: { status: "timeout", message: "Processing timeout" } ``` ## Use Cases ```yaml # GitHub deployment webhook triggers: github_deploy: type: "webhook" input: endpoint: "/github-deploy" method: "POST" authentication: type: "signature" algorithm: "sha256" header: "X-Hub-Signature-256" secret: "{{ secrets.github_secret }}" validation: schema: type: "object" required: ["repository", "ref", "deployment"] ``` Perfect for automating deployments and managing CI/CD pipelines. GitHub, GitLab, and other platforms can trigger workflows based on repository events. ```yaml # Stripe payment webhook triggers: stripe_payments: type: "webhook" input: endpoint: "/stripe-events" authentication: type: "signature" algorithm: "sha256" header: "Stripe-Signature" secret: "{{ secrets.stripe_webhook_secret }}" validation: content_type: "application/json" required_headers: ["Stripe-Signature"] ``` Handle payment events securely with proper signature validation. Essential for e-commerce workflows, subscription management, and financial reconciliation. ```yaml # Support ticket webhook triggers: support_ticket: type: "webhook" input: endpoint: "/support-tickets" method: "POST" authentication: type: "bearer" secret: "{{ secrets.support_token }}" validation: schema: type: "object" required: ["ticket_id", "customer_id", "priority"] response: status: 202 body: message: "Ticket received and will be processed" eta: "< 5 minutes" ``` Streamline support operations by automatically routing tickets, escalating based on priority, and integrating with CRM systems. ```yaml # IoT sensor data triggers: iot_sensors: type: "webhook" input: endpoint: "/sensor-data" method: "POST" authentication: type: "api_key" header: "X-Device-Key" secret: "{{ secrets.device_key }}" validation: schema: type: "object" required: ["device_id", "timestamp", "readings"] max_size: "10KB" ``` Process real-time sensor data from IoT devices with proper validation and size limits. Ideal for monitoring systems, smart buildings, and industrial automation. ```yaml # CMS content updates triggers: cms_updates: type: "webhook" input: endpoint: "/content-updates" authentication: type: "custom" required_headers: ["X-CMS-Source", "X-Content-Type"] validation: content_type: "application/json" schema: type: "object" required: ["content_id", "action", "content_type"] ``` Automate content workflows when CMS content is created, updated, or published. Perfect for cache invalidation, search indexing, and content distribution. ## Advanced Patterns ```yaml # Different endpoints for different environments triggers: prod_webhook: type: "webhook" input: endpoint: "/prod/events" authentication: type: "bearer" secret: "{{ secrets.prod_webhook_token }}" staging_webhook: type: "webhook" input: endpoint: "/staging/events" authentication: type: "bearer" secret: "{{ secrets.staging_webhook_token }}" ``` Configure different webhook endpoints for production, staging, and development environments with environment-specific authentication and validation rules. ```yaml # Implement rate limiting triggers: rate_limited_webhook: type: "webhook" input: endpoint: "/rate-limited" validation: rate_limit: requests_per_minute: 60 burst_size: 10 response: rate_limit_exceeded: status: 429 headers: Retry-After: "60" body: error: "Rate limit exceeded" ``` Protect your webhooks from abuse and ensure system stability by implementing rate limiting with configurable thresholds and proper HTTP responses. ```yaml # Combined with filter prompt for intelligent processing triggers: filtered_webhook: type: "webhook" input: endpoint: "/filtered-events" filterPrompt: | Only process webhook calls that: - Have valid authentication - Contain event type 'order.completed' - Are from verified merchant accounts - Have transaction amount > $100 ``` Use AI-powered filtering to intelligently process only relevant webhook events based on complex business logic and conditions that would be difficult to express with traditional validation. ## Webhook Context Access webhook-specific information in your workflows: ### Available Context Variables ```yaml # Webhook-specific context - "{{ trigger.method }}" # HTTP method used - "{{ trigger.endpoint }}" # Endpoint that was called - "{{ trigger.headers }}" # Request headers - "{{ trigger.query }}" # Query parameters - "{{ trigger.body }}" # Request body - "{{ trigger.remoteIp }}" # Client IP address - "{{ trigger.userAgent }}" # Client user agent - "{{ trigger.contentType }}" # Request content type - "{{ trigger.contentLength }}" # Request size ``` ### Processing Webhook Data ```yaml # Access webhook data in workflow - id: process_webhook_data type: script input: script: | console.log('Webhook received:', { method: trigger.method, endpoint: trigger.endpoint, remoteIp: trigger.remoteIp, userAgent: trigger.userAgent, bodySize: trigger.contentLength, hasAuth: !!trigger.headers.authorization }); return { processed: true, source: trigger.remoteIp, data: trigger.body }; ``` ## Best Practices - **Always use authentication**: Avoid public webhooks for sensitive operations - **Validate all inputs**: Check payload structure, size, and content - **Use HTTPS only**: Ensure encrypted communication - **Implement rate limiting**: Prevent abuse and DoS attacks - **Log security events**: Track authentication failures and suspicious activity ```yaml # Secure webhook configuration triggers: secure_webhook: type: "webhook" input: endpoint: "/secure" authentication: type: "signature" algorithm: "sha256" header: "X-Signature" secret: "{{ secrets.webhook_secret }}" validation: content_type: "application/json" max_size: "1MB" schema: type: "object" required: ["timestamp", "data"] response: status: 200 body: { received: true } ``` - **Optimize payload processing**: Handle large payloads efficiently - **Use async processing**: Don't block webhook responses for long operations - **Implement timeouts**: Prevent hanging requests - **Monitor response times**: Track webhook performance metrics ```yaml # Performance-optimized webhook triggers: fast_webhook: type: "webhook" input: endpoint: "/fast-processing" validation: max_size: "5MB" timeout: "30s" response: status: 202 # Accepted for async processing body: { queued: true } ``` - **Return appropriate status codes**: Use proper HTTP status codes - **Provide meaningful error messages**: Help clients understand failures - **Implement retry logic**: Handle transient failures gracefully - **Log all errors**: Maintain detailed error logs for debugging ```yaml # Error handling configuration triggers: resilient_webhook: type: "webhook" input: endpoint: "/resilient" response: validation_error: status: 400 body: { error: "Invalid payload format" } auth_error: status: 401 body: { error: "Authentication required" } server_error: status: 500 body: { error: "Internal server error" } ``` ```yaml # Add monitoring to webhook workflows - id: monitor_webhook type: script input: script: | // Log webhook metrics metrics.increment('webhook.received', { endpoint: trigger.endpoint, method: trigger.method, source: trigger.remoteIp }); metrics.timing('webhook.processing_time', processingTime); return { monitored: true }; ``` Track key metrics: - Request volume and frequency - Response times and latency - Authentication success/failure rates - Error rates by type - Payload sizes and processing times ## Troubleshooting ### Common Issues **Webhook not receiving requests** - Verify endpoint URL and method - Check firewall and network configuration - Confirm webhook registration with external service - Review DNS and routing settings Most common cause is incorrect endpoint configuration. Double-check the URL path and HTTP method match what your external service is configured to send. **Authentication failures** - Validate authentication tokens and secrets - Check header names and formats - Verify signature algorithms and encoding - Review timestamp-based authentication windows Authentication issues often stem from mismatched secrets or incorrect header names. Ensure your secret matches exactly what the sending service expects. **Payload validation errors** - Verify JSON schema accuracy - Check required field presence - Validate data types and formats - Review content-type headers Schema validation failures usually indicate the incoming payload structure doesn't match your expectations. Use loose validation during testing, then tighten as needed. **Response issues** - Check response configuration syntax - Verify status codes and headers - Ensure response body is valid JSON - Review timeout settings Response configuration problems can cause the sending service to retry unnecessarily. Always return appropriate HTTP status codes and valid JSON when configured. ### Debugging Tips ```yaml # Debug webhook requests - id: debug_webhook type: script input: script: | console.log('Webhook Debug Info:', { trigger: { method: trigger.method, endpoint: trigger.endpoint, headers: trigger.headers, query: trigger.query, bodyPreview: JSON.stringify(trigger.body).substring(0, 200), remoteIp: trigger.remoteIp, timestamp: trigger.timestamp } }); ``` Webhook triggers provide the foundation for real-time, event-driven automation that connects your workflows to the broader ecosystem of web services and applications. --- # AI Node URL: https://www.heliosapp.com/docs/workflows/utility-nodes/ai Description: Integrate powerful language models from OpenAI, Anthropic, and Google into your workflows --- title: "AI Node" excerpt: "Leverage AI models for text generation, analysis, and processing" description: "Integrate powerful language models from OpenAI, Anthropic, and Google into your workflows" icon: Brain createdAt: "2025-01-08" updatedAt: "2025-01-08" --- # AI Node The AI node brings powerful language model capabilities into your workflows. It supports multiple AI providers and models, enabling text generation, analysis, code review, and intelligent data processing. ## Configuration ### Input Schema | Field | Type | Required | Description | |----------|----------|----------|-----------------------------| | `prompt` | `string` | Yes | The prompt to send to the AI model | ### Configuration Schema | Field | Type | Required | Default | Description | |------------|----------|----------|------------------------|------------------------------------------| | `provider` | `string` | No | `"anthropic"` | AI provider: "openai", "anthropic", or "google" | | `model` | `string` | No | `"claude-4-sonnet-20250514"` | Model name to use | | `api_key` | `string` | No | - | Custom API key (uses env vars by default) | ### Output Schema | Field | Type | Description | |----------|-------------|--------------------------------| | `output` | `JsonValue` | The AI model's response text | ## Basic Usage ### Simple Text Generation ```yaml - id: generate_content type: ai input: prompt: "Write a brief summary of the benefits of workflow automation" configuration: provider: "anthropic" model: "claude-4-sonnet-20250514" ``` ### Code Analysis ```yaml - id: review_code type: ai input: prompt: | Review this code for potential issues: {{ code_snippet }} Provide specific feedback on: - Security vulnerabilities - Performance concerns - Best practices configuration: provider: "openai" model: "gpt-4" ``` ## Advanced Examples ```yaml - id: analyze_data type: ai input: prompt: | Analyze this sales data and provide insights: {{ sales_data.output }} Please include: - Key trends and patterns - Anomalies or outliers - Actionable recommendations Format the response as structured JSON. - id: validate_analysis type: ai input: prompt: | Validate this analysis for accuracy and completeness: {{ analyze_data.output }} Are the conclusions supported by the data? ``` Perfect for business intelligence, financial analysis, and data-driven decision making workflows. ```yaml - id: gather_context type: search input: query: "{{ topic }}" maxResults: 5 - id: generate_article type: ai input: prompt: | Based on this research context: {{ gather_context.output }} Write a comprehensive article about {{ topic }}. Include relevant facts, statistics, and insights. Target audience: {{ target_audience }} configuration: provider: "anthropic" model: "claude-4-sonnet-20250514" ``` Ideal for marketing content, research reports, and educational material creation with fact-based foundations. ```yaml - id: evaluate_options type: ai input: prompt: | Evaluate these options for {{ decision_context }}: Options: {{ options }} Criteria: {{ evaluation_criteria }} Provide a structured recommendation with: - Pros and cons for each option - Risk assessment - Final recommendation with reasoning Response format: JSON ``` Essential for strategic planning, vendor selection, and complex business decisions requiring structured analysis. ## Tool Integration The AI node includes access to a common toolset for enhanced capabilities: ```yaml - id: ai_with_tools type: ai input: prompt: | Help me research {{ topic }} and create a summary. Use available tools to gather current information. ``` Tools automatically available: - Web search capabilities - Data processing functions - Structured output generation ## Best Practices ### Prompt Engineering **Clear Instructions:** ```yaml input: prompt: | Task: Analyze customer feedback Input: {{ feedback_data }} Output format: JSON with sentiment, themes, and action items Context: SaaS product feedback analysis ``` **Structured Prompts:** ```yaml input: prompt: | ## Context {{ context }} ## Task {{ specific_task }} ## Requirements - {{ requirement_1 }} - {{ requirement_2 }} ## Output Format {{ desired_format }} ``` ### Error Handling ```yaml - id: ai_task type: ai input: prompt: "{{ complex_prompt }}" configuration: errorHandling: "continue" retryPolicy: maxRetries: 2 - id: validate_output type: condition input: if: "{{ ai_task.output && ai_task.output.length > 0 }}" then: ["process_result"] else: ["handle_ai_error"] ``` ### Cost Optimization ```yaml # Use appropriate models for task complexity - id: simple_classification type: ai configuration: provider: "openai" model: "gpt-4o-mini" # Faster, cheaper for simple tasks - id: complex_analysis type: ai configuration: provider: "anthropic" model: "claude-4-sonnet-20250514" # More capable for complex tasks ``` --- # Crawler Node URL: https://www.heliosapp.com/docs/workflows/utility-nodes/crawler Description: Powerful web crawling and scraping using Firecrawl for content extraction and website analysis --- title: "Crawler Node" excerpt: "Extract content and data from websites and web pages" description: "Powerful web crawling and scraping using Firecrawl for content extraction and website analysis" icon: Globe createdAt: "2025-01-08" updatedAt: "2025-01-08" --- # Crawler Node The Crawler node enables comprehensive web crawling and content extraction using Firecrawl. It can crawl entire websites, extract structured data, take screenshots, and convert web content to various formats for further processing. ## Configuration ### Input Schema | Field | Type | Required | Default | Description | |------------------------|------------|----------|---------|------------------------------------------------| | `url` | `string` | Yes | - | Target URL to crawl | | `includePaths` | `array` | No | `[]` | Path patterns to include in crawling | | `excludePaths` | `array` | No | `[]` | Path patterns to exclude from crawling | | `limit` | `number` | No | `100` | Maximum number of pages to crawl | | `maxDepth` | `number` | No | `3` | Maximum crawling depth | | `outputFormats` | `object` | No | - | Output format configuration | | `additionalCrawlParams`| `JsonValue`| No | - | Additional Firecrawl parameters as JSON | #### Output Formats Schema | Field | Type | Required | Default | Description | |-----------|------------|----------|-------------------|--------------------------------------------| | `formats` | `array` | No | `["markdown"]` | Output formats: markdown, html, json, content, links, screenshots | | `maxAge` | `number` | No | `86400000` | Cache max age in milliseconds (24 hours) | ### Configuration Schema | Field | Type | Required | Description | |----------|----------|----------|---------------------------------| | `apiKey` | `string` | No | Custom Firecrawl API key | ### Output Schema | Field | Type | Description | |----------|-------------|----------------------------------------| | `output` | `JsonValue` | Extracted content and data from crawl | ## Basic Usage ### Simple Page Crawl ```yaml - id: crawl_website type: crawler input: url: "https://example.com" limit: 50 maxDepth: 2 ``` ### Targeted Content Extraction ```yaml - id: extract_blog_posts type: crawler input: url: "https://blog.example.com" includePaths: ["/posts/", "/articles/"] excludePaths: ["/admin/", "/private/"] limit: 25 outputFormats: formats: ["markdown", "json"] maxAge: 3600000 # 1 hour cache ``` ## Advanced Examples ```yaml - id: crawl_docs type: crawler input: url: "https://docs.example.com" includePaths: ["/docs/", "/guides/", "/api/"] excludePaths: ["/legacy/", "/deprecated/"] limit: 100 maxDepth: 4 outputFormats: formats: ["markdown", "content"] maxAge: 7200000 # 2 hours cache - id: process_documentation type: ai input: prompt: | Process this documentation content: {{ crawl_docs.output }} Create a structured knowledge base with: - Topic categorization - Key concepts extraction - Cross-references ``` Perfect for building knowledge bases, API documentation analysis, and technical content organization. ```yaml - id: crawl_products type: crawler input: url: "https://shop.example.com" includePaths: ["/products/", "/categories/"] excludePaths: ["/cart/", "/checkout/", "/account/"] limit: 200 outputFormats: formats: ["json", "content"] additionalCrawlParams: | { "extractorOptions": { "mode": "llm-extraction", "extractionPrompt": "Extract product details including name, price, description, and specifications" } } - id: analyze_products type: ai input: prompt: | Analyze this product data: {{ crawl_products.output }} Provide insights on: - Price ranges and trends - Product categories - Popular features ``` Ideal for competitive pricing analysis, product catalog management, and market research automation. ```yaml - id: crawl_news_site type: crawler input: url: "https://news.example.com" includePaths: ["/articles/", "/news/"] excludePaths: ["/ads/", "/sponsored/"] limit: 50 maxDepth: 2 outputFormats: formats: ["markdown", "content", "links"] - id: extract_key_articles type: ai input: prompt: | From this news content: {{ crawl_news_site.output }} Extract the 10 most important articles with: - Headlines - Summaries - Key topics - Publication dates ``` Essential for media monitoring, content curation, and real-time news analysis workflows. ```yaml - id: monitor_website type: crawler input: url: "{{ target_website }}" limit: 20 outputFormats: formats: ["content", "screenshots"] maxAge: 3600000 # Check for changes hourly - id: detect_changes type: ai input: prompt: | Compare this current content with previous version: Current: {{ monitor_website.output }} Previous: {{ previous_crawl.output }} Identify and summarize any significant changes. - id: notify_changes type: condition input: if: "{{ detect_changes.output.hasChanges }}" then: ["send_notification"] else: ["log_no_changes"] ``` Critical for website change detection, compliance monitoring, and automated content tracking. ## Output Formats ### Markdown Format - Clean, structured text representation - Preserves headers, links, and formatting - Ideal for AI processing and analysis ### HTML Format - Raw HTML content - Preserves original structure and styling - Useful for visual analysis ### JSON Format - Structured data extraction - Programmatically accessible - Best for data processing ### Content Format - Plain text content - Minimal formatting - Fast processing ### Links Format - Extracted hyperlinks - Link relationship mapping - Navigation structure analysis ### Screenshots Format - Visual page captures - Layout verification - Visual change detection ## Advanced Configuration ### Custom Extraction Parameters ```yaml - id: custom_extraction type: crawler input: url: "{{ target_url }}" additionalCrawlParams: | { "pageOptions": { "waitFor": 2000, "screenshot": true }, "extractorOptions": { "mode": "llm-extraction", "extractionSchema": { "type": "object", "properties": { "title": {"type": "string"}, "price": {"type": "number"}, "description": {"type": "string"} } } } } ``` ### Rate-Limited Crawling ```yaml - id: gentle_crawl type: crawler input: url: "{{ website_url }}" limit: 10 maxDepth: 1 configuration: timeoutMs: 60000 # 1 minute timeout - id: pause_between_crawls type: suspend input: type: "duration" duration: "PT5S" # 5 second pause - id: continue_crawl type: crawler input: url: "{{ next_section_url }}" ``` ## Error Handling ```yaml - id: robust_crawl type: crawler input: url: "{{ target_url }}" limit: 100 configuration: errorHandling: "continue" retryPolicy: maxRetries: 3 - id: validate_crawl_results type: condition input: if: "{{ robust_crawl.output && robust_crawl.output.data }}" then: ["process_results"] else: ["handle_crawl_failure"] - id: handle_crawl_failure type: ai input: prompt: "Analyze why crawling failed and suggest alternatives for URL: {{ target_url }}" ``` --- # Deep Research Node URL: https://www.heliosapp.com/docs/workflows/utility-nodes/deep-research Description: Perform in-depth research and analysis using specialized research-focused AI models from Perplexity and Google --- title: "Deep Research Node" excerpt: "Conduct comprehensive research using advanced AI models with extended capabilities" description: "Perform in-depth research and analysis using specialized research-focused AI models from Perplexity and Google" icon: Microscope createdAt: "2025-01-08" updatedAt: "2025-01-08" --- # Deep Research Node The Deep Research node is designed for comprehensive, time-intensive research tasks. It leverages specialized research-focused AI models that can perform deep analysis, fact-checking, and extensive information gathering with built-in web search capabilities. ## Configuration ### Input Schema | Field | Type | Required | Description | |----------|----------|----------|-----------------------------| | `prompt` | `string` | Yes | The research query or topic to investigate | ### Configuration Schema | Field | Type | Required | Default | Description | |------------|----------|----------|------------------------|------------------------------------------| | `provider` | `string` | No | `"perplexity"` | Research provider: "perplexity" or "google" | | `model` | `string` | No | `"sonar-deep-research"` | Model name optimized for research tasks | | `api_key` | `string` | No | - | Custom API key (uses env vars by default) | ### Output Schema | Field | Type | Description | |----------|-------------|--------------------------------| | `output` | `JsonValue` | Comprehensive research results in markdown format | ## Key Features - **Extended Timeout**: 60-minute timeout for comprehensive research - **Research-Optimized Models**: Specialized models designed for deep investigation - **Web Search Integration**: Built-in capability to search and analyze web sources - **Structured Output**: Results formatted in clear, readable markdown - **Advanced Telemetry**: Detailed tracking for research workflows ## Basic Usage ### Simple Research Query ```yaml - id: research_topic type: deep-research input: prompt: "Research the latest developments in renewable energy storage technologies" configuration: provider: "perplexity" model: "sonar-deep-research" ``` ### Market Analysis ```yaml - id: market_research type: deep-research input: prompt: | Conduct a comprehensive market analysis for electric vehicles in 2024: - Market size and growth trends - Key players and market share - Technology developments - Consumer adoption patterns - Regulatory landscape - Future outlook and projections ``` ## Advanced Examples ```yaml - id: competitor_analysis type: deep-research input: prompt: | Research {{ company_name }}'s main competitors in the {{ industry }} sector: For each competitor, analyze: - Business model and revenue streams - Market positioning and strategy - Recent product launches or innovations - Financial performance and funding - Strengths and weaknesses - Strategic partnerships Provide insights on market trends and opportunities. configuration: provider: "perplexity" model: "sonar-deep-research" ``` Perfect for strategic planning, market entry decisions, and competitive positioning analysis. ```yaml - id: tech_research type: deep-research input: prompt: | Research the current state and future prospects of {{ technology }}: Cover the following aspects: - Technical specifications and capabilities - Current implementations and use cases - Advantages and limitations - Industry adoption rates - Research and development trends - Regulatory considerations - Investment and funding landscape - Expert opinions and predictions Include specific examples, statistics, and credible sources. ``` Essential for technology evaluation, R&D planning, and innovation strategy development. ```yaml - id: investment_analysis type: deep-research input: prompt: | Conduct thorough due diligence research on {{ investment_target }}: Research areas: - Company background and history - Financial performance and metrics - Management team and governance - Market opportunity and competition - Risk factors and challenges - Growth strategy and pipeline - Industry trends and outlook - Analyst opinions and ratings Provide a balanced assessment with both opportunities and risks. configuration: provider: "google" model: "gemini-2.5-pro" ``` Critical for investment decisions, due diligence processes, and risk assessment workflows. ### Research Pipeline with Follow-up Analysis ```yaml - id: initial_research type: deep-research input: prompt: "Research {{ research_topic }} and identify the top 5 most important findings" - id: detailed_analysis type: deep-research input: prompt: | Based on this initial research: {{ initial_research.output }} Conduct deeper analysis on each of the top 5 findings: - Verify information with multiple sources - Identify potential biases or limitations - Explore counterarguments or alternative perspectives - Provide additional context and implications - Suggest areas for further investigation - id: synthesis_report type: ai input: prompt: | Create a comprehensive executive summary from this research: Initial findings: {{ initial_research.output }} Detailed analysis: {{ detailed_analysis.output }} Structure the summary with: - Key insights and conclusions - Supporting evidence and sources - Implications and recommendations - Areas of uncertainty or further research needed ``` ## Provider Comparison ### Perplexity (Default) - **Sonar Deep Research**: Specialized for comprehensive research tasks - **Web Search Integration**: Real-time access to current information - **Source Citation**: Automatic attribution of sources - **Best For**: Current events, market research, fact-checking ### Google - **Gemini Models**: Advanced reasoning and analysis capabilities - **Multimodal Support**: Can process various content types - **Large Context**: Handle extensive research materials - **Best For**: Complex analysis, technical research, academic inquiries ## Best Practices ### Research Query Optimization - **Be Specific**: Clearly define the scope and objectives of your research - **Structure Requests**: Use bullet points or numbered lists for complex queries - **Include Context**: Provide relevant background information when needed - **Specify Format**: Request specific output formats (e.g., tables, summaries) ### Workflow Integration - **Chain Research**: Use multiple deep research nodes for iterative investigation - **Validate Findings**: Follow up with fact-checking or source verification - **Synthesize Results**: Combine multiple research outputs for comprehensive reports - **Version Control**: Track research iterations and updates ### Performance Considerations - **Timeout Awareness**: Deep research can take up to 60 minutes - **Resource Planning**: Consider the computational cost of extensive research - **Parallel Processing**: Use multiple nodes for different research aspects - **Caching Strategy**: Store results to avoid redundant research ## Related Nodes - **[AI Node](./ai)**: For general AI text processing and analysis - **[Search Node](./search)**: For basic web search functionality - **[Crawler Node](./crawler)**: For structured web data extraction - **[HTTP Node](./http)**: For API-based data gathering --- # HTTP Node URL: https://www.heliosapp.com/docs/workflows/utility-nodes/http Description: Send HTTP requests with full control over methods, headers, and body content --- title: "HTTP Node" excerpt: "Make HTTP requests to external APIs and services" description: "Send HTTP requests with full control over methods, headers, and body content" icon: Globe createdAt: "2025-01-08" updatedAt: "2025-01-08" --- # HTTP Node The HTTP node enables your workflows to communicate with external APIs and services through HTTP requests. It supports all standard HTTP methods with comprehensive request and response handling. ## Configuration ### Input Schema | Field | Type | Required | Default | Description | |----------|---------------------|----------|---------|---------------------------------------| | `method` | `string` | No | `"GET"` | HTTP method (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS) | | `url` | `string` | Yes | - | Target URL (must be valid URL format) | | `headers`| `Record` | No | `{}` | Custom headers for the request | | `body` | `JsonValue` | No | - | Request body (JSON, string, or null) | ### Output Schema | Field | Type | Description | |-------------|-----------------------|------------------------------------------| | `ok` | `boolean` | Whether the request was successful | | `status` | `number` | HTTP status code | | `statusText`| `string` | HTTP status message | | `headers` | `Record` | Response headers | | `body` | `JsonValue` | Response body (parsed based on content-type) | | `error` | `{message: string, code?: string}` | Error details (if request failed) | ## Basic Usage ### GET Request ```yaml - id: fetch_user type: http input: method: "GET" url: "https://api.example.com/users/123" headers: Authorization: "Bearer {{ token }}" ``` ### POST Request ```yaml - id: create_user type: http input: method: "POST" url: "https://api.example.com/users" headers: Content-Type: "application/json" Authorization: "Bearer {{ token }}" body: name: "{{ user.name }}" email: "{{ user.email }}" ``` ## Advanced Examples ```yaml - id: api_call type: http input: method: "POST" url: "{{ api_endpoint }}" headers: Authorization: "Bearer {{ api_token }}" X-API-Version: "2023-01" body: data: "{{ processed_data }}" - id: check_response type: condition input: if: "{{ api_call.output.ok }}" then: ["process_success"] else: ["handle_error"] ``` Perfect for robust API integrations with proper error handling and response validation. ```yaml - id: upload_file type: http input: method: "POST" url: "https://upload.example.com/files" headers: Authorization: "Bearer {{ upload_token }}" Content-Type: "multipart/form-data" body: "{{ file_data }}" ``` Essential for file upload workflows, document processing, and media management systems. ```yaml - id: api_with_retry type: loop input: forN: 3 configuration: mode: "sequential" - id: try_request type: http input: method: "GET" url: "{{ unreliable_endpoint }}" headers: Authorization: "Bearer {{ token }}" - id: exponential_backoff type: suspend input: type: "duration" duration: "{{ 'PT' + (loop.iteration * 2) + 'S' }}" ``` Critical for reliable communication with external services that may experience temporary failures. ## Response Handling The HTTP node automatically handles different content types: - **JSON**: Automatically parsed into JavaScript objects - **Text**: Returned as strings - **Binary**: Encoded as base64 strings - **Empty**: Returns null ## Error Handling When requests fail, the node returns: ```yaml { "ok": false, "status": 0, "statusText": "Network Error", "headers": {}, "error": { "message": "Connection timeout", "code": "NETWORK_ERROR" } } ``` ## Best Practices ### Retry Logic Combine with control nodes for robust error handling: ```yaml - id: api_with_retry type: loop input: forN: 3 configuration: mode: "sequential" - id: try_request type: http input: url: "{{ api_url }}" - id: check_success type: condition input: if: "{{ try_request.output.ok }}" then: ["success_handler"] else: ["retry_or_fail"] ``` ### Rate Limiting Use suspend nodes to respect API rate limits: ```yaml - id: api_call type: http input: url: "{{ api_url }}" - id: rate_limit_delay type: suspend input: type: "duration" duration: "PT1S" # Wait 1 second between calls ``` --- # Script Node URL: https://www.heliosapp.com/docs/workflows/utility-nodes/script Description: Run scripts for data transformations and automation tasks with built-in support for multiple languages and package management --- title: "Script Node" excerpt: "Execute custom scripts in bash, Python, or JavaScript/TypeScript" description: "Run scripts for data transformations and automation tasks with built-in support for multiple languages and package management" icon: Terminal createdAt: "2025-01-08" updatedAt: "2025-01-08" --- # Script Node The Script node lets you run custom code directly inside your workflows. It supports **Bash**, **Python**, and **JavaScript/TypeScript** - each executed in an isolated sandbox environment. Scripts are executed using the following runners: | Language | Runner | Description | | -------- | -------------------------------- | --------------------------------------------------------- | | Bash | `/bin/bash` | Native shell execution | | Python | [uv](https://docs.astral.sh/uv/) | Fast Python package runner with inline dependency support | | JavaScript/TypeScript | [Deno](https://deno.com/) | Secure JavaScript/TypeScript runtime with built-in module support | ## Configuration ### Input | Field | Type | Required | Default | Description | | ---------- | -------- | -------- | -------- | ----------------------------------------------- | | `language` | `string` | No | `"bash"` | Script language: `bash`, `python`, `typescript` | | `script` | `string` | Yes | - | The script code to execute | ### Output | Field | Type | Description | | ---------- | -------- | --------------------------------------------------------------- | | `stdout` | `string` | Standard output from the script | | `stderr` | `string` | Standard error output (truncated to 1024 characters on failure) | | `exitCode` | `number` | Process exit code (0 = success) | ## Basic Usage ### Bash ```bash echo "Current date: $(date)" echo "Files in /tmp:" ls -la /tmp ``` ### Python ```python import json data = {"status": "ok", "count": 42} print(json.dumps(data)) ``` ### JavaScript/TypeScript ```typescript const result = { transformed: true, timestamp: Date.now() }; console.log(JSON.stringify(result)); ``` ## 3rd Party Dependencies One of the most powerful features of the Script node is the ability to pull in third-party packages without any pre-configuration. ### Python - uv inline dependencies Python scripts are executed with [uv](https://docs.astral.sh/uv/), which supports [inline script metadata](https://docs.astral.sh/uv/guides/scripts/#declaring-script-dependencies) for declaring dependencies. Add a special comment block at the top of your script and `uv` will automatically install the packages before running: ```python # /// script # dependencies = [ # "requests", # "beautifulsoup4", # ] # /// import requests from bs4 import BeautifulSoup resp = requests.get("https://example.com") soup = BeautifulSoup(resp.text, "html.parser") print(soup.title.string) ``` ### JavaScript/TypeScript - Deno imports JavaScript/TypeScript scripts are executed with [Deno](https://deno.com/), which supports [importing third-party modules](https://docs.deno.com/runtime/fundamentals/modules/#importing-third-party-modules-and-libraries) directly via `npm:`, `jsr:`, or URL specifiers - no install step needed: ```typescript import { nanoid } from "npm:nanoid@5"; import { camelCase } from "jsr:@luca/cases@1.0.0"; const id = nanoid(); const name = camelCase("hello world"); console.log(JSON.stringify({ id, name })); ``` ## Error Handling A script node fails when the process exits with a non-zero exit code. On failure, `stderr` is captured (truncated to the last 1024 characters) and surfaced as the error message. Use a condition node after the script to branch on success or failure based on the exit code. --- # Search Node URL: https://www.heliosapp.com/docs/workflows/utility-nodes/search Description: Google Custom Search integration for research and information gathering --- title: "Search Node" excerpt: "Perform web searches and retrieve relevant results" description: "Google Custom Search integration for research and information gathering" icon: Search createdAt: "2025-01-08" updatedAt: "2025-01-08" --- # Search Node The Search node enables web search capabilities in your workflows using Google Custom Search. It's perfect for research, information gathering, competitive analysis, and real-time data lookup. ## Configuration ### Input Schema | Field | Type | Required | Default | Description | |--------------|----------|----------|---------|-------------------------------------------| | `query` | `string` | Yes | - | Search query (minimum 1 character) | | `maxResults` | `number` | No | `5` | Maximum results to return (1-10) | | `safeSearch` | `string` | No | `"off"` | Safe search setting: "off" or "strict" | | `language` | `string` | No | `"en"` | Search language code | | `region` | `string` | No | `"US"` | Search region code | ### Configuration Schema | Field | Type | Required | Description | |------------------------|----------|----------|--------------------------------| | `googleApiKey` | `string` | No | Custom Google API key | | `googleSearchEngineId` | `string` | No | Custom Search Engine ID | ### Output Schema | Field | Type | Description | |----------------|------------|------------------------------------------------| | `results` | `array` | Array of search results | | `totalResults` | `number` | Total number of results found (optional) | | `searchTime` | `number` | Time taken for search in seconds (optional) | | `query` | `string` | The search query that was executed | #### Result Object Schema | Field | Type | Description | |--------------|----------|----------------------------------| | `title` | `string` | Page title | | `url` | `string` | Page URL | | `snippet` | `string` | Page description snippet | | `displayUrl` | `string` | Display URL (shortened format) | ## Basic Usage ### Simple Search ```yaml - id: basic_search type: search input: query: "workflow automation best practices" maxResults: 5 ``` ### Localized Search ```yaml - id: localized_search type: search input: query: "restaurant recommendations" maxResults: 10 language: "fr" region: "FR" safeSearch: "strict" ``` ## Advanced Examples ```yaml - id: primary_research type: search input: query: "{{ research_topic }} 2024 trends" maxResults: 5 - id: competitive_analysis type: search input: query: "{{ company_name }} competitors analysis" maxResults: 3 - id: compile_research type: ai input: prompt: | Based on this research data: Primary: {{ primary_research.output.results }} Competitive: {{ competitive_analysis.output.results }} Create a comprehensive research summary. ``` Perfect for academic research, market analysis, and comprehensive topic investigation combining multiple search angles. ```yaml - id: find_sources type: search input: query: "{{ content_topic }} authoritative sources" maxResults: 8 safeSearch: "strict" - id: filter_quality_sources type: ai input: prompt: | From these search results: {{ find_sources.output.results }} Identify the 3 most authoritative and relevant sources. Return as JSON array with reasoning. - id: extract_content type: crawler input: url: "{{ filtered_source.url }}" ``` Ideal for content creation workflows where quality sources are critical for credibility and accuracy. ```yaml - id: market_trends type: search input: query: "{{ industry }} market trends {{ current_year }}" maxResults: 6 - id: competitor_news type: search input: query: "{{ competitor_name }} news announcements" maxResults: 4 - id: analyze_intelligence type: ai input: prompt: | Analyze this market intelligence: Trends: {{ market_trends.output.results }} Competitor: {{ competitor_news.output.results }} Provide strategic insights and opportunities. ``` Essential for business intelligence, competitive analysis, and strategic planning based on current market data. ```yaml - id: current_events type: search input: query: "{{ topic }} latest news today" maxResults: 3 - id: fact_check type: search input: query: "{{ claim }} fact check verification" maxResults: 5 safeSearch: "strict" ``` Critical for staying current with breaking news, verifying information, and ensuring content accuracy. ## Search Optimization ### Query Strategies **Specific Queries:** ```yaml input: query: "TypeScript best practices 2024 enterprise applications" ``` **Quoted Phrases:** ```yaml input: query: '"API security" OR "REST API" vulnerability assessment' ``` **Site-Specific Search:** ```yaml input: query: "site:github.com TypeScript workflow automation" ``` **Time-Sensitive Queries:** ```yaml input: query: "{{ topic }} after:2024-01-01" ``` ## Configuration Options ### Safe Search Settings ```yaml # Strict filtering for family-friendly content - id: safe_search type: search input: query: "{{ user_query }}" safeSearch: "strict" ``` ## Error Handling ```yaml - id: search_with_fallback type: search input: query: "{{ primary_query }}" configuration: errorHandling: "continue" - id: check_results type: condition input: if: "{{ search_with_fallback.output.results.length > 0 }}" then: ["process_results"] else: ["try_alternative_search"] - id: try_alternative_search type: search input: query: "{{ fallback_query }}" ``` ---