Skip to main content
Glama

create_flow

Build API automation workflows by defining sequential HTTP steps with data passing between requests, variable inputs, and execution configuration for testing and integration scenarios.

Instructions

Create a new flow in the project using Steps format for API automation

Example format: { "name": "User Registration Flow", "description": "Complete user registration with email verification", "folderId": "fld_456", "flow_data": { "version": "1.0", "steps": [ { "id": "register_user", "name": "Register New User", "method": "POST", "url": "{{baseUrl}}/api/users/register", "headers": {"Content-Type": "application/json"}, "body": "{"name": "{{userName}}", "email": "{{userEmail}}", "password": "{{password}}"}", "outputs": {"userId": "response.body.id", "activationToken": "response.body.token"} }, { "id": "verify_email", "name": "Verify Email Address", "method": "POST", "url": "{{baseUrl}}/api/auth/verify", "headers": {"Content-Type": "application/json"}, "body": "{"token": "{{register_user.activationToken}}"}", "outputs": {"verificationStatus": "response.body.status"} } ], "config": {"delay": 1000, "retryCount": 2, "parallel": false} }, "flow_inputs": [ {"name": "baseUrl", "type": "string", "required": true, "description": "Base API URL"}, {"name": "userName", "type": "string", "required": true, "description": "User full name"}, {"name": "userEmail", "type": "email", "required": true, "description": "User email"}, {"name": "password", "type": "password", "required": true, "description": "User password"} ] }

2-step API Testing Example: { "name": "API Integration Test", "description": "Test user creation and retrieval", "flow_data": { "version": "1.0", "steps": [ { "id": "create_user", "name": "Create User", "method": "POST", "url": "https://api.example.com/users", "headers": {"Authorization": "Bearer {{apiKey}}"}, "body": "{"name": "Test User", "email": "test@example.com"}", "expectedStatus": 201, "outputs": {"newUserId": "response.body.id"} }, { "id": "get_user", "name": "Retrieve Created User", "method": "GET", "url": "https://api.example.com/users/{{create_user.newUserId}}", "headers": {"Authorization": "Bearer {{apiKey}}"}, "expectedStatus": 200, "outputs": {"userData": "response.body"} } ] } }

Common mistakes:

  • ❌ Empty steps array

  • ❌ Missing required step fields (id, name, method, url)

  • ❌ Invalid step references (must use {{step.output}})

  • ✅ Use {{input.var}} for flow inputs

  • ✅ Use {{step.output}} for chaining steps

  • ✅ Define outputs to pass data between steps

Input Schema

NameRequiredDescriptionDefault
nameYesName of the flow (required)
descriptionNoDescription of the flow (optional)
folderIdNoFolder ID to organize the flow (optional)
flow_dataNoFlow data following backend Steps format
flow_inputsNoDynamic input definitions for variable interpolation
is_activeNoFlow active status (default: true)

Input Schema (JSON Schema)

{ "properties": { "description": { "description": "Description of the flow (optional)", "type": "string" }, "flow_data": { "description": "Flow data following backend Steps format", "properties": { "config": { "description": "Flow execution configuration", "properties": { "delay": { "description": "Delay between steps in ms", "type": "number" }, "maxConcurrency": { "description": "Max concurrent steps", "type": "number" }, "parallel": { "description": "Execute steps in parallel", "type": "boolean" }, "retryCount": { "description": "Number of retries per step", "type": "number" }, "stopOnError": { "description": "Stop on first error", "type": "boolean" }, "timeout": { "description": "Default timeout in ms", "type": "number" } }, "type": "object" }, "steps": { "description": "Array of flow steps", "items": { "description": "Flow step configuration", "properties": { "body": { "description": "Request body with {{step.output}} references", "type": "string" }, "expectedStatus": { "description": "Expected HTTP status", "type": "number" }, "headers": { "additionalProperties": { "description": "Header value", "type": "string" }, "description": "Request headers with variable references", "type": "object" }, "id": { "description": "Unique step ID (required)", "type": "string" }, "method": { "description": "HTTP method (required)", "enum": [ "GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS" ], "type": "string" }, "name": { "description": "Step name (required)", "type": "string" }, "outputs": { "additionalProperties": { "description": "Output reference path", "type": "string" }, "description": "Define outputs for next steps (e.g., {\"userId\": \"response.body.id\"})", "type": "object" }, "timeout": { "description": "Request timeout in ms", "type": "number" }, "url": { "description": "Request URL with {{input.var}} references (required)", "type": "string" } }, "required": [ "id", "name", "method", "url" ], "type": "object" }, "type": "array" }, "version": { "description": "Flow version (default: \"1.0\")", "type": "string" } }, "required": [ "steps" ], "type": "object" }, "flow_inputs": { "description": "Dynamic input definitions for variable interpolation", "items": { "description": "Flow input definition", "properties": { "defaultValue": { "description": "Default value", "type": "string" }, "description": { "description": "Input description", "type": "string" }, "name": { "description": "Input name (required)", "type": "string" }, "required": { "description": "Whether input is required (default: false)", "type": "boolean" }, "type": { "description": "Input type (required)", "enum": [ "string", "email", "password", "number", "boolean" ], "type": "string" }, "validation": { "additionalProperties": { "description": "Validation rule value", "type": "string" }, "description": "Validation rules (min_length, max_length, pattern, etc.)", "type": "object" } }, "required": [ "name", "type" ], "type": "object" }, "type": "array" }, "folderId": { "description": "Folder ID to organize the flow (optional)", "type": "string" }, "is_active": { "description": "Flow active status (default: true)", "type": "boolean" }, "name": { "description": "Name of the flow (required)", "type": "string" } }, "required": [ "name" ], "type": "object" }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/martin-1103/mcp2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server