API Reference
Complete reference for the Hylo Knowledge API at api.hylo.pro
Authentication
All endpoints require an API key via the Authorization header:
curl -H "Authorization: Bearer hylo_sk_your_key_here" \
https://api.hylo.pro/v1/actionsAPI keys use the format hylo_sk_ followed by 32 hex characters. Get your key from the dashboard.
Rate Limits
| Plan | Limit | Reset |
|---|---|---|
| Trial (7 days) | 50 req/day | Rolling 24h |
| Hylo Pro ($19/mo) | 10,000 req/day | Rolling 24h |
Error Codes
All errors return a standard JSON envelope:
{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing or invalid API key",
"status": 401
}
}| Code | Status | Meaning |
|---|---|---|
UNAUTHORIZED | 401 | Missing or invalid API key |
SUBSCRIPTION_INACTIVE | 403 | Trial expired or subscription canceled |
RATE_LIMITED | 429 | Too many requests for your plan |
NOT_FOUND | 404 | Resource not found |
INTERNAL_ERROR | 500 | Server error |
Endpoints
Base URL: https://api.hylo.pro/v1
/v1/actionsList and search workflow actions.
Parameters
| Name | Required | Description |
|---|---|---|
category | No | Filter by category name |
q | No | Keyword search across action names and descriptions |
Response (200)
{
"total": 102,
"categories": 19,
"actions": [
{
"name": "Send Email",
"category": "Communication",
"description": "Sends an email to the contact...",
"fields": ["to", "subject", "body", "template_id"]
}
]
}/v1/triggersList and search workflow triggers.
Parameters
| Name | Required | Description |
|---|---|---|
category | No | Filter by category name |
q | No | Keyword search |
Response (200)
{
"total": 70,
"categories": 14,
"triggers": [
{
"name": "Contact Created",
"category": "Contact Events",
"description": "Fires when a new contact is created",
"filters": ["source", "tags", "pipeline"]
}
]
}/v1/schemasList and search GHL API endpoint schemas.
Parameters
| Name | Required | Description |
|---|---|---|
category | No | e.g., "contacts", "workflows", "calendars" |
method | No | GET, POST, PUT, DELETE |
q | No | Keyword search |
Response (200)
{
"total": 423,
"endpoints": [
{
"name": "create-contact",
"category": "contacts",
"method": "POST",
"path": "/contacts/",
"token_type": "Sub-Account",
"summary": "Create a new contact"
}
]
}/v1/schemas/{endpoint_name}Get full schema for a specific API endpoint.
Parameters
| Name | Required | Description |
|---|---|---|
endpoint_name | Yes | Endpoint name (path parameter) |
Response (200)
{
"name": "create-contact",
"category": "contacts",
"method": "POST",
"path": "/contacts/",
"token_type": "Sub-Account",
"scopes": ["contacts.write"],
"request_schema": {
"type": "object",
"required": ["firstName", "email"],
"properties": {
"firstName": { "type": "string" },
"email": { "type": "string", "format": "email" }
}
}
}/v1/navigate/{feature}Get navigation hints for a GHL feature.
Parameters
| Name | Required | Description |
|---|---|---|
feature | Yes | One of: workflows, calendars, contacts, opportunities, payments, settings, ai-agents, marketing, sites, memberships, reputation, reporting |
Response (200)
{
"feature": "workflows",
"url_pattern": "/v2/location/{locationId}/automation/workflows",
"sidebar_path": ["Automation", "Workflows"],
"tabs": ["Workflows", "Global Workflow Settings"],
"tips": [
"Direct URL navigation is more reliable than sidebar",
"Dismiss the 'AI Builder Enabled' popup on first visit"
]
}/v1/protocols/{feature}Get the full UI protocol for a GHL feature — verified selectors, modal patterns, form fields.
Parameters
| Name | Required | Description |
|---|---|---|
feature | Yes | One of: workflows, calendars, custom-values, forms-sites, ai-bot, email-domain, marketing, common |
Response (200)
{
"feature": "workflows",
"version": "2026-02-16",
"navigation": {
"url": "/v2/location/{locationId}/automation/workflows",
"selectors": {
"create_button": "button:has-text('Create Workflow')",
"search_input": "input[placeholder*='Search']"
}
},
"modals": [...],
"forms": {...}
}/v1/templates/workflowGet a workflow template based on a natural language description. Deterministic template matching — not an LLM call.
Request Body
{
"objective": "Send 3 follow-up emails after form submission",
"constraints": {
"max_steps": 10,
"include_delays": true
}
}Response (200)
{
"template": {
"name": "Form Follow-Up Sequence",
"trigger": {
"type": "Contact Form Submitted",
"category": "Contact Events"
},
"steps": [
{ "action": "Send Email", "config": { "delay": null } },
{ "action": "Wait", "config": { "delay": "1 day" } },
{ "action": "Send Email", "config": {} },
{ "action": "Wait", "config": { "delay": "3 days" } },
{ "action": "Send Email", "config": {} }
]
}
}/v1/validateValidate a workflow configuration against known constraints.
Request Body
{
"trigger": "Contact Created",
"actions": ["Send Email", "Wait", "Add Tag"]
}Response (200)
{
"valid": true,
"warnings": [],
"suggestions": [
"Consider adding a Wait step between Send Email actions"
]
}Setup Guides
OpenClaw (ClawHub Skill)
Install the hylo-ghl skill from ClawHub, then add your API key:
// ~/.openclaw/openclaw.json
{
"skills": {
"entries": {
"hylo-ghl": {
"enabled": true,
"apiKey": "hylo_sk_your_key_here"
}
}
}
}MCP Server (Claude Code / Cursor / Windsurf)
Add the hylo-mcp server to your IDE's MCP configuration:
// Claude Code: ~/.claude/claude_desktop_config.json
// Cursor: ~/.cursor/mcp.json
{
"mcpServers": {
"hylo": {
"command": "npx",
"args": ["-y", "hylo-mcp"],
"env": {
"HYLO_API_KEY": "hylo_sk_your_key_here"
}
}
}
}REST API (Direct)
Call the API directly with curl or any HTTP client:
# Search for email-related workflow actions
curl -s \
-H "Authorization: Bearer hylo_sk_your_key_here" \
"https://api.hylo.pro/v1/actions?q=email"
# Get schema for create-contact endpoint
curl -s \
-H "Authorization: Bearer hylo_sk_your_key_here" \
"https://api.hylo.pro/v1/schemas/create-contact"