# GoRunner docs > Workflow automation you can run on GoRunner Cloud, on your own server, or inside your product. ## Build - [Build](https://docs.gorunner.io/build.md): Start here, then common tasks - [What is GoRunner?](https://docs.gorunner.io/build/what-is-gorunner.md): What GoRunner does, in 150 words and one canvas picture. - [Build your first workflow](https://docs.gorunner.io/build/first-workflow.md): A form that adds each answer as a row in Google Sheets. - [Let Keel build it for you](https://docs.gorunner.io/build/build-with-keel.md): Describe a workflow, apply Keel’s card, then test and publish. Self-hosted: an admin sets the AI provider first. - [Sign up and sign in](https://docs.gorunner.io/build/sign-up-and-sign-in.md): Create an account, then the emailed link or code (Send sign-in link, Or enter the code from the email), and Use your password. Self-hosted: you start from an invite. - [Find your way around](https://docs.gorunner.io/build/find-your-way-around.md): The sidebar (Automate, Resources), ⌘K, and the organization and workspace switcher. - [What is a workflow?](https://docs.gorunner.io/build/what-is-a-workflow.md): Trigger, steps, draft, Live and runs, with one canvas picture. - [Runs](https://docs.gorunner.io/build/runs.md): What a run is, test runs and production runs, and the six states. - [Connections](https://docs.gorunner.io/build/connections.md): One account of an app, shared by the workspace, and its states. - [Workspaces and roles](https://docs.gorunner.io/build/workspaces-and-roles.md): Organization › workspace, roles, and the switcher. - [Choose a trigger](https://docs.gorunner.io/build/choose-a-trigger.md): Which trigger fits which job, then where to read more. - [Start from a form](https://docs.gorunner.io/build/start-from-a-form.md): The Form trigger: fields and the public form URL (its host differs by edition). - [Start from a webhook](https://docs.gorunner.io/build/start-from-a-webhook.md): Catch Webhook, the address, and Return Response. - [Run on a schedule](https://docs.gorunner.io/build/run-on-a-schedule.md): The Schedule trigger and how to preview its next runs. - [Run a workflow by hand](https://docs.gorunner.io/build/run-by-hand.md): The Manual trigger ("When someone runs it") and the Run key. - [Start when another workflow fails or finishes](https://docs.gorunner.io/build/react-to-other-runs.md): The Error (On Workflow Error) and Run Finished triggers. - [Add, move and remove steps](https://docs.gorunner.io/build/add-steps.md): Add a step, the picker, renaming a step, and what a rename does to expressions. - [Use data from earlier steps](https://docs.gorunner.io/build/use-data-from-earlier-steps.md): Map a value with the data picker or type an expression. - [Branch and loop](https://docs.gorunner.io/build/branch-and-loop.md): Branch, Switch, Filter and Loop, and which one to choose. - [Handle errors](https://docs.gorunner.io/build/handle-errors.md): On error: Stop the run, Continue, Run error steps; retries and timeout. - [Variables](https://docs.gorunner.io/build/variables.md): Values stored on the workflow, sensitive variables, and variables versus connections. - [Ask for approval](https://docs.gorunner.io/build/ask-for-approval.md): Approval and Wait for Approval / Webhook, the Held state, and deciding a held run. - [Run another workflow](https://docs.gorunner.io/build/run-another-workflow.md): Sub-flow with When Called by Another Workflow. The step waits for the other workflow, and there is no "don’t wait" option. - [Test, publish and go back to a version](https://docs.gorunner.io/build/test-and-publish.md): Test, Publish, Unpublish, versions, and going back to one. - [Limit runs at once](https://docs.gorunner.io/build/runs-at-once.md): Runs at once, and Wait in line or Refuse. - [Organize workflows](https://docs.gorunner.io/build/organize-workflows.md): Folders, tags, duplicate, export and delete. - [Use and save templates](https://docs.gorunner.io/build/templates.md): Use a template, and save a workflow as one. Embed: templates the partner shares. - [Import from n8n or Activepieces](https://docs.gorunner.io/build/import-workflows.md): A .json from n8n, Activepieces or GoRunner, up to 5 MB each, and finishing the import with Keel. - [What Keel can do](https://docs.gorunner.io/build/keel.md): Commands, the four autonomy levels, and cards. - [Set up Keel](https://docs.gorunner.io/build/set-up-keel.md): Owners and admins set the provider and the limits in Settings › Organization › Keel. - [Fix failing workflows with Keel](https://docs.gorunner.io/build/fix-failures-with-keel.md): /fix, and the proposal card. - [Find out why a run failed](https://docs.gorunner.io/build/why-a-run-failed.md): The run page, the failed step, and its input and output. - [Run again, cancel or delete runs](https://docs.gorunner.io/build/rerun-and-cancel.md): One run or many, from the Runs page. - [Audit log](https://docs.gorunner.io/build/audit-log.md): Read and export the log. No license needed (a license’s Audit export is for Platform › Audit log). - [Event streaming](https://docs.gorunner.io/build/event-streaming.md): Send events to your own destination. - [Invite people and set roles](https://docs.gorunner.io/build/invite-people.md): Members and People. Self-hosted without email: see the link to /self-host/sign-in-without-email. - [Turn on two-factor sign-in](https://docs.gorunner.io/build/two-factor.md): Settings › Account, and what happens when it is lost. - [Set up single sign-on](https://docs.gorunner.io/build/single-sign-on.md): Settings › Organization › Single sign-on (OIDC or SAML). Self-hosted: needs a license with Single sign-on. - [Provision people with SCIM](https://docs.gorunner.io/build/scim.md): Settings › Organization, SCIM. Self-hosted: license-gated. - [Make an API token](https://docs.gorunner.io/build/api-tokens.md): Settings › Workspace › API tokens, scopes, and revoking a token. - [A run failed](https://docs.gorunner.io/build/a-run-failed.md): Symptoms by the exact error text. - [A trigger didn’t fire](https://docs.gorunner.io/build/a-trigger-didnt-fire.md): Not published, paused, schedule time zone, webhook token rotated, and so on. - [A connection stopped working](https://docs.gorunner.io/build/a-connection-stopped-working.md): One row per connection state: Not working, Signed out, Expiring and the rest. - [Expressions](https://docs.gorunner.io/build/expressions.md): Syntax, paths and functions, and Intl in 11 locales. - [Triggers](https://docs.gorunner.io/build/triggers.md): Every trigger: what starts it and what it puts on {{trigger.*}}. - [Run states and limits](https://docs.gorunner.io/build/run-states.md): UI word ↔ API value (completed, pending, waiting, paused), and the limits. - [Events](https://docs.gorunner.io/build/events.md): One list of audit and streaming events. - [Keyboard shortcuts](https://docs.gorunner.io/build/keyboard-shortcuts.md): Every key the dashboard answers. ## Apps - [Apps](https://docs.gorunner.io/apps.md): Every app as a tile. A filter and the product’s category tabs: All · Triggers · Logic · Data · HTTP · AI · Communication · Commerce. Triggers means "can start a workflow", which is what the Add a trigger picker lists. No headline count (see 4, Q2). - [When an app isn’t here](https://docs.gorunner.io/apps/when-an-app-isnt-here.md): Call any service from HTTP Request or GraphQL, with the token in a sensitive variable, or use Code. Every app page’s "Not here?" line points here. - [Error](https://docs.gorunner.io/apps/error-trigger.md): Start this workflow when a watched workflow fails - [Form](https://docs.gorunner.io/apps/form.md): Start a workflow from a hosted input form - [Manual](https://docs.gorunner.io/apps/manual.md): Run this workflow by hand, from the Run button or the API - [MCP Tool](https://docs.gorunner.io/apps/mcp-tool.md): Expose this workflow as a tool an AI app can call - [Run Finished](https://docs.gorunner.io/apps/run-finished.md): Start this workflow when a watched workflow's run finishes (success or failure) - [Schedule](https://docs.gorunner.io/apps/schedule.md): Start a workflow on a fixed schedule - [Webhook](https://docs.gorunner.io/apps/webhook.md): Receive HTTP requests and trigger workflows using unique URLs. - [When Called by Another Workflow](https://docs.gorunner.io/apps/when-called-by-another-workflow.md): Start this workflow when another workflow runs it as a Sub-flow - [Approval](https://docs.gorunner.io/apps/approval.md): Pause for a human approve/reject decision, then continue - [Branch](https://docs.gorunner.io/apps/branch.md): Send the run down different paths by condition. Use Filter to stop unless something is true - [Code](https://docs.gorunner.io/apps/code.md): Run custom JavaScript code to transform data - [Delay / Wait](https://docs.gorunner.io/apps/delay-wait.md): Pause the workflow for a duration, until a time, or until an external resume call - [Filter](https://docs.gorunner.io/apps/filter.md): Stop the run unless conditions are met. Use Branch to send cases down different paths - [Loop](https://docs.gorunner.io/apps/loop.md): Iterate over a list of items - [No Op](https://docs.gorunner.io/apps/no-op.md): Do nothing: a placeholder or note that changes no data - [Stop / Error](https://docs.gorunner.io/apps/stop-error.md): End the whole run here, gracefully or with an error message - [Sub-flow](https://docs.gorunner.io/apps/sub-flow.md): Run another workflow as a step and use its output - [Switch](https://docs.gorunner.io/apps/switch.md): Route to one of several cases based on a single value - [Tags](https://docs.gorunner.io/apps/tags.md): Add custom tags to the current run for filtering - [Airtable](https://docs.gorunner.io/apps/airtable.md): Create, update, upsert, find and delete records in Airtable, upload files and comment on records, and read or change bases, tables and fields. - [Amazon S3](https://docs.gorunner.io/apps/amazon-s3.md): Upload, download, copy, move and delete files in Amazon S3 or an S3-compatible store (MinIO, Wasabi, Cloudflare R2, Hetzner, IONOS), list and create buckets and folders, and make temporary download and upload links. - [Asana](https://docs.gorunner.io/apps/asana.md): Create, find and update tasks and subtasks in Asana, comment on them, move them between projects and sections, tag them, attach files, and manage projects, sections, tags and users. - [ClickUp](https://docs.gorunner.io/apps/clickup.md): Create, find and update ClickUp tasks, lists and folders, comment, track time, and manage checklists, tags, goals and dependencies. - [Compare Datasets](https://docs.gorunner.io/apps/compare-datasets.md): Diff two arrays by a key: added, removed, changed, and unchanged rows - [Compression](https://docs.gorunner.io/apps/compression.md): Zip/unzip files or gzip/gunzip data - [Crypto](https://docs.gorunner.io/apps/crypto.md): Hash, HMAC, encode, and generate random values - [CSV](https://docs.gorunner.io/apps/csv.md): Parse CSV into rows, or generate CSV from data - [Date & Time](https://docs.gorunner.io/apps/date-time.md): Current time, format, add/subtract, and diff dates - [Dropbox](https://docs.gorunner.io/apps/dropbox.md): Upload, download, copy, move and delete files and folders in Dropbox, list and search them, and share them by link. - [Edit Fields](https://docs.gorunner.io/apps/edit-fields.md): Set, build, or reshape data fields for later steps - [Files Helper](https://docs.gorunner.io/apps/files-helper.md): Create, read, inspect, and convert files (base64) - [FTP/SFTP](https://docs.gorunner.io/apps/ftp-sftp.md): Move files to and from a remote file server over SFTP, FTPS or FTP - [GitHub](https://docs.gorunner.io/apps/github.md): Open and update issues and pull requests, review and merge, commit files, create branches and releases, run Actions workflows, and read repositories, organizations and users on GitHub. - [GitLab](https://docs.gorunner.io/apps/gitlab.md): Open and update issues and merge requests, merge, commit files, create branches and releases, run CI/CD pipelines, and read projects on GitLab.com or your own GitLab. - [Google Analytics](https://docs.gorunner.io/apps/google-analytics.md): Run Google Analytics 4 reports and realtime reports, and look up accounts, properties, data streams and the dimensions and metrics a property offers. - [Google BigQuery](https://docs.gorunner.io/apps/google-bigquery.md): Run SQL in Google BigQuery with query parameters, stream rows into tables, read table rows and schemas, and list projects, datasets, tables and jobs. - [Google Calendar](https://docs.gorunner.io/apps/google-calendar.md): Create, update, fetch, delete and quick-add Google Calendar events, add attendees to an event, check free/busy availability, and subscribe a calendar to your calendar list. - [Google Docs](https://docs.gorunner.io/apps/google-docs.md): Create documents, append and replace text, and read documents in Google Docs. - [Google Drive](https://docs.gorunner.io/apps/google-drive.md): Upload, download, copy, move, share and search files and folders in Google Drive (incl. Shared Drives). - [Google Forms](https://docs.gorunner.io/apps/google-forms.md): Read Google Forms responses with their answers by question, create forms, add or remove questions, and open or close a form to responses. - [Google Sheets](https://docs.gorunner.io/apps/google-sheets.md): Read, append, update and manage rows in Google Sheets (the header row becomes your column keys). - [Google Slides](https://docs.gorunner.io/apps/google-slides.md): Create presentations, read slides and their text, fill in placeholder text and images, add or delete slides, and get slide thumbnails in Google Slides. - [Google Tasks](https://docs.gorunner.io/apps/google-tasks.md): Create, find, update, move, complete and delete tasks in Google Tasks, and manage task lists. - [HTML](https://docs.gorunner.io/apps/html.md): Extract content from HTML by CSS selector, strip tags, or list links - [HubSpot](https://docs.gorunner.io/apps/hubspot.md): Create, find and update contacts, companies, deals and tickets in HubSpot, log notes, tasks, calls, emails and meetings, link records, and manage list members. - [iCalendar](https://docs.gorunner.io/apps/icalendar.md): Build or parse iCalendar (.ics) events - [Image](https://docs.gorunner.io/apps/image.md): Resize, convert, crop, or inspect an image - [Item Helper](https://docs.gorunner.io/apps/item-helper.md): Sort, limit, deduplicate, aggregate, group, and transform arrays of items - [Jira Software](https://docs.gorunner.io/apps/jira-software.md): Create, find, update and move Jira issues from status to status, and work with their comments, attachments, worklogs and links, and with users. - [Jotform](https://docs.gorunner.io/apps/jotform.md): Read, add, edit and delete Jotform submissions, and look up forms, their questions and the account. - [JSON](https://docs.gorunner.io/apps/json.md): Parse, stringify, read/set paths, merge, and pick/omit fields - [JWT](https://docs.gorunner.io/apps/jwt.md): Sign, verify, and decode JSON Web Tokens (HMAC, RSA, RSA-PSS, ECDSA) - [Linear](https://docs.gorunner.io/apps/linear.md): Create, find, update and archive Linear issues, comment on them, link and relate them, manage projects and project updates, and look up teams, people, statuses, labels and cycles. - [Linear Trigger](https://docs.gorunner.io/apps/linear-trigger.md): Start a workflow when an issue, comment, project, cycle or another Linear record is created, updated or removed. - [Markdown](https://docs.gorunner.io/apps/markdown.md): Convert between Markdown and HTML - [Math Helper](https://docs.gorunner.io/apps/math-helper.md): Perform arithmetic and numeric operations - [Merge](https://docs.gorunner.io/apps/merge.md): Combine two arrays: append, join by key, zip by position, or cross-join - [Microsoft Excel 365](https://docs.gorunner.io/apps/microsoft-excel-365.md): Read, add and update rows in Excel workbooks in OneDrive or SharePoint, by sheet or by table, and create and organize workbooks and sheets. - [Microsoft OneDrive](https://docs.gorunner.io/apps/microsoft-onedrive.md): Upload, download, copy, move, share and organize files and folders in OneDrive. - [Microsoft SharePoint](https://docs.gorunner.io/apps/microsoft-sharepoint.md): Create, find, update and delete SharePoint list items, read lists and sites, and upload, download and organize files in document libraries. - [Microsoft To Do](https://docs.gorunner.io/apps/microsoft-to-do.md): Create, update and find tasks and task lists in Microsoft To Do, with their steps, links back to their source and file attachments. - [monday.com](https://docs.gorunner.io/apps/monday.md): Create, find and update items and subitems on monday.com boards, post updates, and manage boards, groups, columns and their labels. - [MongoDB](https://docs.gorunner.io/apps/mongodb.md): Find, insert, update, delete, count, and aggregate documents in MongoDB - [MySQL](https://docs.gorunner.io/apps/mysql.md): Run SQL queries and commands against a MySQL or MariaDB database - [Ninox](https://docs.gorunner.io/apps/ninox.md): Create, find, update and delete records in Ninox databases, attach and download files, and run Ninox scripts. - [Notion](https://docs.gorunner.io/apps/notion.md): Create, find and update pages in Notion databases, write and read page content as Markdown or blocks, comment, and look up databases, data sources and users. - [Odoo](https://docs.gorunner.io/apps/odoo.md): Create, find, update and delete contacts, CRM opportunities, activities and records of any Odoo model, and log notes on records. - [PDF](https://docs.gorunner.io/apps/pdf.md): Extract the text or count the pages of a PDF - [Personio](https://docs.gorunner.io/apps/personio.md): Create and update employees, record absences and working time, manage projects, and upload or download employee documents in Personio. - [Pipedrive](https://docs.gorunner.io/apps/pipedrive.md): Create, find and update deals, people, organizations, leads, activities, notes, products and files in Pipedrive. - [PostgreSQL](https://docs.gorunner.io/apps/postgresql.md): Run SQL queries and commands against a PostgreSQL database - [QR Code](https://docs.gorunner.io/apps/qr-code.md): Generate a QR code image (base64 / data URL) from text - [Queue](https://docs.gorunner.io/apps/queue.md): Push and pull items through a persistent FIFO queue - [Redis](https://docs.gorunner.io/apps/redis.md): Run a Redis command via a connection - [RSS Feed](https://docs.gorunner.io/apps/rss-feed.md): Read items from an RSS 2.0 or Atom feed - [Salesforce](https://docs.gorunner.io/apps/salesforce.md): Create, find, update and delete Salesforce accounts, contacts, leads, opportunities, cases, tasks and records of any object, query with SOQL, search text, upload files and start flows. - [SeaTable](https://docs.gorunner.io/apps/seatable.md): Work with rows, tables, columns, views, links, files and comments in a SeaTable base, or query it with SQL. Connect a base with its API token; tables and views are picked from live dropdowns. - [Spreadsheet](https://docs.gorunner.io/apps/spreadsheet.md): Read or write an .xlsx spreadsheet (rows ↔ JSON) - [Storage](https://docs.gorunner.io/apps/storage.md): Persist values across runs in a key-value store (get/set/append/increment/delete) - [Supabase](https://docs.gorunner.io/apps/supabase.md): Create, find, update and delete rows in a Supabase project's tables, call its database functions, and store files in Supabase Storage. - [Tally](https://docs.gorunner.io/apps/tally.md): Read and delete Tally submissions, create, change and delete forms, and look up questions and workspaces. - [Text Helper](https://docs.gorunner.io/apps/text-helper.md): Manipulate text: concat, replace, split, case, trim and more - [Todoist](https://docs.gorunner.io/apps/todoist.md): Create, update, complete and move tasks in Todoist, read completed tasks, and manage projects, sections, comments, labels and reminders. - [TOTP / 2FA](https://docs.gorunner.io/apps/totp-2fa.md): Generate or verify Time-based One-Time Passwords (TOTP/2FA) per RFC 6238 - [Trello](https://docs.gorunner.io/apps/trello.md): Create, move and update Trello cards, comment on them, manage checklists, labels, attachments and custom fields, and work with lists, boards and board members. - [Typeform](https://docs.gorunner.io/apps/typeform.md): Read and delete Typeform responses, create and change forms, and manage workspaces and images. - [WordPress](https://docs.gorunner.io/apps/wordpress.md): Create, find, update and delete posts, pages, users, media, categories and tags on a WordPress site. - [XML](https://docs.gorunner.io/apps/xml.md): Parse XML into data, or build XML from data - [YouTube](https://docs.gorunner.io/apps/youtube.md): Upload, find, update and rate YouTube videos, manage playlists and their videos, update your channel, and read, post or reply to comments. - [Zoho CRM](https://docs.gorunner.io/apps/zoho-crm.md): Create, find, update and delete Zoho CRM leads, contacts, accounts, deals, quotes, orders, invoices, products, vendors and records of any module, add notes, and query with COQL. - [GraphQL](https://docs.gorunner.io/apps/graphql.md): Execute GraphQL queries and mutations against any GraphQL API - [HTTP Request](https://docs.gorunner.io/apps/http-request.md): Send HTTP requests to any URL - [Anthropic](https://docs.gorunner.io/apps/anthropic.md): Ask Claude for text or JSON, with images, PDFs, uploaded files, web search and web fetch; count tokens; manage files; and send message batches at half the price. - [Azure OpenAI](https://docs.gorunner.io/apps/azure-openai.md): Message the models deployed in an Azure OpenAI (Microsoft Foundry) resource, ask about images, and create embeddings. - [DeepL](https://docs.gorunner.io/apps/deepl.md): Translate text and documents with DeepL, keep glossaries, improve text with DeepL Write, and check the account's usage. - [DeepSeek](https://docs.gorunner.io/apps/deepseek.md): Message DeepSeek's models with or without thinking mode, ask about images, and check the account balance. - [ElevenLabs](https://docs.gorunner.io/apps/elevenlabs.md): Turn text into lifelike speech and recordings into text with ElevenLabs, and look up voices, models, past generations and the account's usage. - [Google Gemini](https://docs.gorunner.io/apps/google-gemini.md): Ask Gemini for text or JSON about text, images, audio, documents and video; generate and edit images; generate videos; make embeddings; and manage files and file search stores. - [Groq](https://docs.gorunner.io/apps/groq.md): Message the open models Groq serves, ask about images, and turn speech into text with Whisper. - [Mistral AI](https://docs.gorunner.io/apps/mistral-ai.md): Chat with Mistral models (text, images, JSON), extract text from PDFs and images with Mistral OCR, make embeddings, check text for policy violations, transcribe and speak audio with Voxtral, run agents, and manage files. - [Ollama](https://docs.gorunner.io/apps/ollama.md): Message models on your own Ollama server or Ollama's cloud, ask about images, create embeddings, and manage the server's models. - [OpenAI](https://docs.gorunner.io/apps/openai.md): Ask OpenAI models for text or JSON (with files, images, web search and code interpreter), check text for policy violations, make embeddings, generate and edit images, turn text into speech, transcribe and translate audio, and manage files and conversations. - [OpenRouter](https://docs.gorunner.io/apps/openrouter.md): Message models from many providers through one OpenRouter key, with fallbacks, provider routing and web search; create embeddings; check costs and credit. - [Perplexity](https://docs.gorunner.io/apps/perplexity.md): Get cited, web-searched answers from Perplexity's agent, search the web, and create embeddings. - [ActiveCampaign](https://docs.gorunner.io/apps/activecampaign.md): Keep ActiveCampaign contacts, accounts and deals up to date, put contacts on lists, tags and automations, and sync e-commerce customers and orders. - [Brevo](https://docs.gorunner.io/apps/brevo.md): Send transactional email and SMS through Brevo, keep contacts, lists and attributes up to date, and create and send email campaigns. - [Calendly](https://docs.gorunner.io/apps/calendly.md): Read and cancel Calendly bookings, book invitees, mark no-shows, make single-use scheduling links, and read event types and availability. - [Discord](https://docs.gorunner.io/apps/discord.md): Send, edit, pin and react to messages from your Discord bot or a channel webhook, and manage channels, members, roles, timeouts and bans. - [Email (IMAP)](https://docs.gorunner.io/apps/email-imap.md): Start a workflow when a new email arrives, or read, search and manage emails in an IMAP mailbox - [Email (SMTP)](https://docs.gorunner.io/apps/email-smtp.md): Send emails using SMTP - [Freshdesk](https://docs.gorunner.io/apps/freshdesk.md): Create, update and find Freshdesk tickets, reply and add notes, and manage contacts and companies. - [Gmail](https://docs.gorunner.io/apps/gmail.md): Send, read, label and manage Gmail messages, drafts, labels and threads. - [Google Contacts](https://docs.gorunner.io/apps/google-contacts.md): Create, find, update and delete contacts in Google Contacts, and sort them into labels. - [Intercom](https://docs.gorunner.io/apps/intercom.md): Manage Intercom contacts and companies, reply to, assign and close conversations, handle tickets, and publish help center articles. - [KlickTipp](https://docs.gorunner.io/apps/klicktipp.md): Subscribe, update, tag and untag contacts in KlickTipp, find them by email, and manage tags, opt-in processes and data fields. - [Mailchimp](https://docs.gorunner.io/apps/mailchimp.md): Add, update and tag audience members, create, schedule and send campaigns, manage templates, and read campaign reports in Mailchimp. - [MailerLite](https://docs.gorunner.io/apps/mailerlite.md): Add, update and find subscribers in MailerLite, sort them into groups, manage custom fields, and create, schedule and read campaigns. - [Microsoft Outlook](https://docs.gorunner.io/apps/microsoft-outlook.md): Send, find and organize mail in Outlook, work with drafts, attachments and folders, and manage calendar events and contacts. - [Microsoft Teams](https://docs.gorunner.io/apps/microsoft-teams.md): Post and read messages in Teams channels and chats, ask for an approval in a chat, manage channels, chat members, online meetings and Planner tasks, and send activity feed notifications. - [SendGrid](https://docs.gorunner.io/apps/sendgrid.md): Send email through SendGrid, with attachments and dynamic templates, and manage Marketing Campaigns contacts and lists. - [Slack](https://docs.gorunner.io/apps/slack.md): Post, schedule, update and search messages, manage channels, upload files, react, and look up users and user groups in Slack. - [Telegram](https://docs.gorunner.io/apps/telegram.md): Send messages, photos, documents, albums, polls and rich messages from a Telegram bot, edit, pin and react to messages, manage chats and download files. - [Twilio](https://docs.gorunner.io/apps/twilio.md): Send SMS, MMS and WhatsApp messages and place calls with Twilio, look up phone numbers, and send and check verification codes. - [WhatsApp Business](https://docs.gorunner.io/apps/whatsapp-business.md): Send WhatsApp messages: text, media, buttons, lists and approved templates. From your WhatsApp Business number, and upload and download media. - [Zendesk](https://docs.gorunner.io/apps/zendesk.md): Create, update and find Zendesk tickets, reply and add internal notes, apply macros, and manage users and organizations. - [bexio](https://docs.gorunner.io/apps/bexio.md): Create and find contacts, write invoices (Rechnungen), quotes (Offerten) and orders (Aufträge) and issue, send or invoice them, download their PDF, book payments, and manage articles, projects, timesheets and manual entries in bexio. - [Lexware Office](https://docs.gorunner.io/apps/lexware-office.md): Create and find contacts and articles, write invoices (Rechnungen), quotations (Angebote), order confirmations, delivery notes, credit notes and dunnings as drafts or finalized and download their PDF, record bookkeeping vouchers (Belege) with their files, and read payments in Lexware Office (formerly lexoffice). - [PayPal](https://docs.gorunner.io/apps/paypal.md): Take and refund PayPal payments: orders, authorizations and captures, refunds, payouts, invoices and subscriptions. - [sevdesk](https://docs.gorunner.io/apps/sevdesk.md): Create and find contacts, write invoices (Rechnungen) and send, book or cancel them, create quotes, order confirmations and delivery notes, record vouchers (Belege) with their receipt, and manage parts, bank accounts and transactions in sevdesk. - [Shopify](https://docs.gorunner.io/apps/shopify.md): Manage a Shopify store: orders, products and variants, customers, inventory, locations and fulfillments. - [Stripe](https://docs.gorunner.io/apps/stripe.md): Take payments and manage billing in Stripe: payment intents, checkout sessions and payment links, customers, charges and refunds, invoices, subscriptions, products, prices and coupons. - [weclapp](https://docs.gorunner.io/apps/weclapp.md): Create, find and change customers and contacts, articles, sales orders (Aufträge), invoices (Rechnungen), quotations (Angebote) and tickets in weclapp, download their PDF, and invoice an order. - [WooCommerce](https://docs.gorunner.io/apps/woocommerce.md): Manage a WooCommerce store: orders, order notes and refunds, products and their variations, customers and coupons. ## MCP - [MCP](https://docs.gorunner.io/mcp.md): Start here, then the AI app grid in the product’s 4 groups. It names MCP once, for developers. - [Connect an AI app](https://docs.gorunner.io/mcp/connect.md): The MCP page (sidebar, under Keel) or its Connect an AI app key: choose the app, the workspaces and what it may do. - [Choose what an AI app may do](https://docs.gorunner.io/mcp/permissions.md): Read only, Read and run, Draft and run, Draft, run and publish, and one connection across several workspaces. - [See and disconnect AI apps](https://docs.gorunner.io/mcp/disconnect.md): The MCP page’s Connected apps: Choose workspaces, and disconnecting one. - [Turn your workflows into tools](https://docs.gorunner.io/mcp/workflows-as-tools.md): The MCP Tool trigger ("When an AI app calls this tool"), and the MCP page’s Workflow tools. - [ChatGPT](https://docs.gorunner.io/mcp/chatgpt.md): Add the address in ChatGPT, then sign in. - [Claude](https://docs.gorunner.io/mcp/claude.md): Add custom connector, then sign in. - [Cursor](https://docs.gorunner.io/mcp/cursor.md): One-click install link. - [VS Code](https://docs.gorunner.io/mcp/vscode.md): One-click install link. - [Devin Desktop](https://docs.gorunner.io/mcp/devin.md): Config file. - [Zed](https://docs.gorunner.io/mcp/zed.md): Address. - [Claude Code](https://docs.gorunner.io/mcp/claude-code.md): One command. - [Codex](https://docs.gorunner.io/mcp/codex.md): One command. - [Gemini CLI](https://docs.gorunner.io/mcp/gemini-cli.md): One command. - [Goose](https://docs.gorunner.io/mcp/goose.md): Install link. - [LM Studio](https://docs.gorunner.io/mcp/lm-studio.md): Install link. - [Raycast](https://docs.gorunner.io/mcp/raycast.md): Address, then sign in. - [Another app](https://docs.gorunner.io/mcp/another-app.md): The address and a token, for any MCP app. - [Connect with an API token](https://docs.gorunner.io/mcp/api-token.md): For apps that cannot sign in: an API token (grt_…). (gra_ is an OAuth access token, not this.) - [Build tools](https://docs.gorunner.io/mcp/build-tools.md): Every tool on the build server, generated from its tool list. - [Sign-in for developers](https://docs.gorunner.io/mcp/oauth.md): Discovery, scopes, refresh without offline_access, iss and exact callbacks (since v2026.10.22). ## API - [API](https://docs.gorunner.io/api.md): Start here, common tasks, then every endpoint: /reference filtered to API, grouped as in the sidebar. - [Get started](https://docs.gorunner.io/api/get-started.md): Token → create → publish → run → poll. It is fixed: it captures $ID, shows the definition, and publishes before a production run. - [Authentication](https://docs.gorunner.io/api/authentication.md): grt_ tokens, scopes, and x-permission. - [Errors](https://docs.gorunner.io/api/errors.md): The envelope and how to branch on error.code. The codes themselves live in /errors (linked, not copied). - [Idempotency](https://docs.gorunner.io/api/idempotency.md): Idempotency-Key, 24 hours, and at most 10,000 per credential. - [Pagination](https://docs.gorunner.io/api/pagination.md): cursor, limit and the page parameters on the list endpoints. - [Call a workflow’s webhook](https://docs.gorunner.io/api/webhooks.md): /api/webhooks/{token}, which is not in the OpenAPI file, and synchronous replies. - [Follow a run as it happens](https://docs.gorunner.io/api/streaming.md): The Server-Sent Events format of streamRun, which no page explains today. - [Create a connection from code](https://docs.gorunner.io/api/create-a-connection.md): Read auth.fields, then create, or start an OAuth sign-in. - [Workflow definition](https://docs.gorunner.io/api/workflow-definition.md): The tree: trigger and nextAction; config against settings; trigger type in lowercase. - [OpenAPI, llms.txt and Markdown](https://docs.gorunner.io/api/machine-readable.md): Where the machine files live. The 8 builder-only ("Editor Internals") operations are named here and marked unsupported. - [List workflows](https://docs.gorunner.io/api/workflows/list-workflows.md): Returns a page of workflows for the workspace the API token belongs to. - [List tags](https://docs.gorunner.io/api/workflows/list-workflow-tags.md): Returns the distinct tags across all workflows in the workspace, sorted ignoring case. - [Create a workflow](https://docs.gorunner.io/api/workflows/create-workflow.md): Creates a workflow. It is ALWAYS created as a `draft`, whatever the body says — `status`, `webhookToken`, `latestVersionId`, `workspaceId` and `orgId` are server-owned and ignored here; going live is `POST /api/workflows/{id}/publish`. - [Check a definition](https://docs.gorunner.io/api/workflows/validate-workflow-definition.md): Judges a definition and returns EVERY problem it can prove, in one call. - [Import a workflow](https://docs.gorunner.io/api/workflows/import-workflow.md): Creates a new DRAFT workflow from the JSON that `GET /api/workflows/{id}/export` produces. - [Preview an import](https://docs.gorunner.io/api/workflows/preview-workflow-import.md): Runs the same translation `POST /api/workflows/import` runs and returns ONLY the report. - [Change many workflows at once](https://docs.gorunner.io/api/workflows/bulk-update-workflows.md): Applies a single operation to up to 200 workflows. - [Get a workflow](https://docs.gorunner.io/api/workflows/get-workflow.md): Returns a single workflow, scoped to the token's workspace — a workflow in another workspace is a 404, never a 403. - [Update a workflow’s draft](https://docs.gorunner.io/api/workflows/update-workflow.md): Updates the DRAFT. On a published workflow this changes NOTHING in production until you call `POST /api/workflows/{id}/publish` — the live triggers keep running the published snapshot. - [Delete a workflow](https://docs.gorunner.io/api/workflows/delete-workflow.md): Deletes the workflow and everything hanging off it: its versions, its runs (held and waiting ones included), their step rows, and the offloaded step payloads in object storage (queued in the same tran - [Export a workflow](https://docs.gorunner.io/api/workflows/export-workflow.md): Returns the workflow in the portable shape `POST /api/workflows/import` accepts. - [Set a workflow’s tags](https://docs.gorunner.io/api/workflows/replace-workflow-tags.md): REPLACES the whole tag set — send the complete list you want, not a delta; `{"tags": []}` clears every tag. - [Move a workflow to a folder](https://docs.gorunner.io/api/workflows/move-workflow-to-folder.md): Files the workflow under one folder, or un-files it. - [Duplicate a workflow](https://docs.gorunner.io/api/workflows/duplicate-workflow.md): Copies the workflow's DRAFT definition into a brand-new workflow named `" (Copy)"` (when that would exceed 255 characters, the original name is shortened on a character boundary and end - [Convert a Code step to 2.0.0](https://docs.gorunner.io/api/workflows/upgrade-code-step.md): Code 1.0.0 pastes every `{{ }}` in its code into the program text before it runs, so data from an earlier step or the trigger can change the program. - [List versions](https://docs.gorunner.io/api/publish/list-workflow-versions.md): A version is a snapshot minted by `POST /api/workflows/{id}/publish`. - [Publish a workflow](https://docs.gorunner.io/api/publish/publish-workflow.md): Snapshots the DRAFT (`workflow.definition`) into a new immutable version and sets `status` to `active`. - [Review what publishing changes](https://docs.gorunner.io/api/publish/get-publish-review.md): The review of publishing the current draft, compared with the last version a PERSON published (a version the assistant published by itself is passed over): the change in the assistant's card grammar ( - [Unpublish a workflow](https://docs.gorunner.io/api/publish/unpublish-workflow.md): Sets `status` to `paused`. - [Get a new webhook address](https://docs.gorunner.io/api/publish/rotate-workflow-webhook-token.md): **This is the revocation path for the webhook token.** The token is a bearer capability: `POST /api/webhooks/{token}` is UNAUTHENTICATED, so anyone who has the URL can start production runs of this workflow. - [List variables](https://docs.gorunner.io/api/publish/get-workflow-variables.md): Workflow variables are constants exposed to expressions. - [Replace variables](https://docs.gorunner.io/api/publish/replace-workflow-variables.md): **Whole-set replacement, not a patch.** Whatever you send IS the complete set: any variable you omit is deleted — plain ones removed from the definition, sensitive ones removed from the encrypted store. - [Get a version](https://docs.gorunner.io/api/publish/get-workflow-version.md): Returns the version row WITH `definition` — the exact bytes production executed while this version was live. - [Go back to a version](https://docs.gorunner.io/api/publish/restore-workflow-version.md): **Restore rewrites the DRAFT and NEVER touches production.** A live workflow keeps running `latestVersionId` until you publish again — so after restoring, the response's `hasUnpublishedChanges` is wha - [List runs](https://docs.gorunner.io/api/runs/list-runs.md): Returns runs from all workflows in the token's active workspace, newest first. - [List waiting runs](https://docs.gorunner.io/api/runs/list-waiting-runs.md): Every workflow of the workspace with runs waiting in the run line for a free slot that have not started, most first, and their total: for each, exactly the runs `POST /api/workflows/{id}/runs/cancel-waiting` would cancel now. - [List a workflow’s runs](https://docs.gorunner.io/api/runs/list-workflow-runs.md): Paginated run history for one workflow. - [Get a run](https://docs.gorunner.io/api/runs/get-run.md): The only endpoint that returns step-level data. - [Delete a run](https://docs.gorunner.io/api/runs/delete-run.md): Deletes a TERMINAL run (`completed`, `failed` or `cancelled`) together with its step rows and its offloaded step payloads. - [Stream a run](https://docs.gorunner.io/api/runs/stream-run.md): A long-lived `text/event-stream` (SSE), not a JSON document. - [Cancel a run](https://docs.gorunner.io/api/runs/cancel-run.md): Asks a `pending`, `running` or `paused` run to stop. - [Approve or reject a held run](https://docs.gorunner.io/api/runs/decide-run.md): Answers the approval a `paused` run waits on, as the step's own approve/reject link would, and records who answered on the step (`resumeData.decidedBy`). - [Delete many runs](https://docs.gorunner.io/api/runs/delete-runs-bulk.md): Deletes every TERMINAL run (`completed`, `failed`, `cancelled`) among the ids posted; ids that name an in-flight or paused run, a run in another workspace, or a run that no longer exists are SKIPPED rather than failing the call. - [Run a workflow](https://docs.gorunner.io/api/runs/run-workflow.md): Creates a run and hands it to a worker. - [Count a workflow’s waiting runs](https://docs.gorunner.io/api/runs/count-waiting-runs.md): The number of this workflow's runs waiting in the run line for a free slot that have not started: exactly the runs `POST /api/workflows/{id}/runs/cancel-waiting` would cancel now. - [Cancel waiting runs](https://docs.gorunner.io/api/runs/cancel-waiting-runs.md): Takes every run of this workflow that is waiting in the run line for a free slot out of it, in one transaction, and settles each one `cancelled` with no `durationMs` (it never started, and the time it - [Run a run again](https://docs.gorunner.io/api/runs/rerun-run.md): Starts a new run of the same workflow with this run's own trigger data, recorded as a retry of it (`retryOfRunId`). - [Run many runs again](https://docs.gorunner.io/api/runs/rerun-runs-bulk.md): Each id as `POST /api/runs/{id}/rerun`, in the order given. - [Cancel many runs](https://docs.gorunner.io/api/runs/cancel-runs-bulk.md): Each id as `POST /api/runs/{id}/cancel`: a queued run leaves the line and never runs, a held run is settled, a running one is asked to stop; a finished run is left as it is (`ok: true, cancelled: false`). - [Deliver to a webhook](https://docs.gorunner.io/api/runs/deliver-webhook.md): A published webhook workflow's public door — for a workflow whose trigger is the Webhook trigger, a hosted Form or an app's own webhook trigger, and no other. - [Group failed runs](https://docs.gorunner.io/api/stats/list-run-failure-groups.md): The failed runs in the range grouped by workflow, failed step and reason class (ids, quoted values and numbers taken out; an HTTP status kept). - [Runs in flight](https://docs.gorunner.io/api/stats/get-stats.md): The "is anything of mine backed up?" glance. - [Run summary with trend](https://docs.gorunner.io/api/stats/get-stats-summary.md): The dashboard's KPI read: totals by terminal status, success rate and average duration for the chosen window, the same block for the PREVIOUS window (for deltas), the workspace's active-workflow count, and the top failing workflows. - [The last 7 days](https://docs.gorunner.io/api/stats/get-stats-week.md): The dashboard's week, counted over EVERY production, top-level run (a sub-flow's run is part of the run that called it, as on the Overview) that started in the seven local days ending today in `tz` (c - [Overview figures](https://docs.gorunner.io/api/stats/get-stats-overview.md): One read for the embed's Overview page (and harmless in the dashboard). - [Runs over time](https://docs.gorunner.io/api/stats/get-stats-timeseries.md): The dashboard chart's data: per-status run counts in `date_trunc` buckets over the window, gap-filled so every bucket is present. - [Count runs by state](https://docs.gorunner.io/api/stats/count-runs.md): Every figure the Runs page shows, under the list's filters (not `state`, `status`, `waiting`, `taken`, `sort` or paging): runs in the range by state, the open runs at any age, today in `tz`, the newes - [Summarize a range of runs](https://docs.gorunner.io/api/stats/summarize-run-range.md): The range's runs and failures by cause (the 5 biggest groups), by local day, by the run's trigger type and the 10 busiest workflows, with how many failed runs a retry made good and how many finished r - [Usual run times](https://docs.gorunner.io/api/stats/get-usual-run-times.md): The median `durationMs` of each workflow's newest 200 worked production runs of the last 30 days that never held on a person. - [List apps](https://docs.gorunner.io/api/apps/list-apps.md): The catalog of apps the worker fleet can currently run — the vocabulary every workflow definition is written in. - [Catalog status](https://docs.gorunner.io/api/apps/get-catalog-status.md): Answers 'can this instance actually RUN anything right now?' in one small response, without downloading the catalog. - [Get an app](https://docs.gorunner.io/api/apps/get-app.md): One app from the SAME source as the list — an app the fleet cannot run is not fetchable here either. - [Get an action’s fields](https://docs.gorunner.io/api/apps/get-app-action.md): ONE action's input/output schema — the unit a caller configuring a step actually needs. - [Get a trigger’s fields](https://docs.gorunner.io/api/apps/get-app-trigger.md): The trigger-side twin of `GET /api/pieces/{id}/actions/{actionId}`, with identical narrowing semantics: arbitrary `field=value` query pairs, `filteredBy` / `ignored` / `unresolved` / `conditionalField - [Get a field’s sub-fields](https://docs.gorunner.io/api/apps/resolve-dynamic-properties.md): Asks the app to describe a property whose SHAPE is only known once other values are chosen — the fields returned here are not in the static schema at all. - [Get a field’s options](https://docs.gorunner.io/api/apps/resolve-dynamic-options.md): Fetches the legal values for a property the schema marks dynamic — the fields listed in `dynamicFields` on the action/trigger detail, i.e. - [Get a trigger’s sample data](https://docs.gorunner.io/api/apps/get-trigger-sample.md): Returns what `{{trigger.*}}` will actually contain for a GIVEN trigger configuration — the shape every expression in the workflow is written against. - [Preview a schedule](https://docs.gorunner.io/api/apps/preview-schedule-next-runs.md): Projects a schedule trigger's configuration into the cron it compiles to and the next 5 times it would actually fire. - [List connections](https://docs.gorunner.io/api/connections/list-connections.md): Returns every connection in the caller's workspace, newest first (ordered by createdAt DESC). - [Create a connection](https://docs.gorunner.io/api/connections/create-connection.md): Stores a credential set for exactly ONE app. - [See which workflows use each connection](https://docs.gorunner.io/api/connections/get-connection-usage.md): Returns the reverse index `connectionId -> [{id, name}, ...]` for the caller's whole workspace — each credential's blast radius. - [Test sign-in details before saving](https://docs.gorunner.io/api/connections/test-connection-draft.md): Asks a worker to test a config typed into the add or change form. - [Start a sign-in for a new connection](https://docs.gorunner.io/api/connections/start-connection-oauth2-draft.md): As `POST /api/connections/{id}/oauth2/start`, for a connection that does not exist yet: the callback creates it, `active` with its tokens, only once the sign-in worked. - [Check a sign-in](https://docs.gorunner.io/api/connections/get-connection-oauth2-attempt-any.md): The same as `GET /api/connections/{id}/oauth2/attempts/{attemptId}`, for any attempt the caller started — including one that makes its connection, which has none until it connects. - [Stop a sign-in](https://docs.gorunner.io/api/connections/cancel-connection-oauth2-attempt.md): Ends the caller's own sign-in attempt on the server, so a sign-in finished later in a window still open connects nothing (its window says "You stopped this sign-in"). - [Open a sign-in in this tab](https://docs.gorunner.io/api/connections/launch-connection-oauth2-here.md): For an attempt started with `mode: tab` (when the browser blocks the popup): answers the provider's address and, on the same answer, sets the launch cookie the callback requires. - [Get a connection](https://docs.gorunner.io/api/connections/get-connection.md): Returns metadata only. - [Rename or update a connection](https://docs.gorunner.io/api/connections/update-connection.md): A full-object PUT with one deliberate exception: `config` is OPTIONAL, and its ABSENCE is meaningful. - [Delete a connection](https://docs.gorunner.io/api/connections/delete-connection.md): Permanently deletes the connection and its encrypted credential. - [Get a connection’s settings](https://docs.gorunner.io/api/connections/get-connection-settings.md): What the change form starts from. - [Test a connection](https://docs.gorunner.io/api/connections/test-connection.md): Asks a WORKER to run the app's own connection test against the real third-party service, then records the verdict on the row (`status` + `lastTestedAt`). - [Move workflows to another connection](https://docs.gorunner.io/api/connections/replace-connection-references.md): Credential rotation without editing each workflow: rewrites every `"connectionId": ""` occurrence in every workflow definition in this workspace (or in `workflowIds`) to `targetId`. - [Start a sign-in for a connection](https://docs.gorunner.io/api/connections/start-connection-oauth2.md): Starts the OAuth2 authorization-code sign-in for an existing OAuth2 connection, bound to the browser window that asked. - [Check a connection’s sign-in](https://docs.gorunner.io/api/connections/get-connection-oauth2-attempt.md): The opener's fallback for learning how a sign-in ended when the result page cannot tell it — a provider whose Cross-Origin-Opener-Policy severs the popup from its opener. - [List folders](https://docs.gorunner.io/api/folders/list-folders.md): Returns a FLAT array of every folder in the caller's workspace, ordered case-insensitively by name. - [Create a folder](https://docs.gorunner.io/api/folders/create-folder.md): Creates a folder in the caller's workspace. - [Rename or move a folder](https://docs.gorunner.io/api/folders/update-folder.md): Sets the folder's `name` AND `parentId` in one write. - [Delete a folder](https://docs.gorunner.io/api/folders/delete-folder.md): Deletes the folder. NOTHING inside it is deleted: in one transaction its child FOLDERS and the WORKFLOWS filed in it are re-parented to this folder's own parent (to the root, if it was a root folder). - [List templates](https://docs.gorunner.io/api/templates/list-templates.md): Returns the templates the caller's WORKSPACE may use, as rows: everything the Templates page draws. - [Save a workflow as a template](https://docs.gorunner.io/api/templates/create-template.md): "Save as template". You do NOT submit a definition — you name an existing workflow (`workflowId`) and the server snapshots that workflow's CURRENT DRAFT definition. - [Count templates](https://docs.gorunner.io/api/templates/count-templates.md): How many rows `GET /api/templates?view=summary` would answer the caller, judged the same way (apps, readability, scope): a template whose definition cannot be read counts for someone who may delete it - [Preview saving a template](https://docs.gorunner.io/api/templates/preview-template-save.md): Writes nothing. Answers which values saving this workflow as a template (`POST /api/templates`) would leave out of the copy, per step and field, and who would get it. - [Get a template](https://docs.gorunner.io/api/templates/get-template.md): The `GET /api/templates` row with its `definition` (the shareable snapshot). - [Update a template](https://docs.gorunner.io/api/templates/update-template.md): Updates ONLY the three presentation fields — `name`, `description`, `category`. - [Delete a template](https://docs.gorunner.io/api/templates/delete-template.md): Permanently deletes the template. - [Update a template’s steps](https://docs.gorunner.io/api/templates/replace-template-steps.md): Makes one of the caller's own templates (`org` or `workspace` scope) a copy of a workflow of this workspace, as its draft stands now — blanked as a save is — keeping its name, description and category. - [Make a workflow from a template](https://docs.gorunner.io/api/templates/use-template.md): Creates a brand-new workflow in the caller's WORKSPACE from a template this workspace may use (`GET /api/templates`). - [Preview using a template](https://docs.gorunner.io/api/templates/preview-template-use.md): Writes nothing. Answers what `POST /api/templates/{id}/use` would make with these `connections`: each connection SLOT with the steps that use it and this workspace's connections that could fill it (`s ## Self-host - [Self-host](https://docs.gorunner.io/self-host.md): "Docker or Kubernetes" table, one container picture, Start here, common tasks. - [Install with Docker](https://docs.gorunner.io/self-host/install-docker.md): Registry access and the license are in You need. Laptop mode and --skip-check are in folds. - [Install on Kubernetes](https://docs.gorunner.io/self-host/install-kubernetes.md): Steps 1–5 and the ingress. - [First sign-in](https://docs.gorunner.io/self-host/first-sign-in.md): Admin account, two-factor and loading the license. - [Behind your own proxy](https://docs.gorunner.io/self-host/own-proxy.md) - [A company proxy](https://docs.gorunner.io/self-host/company-proxy.md) - [Sign-in without email](https://docs.gorunner.io/self-host/sign-in-without-email.md) - [Your own database, Redis and storage](https://docs.gorunner.io/self-host/own-stores.md) - [Outbound access](https://docs.gorunner.io/self-host/outbound-access.md) - [Set up Google sign-in for connections](https://docs.gorunner.io/self-host/oauth-apps.md): The step the "Google sign-in isn’t set up" fold links to. - [Update](https://docs.gorunner.io/self-host/update.md) - [Back up and restore](https://docs.gorunner.io/self-host/backups.md) - [Several servers](https://docs.gorunner.io/self-host/several-servers.md) - [Connect a monitoring tool](https://docs.gorunner.io/self-host/monitoring-tools.md) - [The Monitoring page](https://docs.gorunner.io/self-host/monitoring-page.md): Platform › Monitoring. - [Remove GoRunner](https://docs.gorunner.io/self-host/uninstall.md) - [The Platform console](https://docs.gorunner.io/self-host/platform.md): Overview and the rail: Accounts, Installation, Settings, Embed. - [Organizations and people](https://docs.gorunner.io/self-host/organizations-and-people.md): Platform › Organizations, People. - [The Health page](https://docs.gorunner.io/self-host/health.md): Platform › Health. - [The platform audit log](https://docs.gorunner.io/self-host/platform-audit-log.md): Platform › Audit log. - [Visit an organization](https://docs.gorunner.io/self-host/visit-an-organization.md): Two-factor is "Required to visit other organizations." - [Your license](https://docs.gorunner.io/self-host/license.md) - [The free license](https://docs.gorunner.io/self-host/free-license.md) - [When a license ends](https://docs.gorunner.io/self-host/license-ends.md) - [Settings (.env)](https://docs.gorunner.io/self-host/settings.md): Generated from selfhost-surface.json, including the setup flags. - [Helm values](https://docs.gorunner.io/self-host/helm-values.md): Generated from the chart. - [The preflight check](https://docs.gorunner.io/self-host/preflight-check.md) - [Containers, ports and volumes](https://docs.gorunner.io/self-host/services.md) - [Health checks](https://docs.gorunner.io/self-host/health-checks.md): /healthz and /readyz. - [Metrics](https://docs.gorunner.io/self-host/metrics.md) - [Traces](https://docs.gorunner.io/self-host/traces.md) - [Logs](https://docs.gorunner.io/self-host/logs.md) - [Troubleshooting](https://docs.gorunner.io/self-host/troubleshooting.md): Symptoms only, each linking to its fix. ## Embed - [Embed](https://docs.gorunner.io/embed.md): What customers see (picture), one architecture diagram, Start here. - [Quick start](https://docs.gorunner.io/embed/quick-start.md): Gains the missing last step: a connection and a workflow. - [Set up Embed](https://docs.gorunner.io/embed/set-up.md) - [What customers see](https://docs.gorunner.io/embed/what-customers-see.md) - [Accounts and people](https://docs.gorunner.io/embed/accounts-and-people.md) - [Login codes and sessions](https://docs.gorunner.io/embed/sign-in-and-sessions.md): Adds a sequence picture. - [Tokens and AI apps](https://docs.gorunner.io/embed/tokens-and-ai-apps.md) - [The assistant](https://docs.gorunner.io/embed/the-assistant.md) - [Your customers’ connections](https://docs.gorunner.io/embed/customer-connections.md) - [Templates for customers](https://docs.gorunner.io/embed/templates.md) - [Notifications](https://docs.gorunner.io/embed/notifications.md) - [Usage, suspension and deletion](https://docs.gorunner.io/embed/usage-suspension-deletion.md) - [Let customers sign in AI apps](https://docs.gorunner.io/embed/ai-app-sign-in.md): Since v2026.10.23. The per-account address is since v2026.10.24. - [Switches](https://docs.gorunner.io/embed/switches.md) - [Appearance and branding](https://docs.gorunner.io/embed/appearance.md): Adds preset thumbnails. - [Security](https://docs.gorunner.io/embed/security.md): Gains the incident steps from ai-app-sign-in. - [Versions and upgrades](https://docs.gorunner.io/embed/versions.md): SDK 1.4.0; 1.3.0 is still served. - [Troubleshooting](https://docs.gorunner.io/embed/troubleshooting.md) - [SDK](https://docs.gorunner.io/embed/sdk.md) - [Events and the protocol](https://docs.gorunner.io/embed/events.md) - [Platform screens](https://docs.gorunner.io/embed/platform-screens.md): Partner keys, What customers get, Branding and Notifications. - [AI app sign-in checks](https://docs.gorunner.io/embed/ai-app-sign-in-checks.md) - [Partner API](https://docs.gorunner.io/embed/api.md): Keys, sessions, gorunner-embed/1, rate limits, then every endpoint. - [Start a session](https://docs.gorunner.io/embed/api/sign-in/start-session.md): Called by the embedded frame. - [Make a login code](https://docs.gorunner.io/embed/api/sign-in/issue-login-code.md): Creates or updates the person, the account (and its default workspace), the named workspace and the membership at the role, race-safely, and answers a code the partner's page hands to the frame (single use, 60 s; never log it). - [Check the installation can be embedded](https://docs.gorunner.io/embed/api/sign-in/bootstrap.md): Public and credential-free (`Access-Control-Allow-Origin: *`, `Vary: Origin`), for the SDK's preflight and the embedded frame. - [End a session](https://docs.gorunner.io/embed/api/sign-in/end-session.md): The SDK calls it on unmount (also as a `keepalive` request from `pagehide`). - [Turn switches off for a session](https://docs.gorunner.io/embed/api/sign-in/narrow-session.md): Adds page-level switches; nothing ever turns one back on. - [Renew a session](https://docs.gorunner.io/embed/api/sign-in/renew-session.md): The frame's own renewal: a new session (new bearer, another 30 minutes) with everything that bounds this one, which ends (`replaced`). - [List accounts](https://docs.gorunner.io/embed/api/accounts/list-accounts.md): Newest first, keyset-paged. - [Get an account](https://docs.gorunner.io/embed/api/accounts/get-account.md): In any status. - [Create or update an account](https://docs.gorunner.io/embed/api/accounts/put-account.md): Idempotent by the partner's id. - [Suspend an account](https://docs.gorunner.io/embed/api/accounts/suspend-account.md): Its triggers stop (webhooks answer 503 with `Retry-After`, schedules and polls pause) and its people's sessions end (`account_suspended`) and renew read-only. - [Resume an account](https://docs.gorunner.io/embed/api/accounts/resume-account.md): Poll triggers are re-baselined (what arrived while suspended is not replayed); sessions open during the suspension end (`account_resumed`), and a new login code gives a writable one. - [Restore an account](https://docs.gorunner.io/embed/api/accounts/restore-account.md): Within 30 days of the delete, back to the status it had. - [Delete an account](https://docs.gorunner.io/embed/api/accounts/delete-account.md): Its people's sessions end and new login codes are refused; after `purgeAfter` it is removed for good (run payloads, then every row; the account's encryption key with it). - [List an account’s tokens](https://docs.gorunner.io/embed/api/tokens/list-tokens.md): The account's live API tokens (not revoked, not expired), newest first: the ones its editors made on the Tokens page and the ones your server made. - [Make a token](https://docs.gorunner.io/embed/api/tokens/create-token.md): Makes an API token (`grt_…`) that works in one of the account's workspaces, for your own automation or to hand to the customer: on the App API and, with `surfaces` holding `mcp`, with an AI app at `{y - [Revoke a token](https://docs.gorunner.io/embed/api/tokens/revoke-token.md): Revokes any of the account's tokens, one its editors made or one your server made. - [List an account’s websites](https://docs.gorunner.io/embed/api/websites/list-account-websites.md): Websites that show only this account's sessions (a customer's own domain), up to `max` - [List allowed websites](https://docs.gorunner.io/embed/api/websites/list-websites.md): The websites that may show any customer's sessions (Platform › Partner keys › Allowed websites), up to `max` - [Replace an account’s websites](https://docs.gorunner.io/embed/api/websites/put-account-websites.md): The whole list: exact origins only (no wildcard), duplicates dropped, at most 20; an empty list removes them all. - [Allow a website for one account](https://docs.gorunner.io/embed/api/websites/add-account-website.md): One exact website (no wildcard) that shows only this account's sessions: a login code of another account is refused there (`ORIGIN_NOT_ALLOWED`). - [Allow a website](https://docs.gorunner.io/embed/api/websites/add-website.md): Adds one website to the installation's list, normalized as the console does (`https://*.example.com` covers every subdomain of a domain you own). - [Stop allowing a website for one account](https://docs.gorunner.io/embed/api/websites/remove-account-website.md): The account's sessions open on it end (`website_removed`) unless the installation's own list allows it. - [Stop allowing a website](https://docs.gorunner.io/embed/api/websites/remove-website.md): The next load of the embed there is refused; a session already open carries on until it would renew. - [List workspaces](https://docs.gorunner.io/embed/api/workspaces/list-workspaces.md): The default workspace first. - [Get a workspace](https://docs.gorunner.io/embed/api/workspaces/get-workspace.md): Get a workspace - [Create or rename a workspace](https://docs.gorunner.io/embed/api/workspaces/put-workspace.md): `name` is required to create; a bare body on an existing workspace changes nothing. - [Delete a workspace](https://docs.gorunner.io/embed/api/workspaces/delete-workspace.md): Its run payloads, then everything in it. - [List an account’s members](https://docs.gorunner.io/embed/api/people/list-members.md): One row per person per workspace, oldest first. - [Get a person](https://docs.gorunner.io/embed/api/people/get-user.md): With every workspace they hold a role in. - [Give a person a role](https://docs.gorunner.io/embed/api/people/put-member.md): `workspaceId` omitted = the default workspace. - [Create or update a person](https://docs.gorunner.io/embed/api/people/put-user.md): `name` is required to create. - [Remove a member](https://docs.gorunner.io/embed/api/people/remove-member.md): With `workspaceId`: that workspace only (and the account too when it was their last there). - [Delete a person](https://docs.gorunner.io/embed/api/people/delete-user.md): Every membership, their assistant conversations and what identifies them; their sessions end. - [List connections](https://docs.gorunner.io/embed/api/connections/list-connections.md): Every connection in the account, newest first: the ones the partner manages (`managedBy: partner`, with the partner's `key`) and the ones the customer made in the embedded product (`managedBy: customer`, `key` null). - [Get a managed connection](https://docs.gorunner.io/embed/api/connections/get-connection.md): By the partner's key. - [Check how a connection sign-in ended](https://docs.gorunner.io/embed/api/connections/get-connection-sign-in.md): A sign-in this key started for this account: `pending` until the provider sends the browser back, then `connected` (with `connectionId`) or `failed` (with `reason`). - [Create or replace a managed connection](https://docs.gorunner.io/embed/api/connections/put-connection.md): Stores a credential the partner manages for its customer, by the partner's key: created the first time, replaced after (the app cannot change — delete the key first). - [Start a connection sign-in from your own button](https://docs.gorunner.io/embed/api/connections/start-connection-sign-in.md): Your server starts the OAuth sign-in of one of the account's connections, and your page sends your customer's browser straight to the provider: no GoRunner screen. - [Delete a managed connection](https://docs.gorunner.io/embed/api/connections/delete-connection.md): Refused while a live workflow still uses it: disable or change those first. - [List templates customers can install](https://docs.gorunner.io/embed/api/workflows/list-templates.md): The installation's published templates (shared with every customer from a workflow's ⋯ in Workflows: Share with customers…), newest first, with every app each one uses. - [List workflows](https://docs.gorunner.io/embed/api/workflows/list-workflows.md): Newest first. Never a definition. - [Get a workflow](https://docs.gorunner.io/embed/api/workflows/get-workflow.md): Never its definition. - [Install a template](https://docs.gorunner.io/embed/api/workflows/install-workflow.md): Makes a workflow in the account from a published template, by its `key`, and wires each of the template's connection slots to one of the account's connections: `connections` maps a slot's `key` to `{" - [Enable a workflow](https://docs.gorunner.io/embed/api/workflows/enable-workflow.md): Publishes the workflow's current draft so its trigger is live. - [Disable a workflow](https://docs.gorunner.io/embed/api/workflows/disable-workflow.md): Turns the workflow's trigger off. - [Cancel a workflow’s waiting runs](https://docs.gorunner.io/embed/api/workflows/cancel-waiting-runs.md): Takes every run of one of the account's workflows that is waiting in the line for a free slot out of it, in one transaction: each is settled `cancelled` with no `durationMs` and never runs. - [List runs](https://docs.gorunner.io/embed/api/runs/list-runs.md): Production runs, newest first. - [Get a run](https://docs.gorunner.io/embed/api/runs/get-run.md): Never step data. - [Cancel a run](https://docs.gorunner.io/embed/api/runs/cancel-run.md): Stops one of the account's runs, exactly as Cancel on the Runs page: a run waiting for a free slot leaves the line and never runs, a held run (waiting on a person or a timer) is settled, a running one - [Run a run again](https://docs.gorunner.io/embed/api/runs/rerun-run.md): Starts the run again, exactly as Run again on the Runs page: a new production run of the workflow's published version, with the trigger data the run started with (headers, query and body as they arriv - [List every account’s usage](https://docs.gorunner.io/embed/api/usage/list-usage.md): One entry per account, in every status — a deleted account inside its 30 days included — counted as `GET /accounts/{accountId}/usage` counts. - [Get an account’s usage](https://docs.gorunner.io/embed/api/usage/get-account-usage.md): Its production runs by the UTC day they started, sub-flow calls counted as part of the run that made them; its editor test runs separately; and the assistant tokens it used that the installation pays for. - [List an account’s AI apps](https://docs.gorunner.io/embed/api/ai-apps/list-ai-apps.md): The AI apps people of the account connected by signing in (not the account's API tokens): the app, the person, the workspaces it reaches, what it may do (`access`: `read`, `run`, `draft` or `publish`) - [Read a sign-in request](https://docs.gorunner.io/embed/api/ai-apps/get-oauth-request.md): What an AI app sign-in request is for, after YOUR sign-in: the account (in your own id) the person must belong to, the app asking (its registered name, which it chose itself) and the host its code wou - [Sign a person in for an AI app](https://docs.gorunner.io/embed/api/ai-apps/complete-oauth-request.md): Says who the person is, once they have signed in to your product, belong to the request's account and pressed Continue: the body of a login code (`user`, `account`, `workspace`, `role`, `turnOff`) plus `provision`. - [Turn a sign-in request down](https://docs.gorunner.io/embed/api/ai-apps/deny-oauth-request.md): Ends the request when the person pressed Cancel, does not belong to its account, or you refuse them: `reason` is `cancelled`, `not_member`, `not_allowed` or `role` (how you keep viewers out: both view - [Disconnect an AI app](https://docs.gorunner.io/embed/api/ai-apps/revoke-ai-app.md): Ends one connection at once: its tokens stop working and the app must sign in again. - [Disconnect an account’s AI apps](https://docs.gorunner.io/embed/api/ai-apps/revoke-account-ai-apps.md): Ends every AI app connected to the account, or one person's only with `user`. - [Disconnect every AI app](https://docs.gorunner.io/embed/api/ai-apps/revoke-all-ai-apps.md): The incident tool: ends every AI app that signed in through your product, in every account.