Skip to main content
Documentation

Build. Publish. Automate.

Everything you need to know about using Discover, whether you're running automations or building them.

What is Discover?

Discover is the App Store for automation. We connect people who need automation with experts who build it.

For Everyone

Browse the marketplace, find an app that solves your problem, click run. No coding, no setup, no learning curve.

For Creators

Build workflows with our JSON-based engine and publish to the marketplace. Share your automation expertise with the world.

One-click automation
Smart automation
Secure & reliable
Open platform

For Users

Using Discover is simple. No technical skills required.

1

Find an App

Browse the marketplace or search for specific automations. Each app shows what it does and what inputs it needs.

2

Fill in Inputs

Some apps need information from you (like a URL or text). Just fill in the fields and click run.

3

Get Results

The automation runs in seconds. You get your results instantly, ready to use.

What Kinds of Apps Are Available?

Everything from data processing and web scraping to advanced analysis and automated reports. Browse the marketplace to discover apps for your specific needs.

Browse Marketplace

For Creators

Turn your automation expertise into shareable products. Build workflows and publish them for others to use.

Share Your Expertise

Build powerful automations once and let anyone use them. Your workflows become apps that others can run instantly.

22
Node types
AI
Built-in support
API
Ready endpoints

How to Build Workflows

  1. 1Use the JSON-based workflow editor to define your automation logic
  2. 2Test your workflow with the built-in test runner
  3. 3Deploy your workflow to get an API endpoint
  4. 4Publish to the marketplace with a name and description

Workflow Reference

Workflows are defined in JSON. Here's the basic structure and how to build them.

Every workflow has an id, name, version, startNode, and a collection of nodes.

json
{
  "workflow": {
    "id": "unique-identifier",
    "name": "Human Readable Name",
    "version": "1.0.0",
    "startNode": "first_node_id",
    "variables": {
      "api_endpoint": "https://api.example.com",
      "threshold": 100
    },
    "nodes": {
      "first_node_id": { ... },
      "second_node_id": { ... }
    }
  }
}
id

Unique identifier for the workflow

startNode

ID of the first node to execute

variables

Default values that can be overridden at runtime

nodes

Object containing all workflow nodes

Node Types

25 node types organized into categories. Each node performs a specific action in your workflow.

Variables & Data Access

How to define, access, and pass data between nodes.

Template Syntax

Use double curly braces to reference variables and node results in config values.

PatternExampleDescription
{{variable}}{{user_name}}Access workflow variable
{{nodeId_result.field}}{{fetch_result.data}}Access node result
{{array.0.field}}{{users.0.name}}Access array element (dot notation)
{{last_result}}{{last_result}}Most recent node result

Code Node Access

In code nodes, access data differently (no _result suffix).

javascript
// Standard nodes
const data = results.nodeId.data;

// HTTP request nodes (double .data for response body)
const responseBody = results.http_node.data.data;
const httpStatus = results.http_node.data.status;

// Workflow variables
const threshold = input.threshold;

Common Mistakes

URLs must be complete before variable substitution

Wrong{ "url": "{{api_url}}" }
Correct{ "url": "https://api.example.com/data?key={{API_KEY}}" }

Use dot notation for array access, not brackets

Wrong"{{users[0].name}}"
Correct"{{users.0.name}}"

HTTP responses need double .data in code nodes

Wrongresults.fetch.data.users
Correctresults.fetch.data.data.users

Complete Examples

Real-world workflow examples you can use as templates.

Fetch data from an API with proper error handling and branching.

json
{
  "workflow": {
    "id": "api-error-handling",
    "name": "API with Error Handling",
    "version": "1.0.0",
    "startNode": "fetch_data",
    "nodes": {
      "fetch_data": {
        "id": "fetch_data",
        "type": "http_request",
        "config": {
          "url": "https://api.example.com/data",
          "method": "GET",
          "timeout": 10000
        },
        "next": "check_response"
      },
      "check_response": {
        "id": "check_response",
        "type": "conditional",
        "config": {
          "condition": "{{fetch_data_result.status}} >= 200 && {{fetch_data_result.status}} < 300",
          "then": "process_success",
          "else": "handle_error"
        }
      },
      "process_success": {
        "id": "process_success",
        "type": "log",
        "config": {
          "message": "API call successful",
          "level": "info"
        },
        "next": "end_success"
      },
      "handle_error": {
        "id": "handle_error",
        "type": "log",
        "config": {
          "message": "API call failed",
          "level": "error"
        },
        "next": "end_error"
      },
      "end_success": {
        "id": "end_success",
        "type": "end",
        "config": {
          "success": true,
          "output": { "data": "{{fetch_data_result.data}}" }
        }
      },
      "end_error": {
        "id": "end_error",
        "type": "end",
        "config": {
          "success": false,
          "output": { "error": "API request failed" }
        }
      }
    }
  }
}

Ready to get started?

Whether you want to use automation or create it, Discover has you covered.

© 2026 Discover.Designed for simplicity.
Theme